Time Clock & GPS Tracking

Time Clock & GPS Tracking

The Time Clock allows you to record hours worked with GPS verification, optional photo capture, and automatic pay calculations. It is available on LITE and PRO tiers only. Access it at /fl/{nodeId}/timeclock from the sidebar navigation.

Overview

Time entries created through the Time Clock are stored in the freelancer_time_entries table within your Node database. These are self-initiated entries — separate from entries synced from company systems (which appear in node_time_entries). You can log time against a connected company, a personal client, or independently for training, travel, and prep work.

Clock-in flow

Clocking in follows a multi-step process:

  1. Select a project (optional) — Choose a connected company from the dropdown, then optionally enter a project name in the project_name field. You can also select a personal client via node_client_id.
  2. Entry type — Select the type of work: work, travel, prep, training, meeting, or other. Stored in the entry_type field.
  3. GPS capture — Your browser requests location permission. Latitude and longitude are captured and stored in the clock_in_location array (containing lat and lon values).
  4. Geofence validation — If the booking has a project location (latitude, longitude on the FreelancerBooking), the system validates you are within the configured radius using the Haversine formula. If you are outside the geofence, the clock-in is flagged for review but still proceeds.
  5. Photo capture (optional) — A photo can be taken using your device camera. The image is uploaded to S3 and the URL is stored in clock_in_photo_url.
  6. Clock in — The clock_in timestamp is recorded and the status is set to clocked_in.

GPS verification

GPS coordinates are captured at two critical moments:

  • Clock-in — Stored in the clock_in_location array as {lat, lon}.
  • Clock-out — Stored in the clock_out_location array as {lat, lon}.

Both locations are visible to the company you are working for, providing verifiable evidence that you were on site. Ensure your browser’s location permissions are enabled before attempting to clock in.

Geofencing

Companies can configure a geofence radius around their project locations. When you clock in, the system calculates the distance between your GPS coordinates and the project’s stored coordinates using the Haversine formula. If you are outside the permitted radius, the entry is still created but flagged for the company to review. This does not prevent you from working — it simply notifies the company.

Photo capture

At both clock-in and clock-out, you have the option to take a photo using your device camera. Photos serve as additional verification and are stored in S3:

  • clock_in_photo_url — Photo taken at the start of the shift.
  • clock_out_photo_url — Photo taken at the end of the shift.

Photo capture is always optional. Companies cannot require it, but providing photos can help avoid disputes about attendance.

Break tracking

During an active shift, you can pause and resume your timer:

  • Tap Start Break — The status changes to on_break and the break_started_at timestamp is recorded.
  • Tap End Break — The break duration is added to break_duration_minutes and the status returns to clocked_in.
  • Individual break periods are stored in the breaks array, allowing you to review exactly when and how long each break was.

Clock-out

When you finish your shift:

  1. GPS location is captured and stored in clock_out_location.
  2. An optional photo can be taken (stored in clock_out_photo_url).
  3. The clock_out timestamp is recorded.
  4. Total hours are automatically calculated.
  5. The status is set to clocked_out.

Hours calculation

Total hours are computed by the calculateTotalHours() method:

total_hours = (clock_out − clock_in − break_duration_minutes) / 60

The result is rounded to two decimal places and stored in the total_hours field.

Pay calculation

Pay is calculated by the calculateTotalPay() method based on your configured rate_type:

  • Hourly ratehourly_rate × total_hours. Straightforward multiplication.
  • Day rate (up to threshold) — The day_rate covers up to hours_threshold hours (default 12). Hours are rounded to half-day increments: less than 50% of the threshold equals 0.5 days; 50% or more equals 1.0 day.
  • Day rate plus hourly overtime — The day_rate covers the first hours_threshold hours. Hours beyond the threshold are paid at the hourly_rate. The base_pay and extra_pay fields track each component separately.
  • Custom rate — Negotiated per project, uses hourly calculation.

Time clock statuses

Each time entry has one of three statuses:

  1. clocked_in — Shift is active. Timer is running.
  2. on_break — Shift is active but paused for a break.
  3. clocked_out — Shift has ended. Hours and pay are finalised.

Entry types

Each time entry is categorised by the entry_type field:

  • work — Standard on-site or project work.
  • travel — Travel time to or from a job site.
  • prep — Preparation and setup time.
  • training — Training sessions or certifications.
  • meeting — Meetings with companies or clients.
  • other — Any work that does not fit the above categories.

Dual-database storage

When you clock time against a connected company, the entry is stored in both your Freelancer Node database and the company’s Core Tenant database simultaneously. This ensures both you and the company hold independent records of the same shift, protecting both parties in case of disputes.

Billable vs non-billable

Each time entry has an is_billable toggle. Billable entries appear on invoices and earnings reports. Non-billable entries (training, personal prep) are tracked for your records but excluded from financial summaries.

Tips

  • Ensure GPS permissions are enabled in your browser or device settings before clocking in.
  • Clock in when you arrive at the job site, not before you leave home.
  • Always clock out at the end of your shift — forgotten clock-outs require manual correction and may be flagged.
  • Use the break feature during lunch or rest periods so your hours are accurate.
  • Take clock-in photos when working at new locations to establish a clear attendance record.

Was this article helpful?