Labor_time_entries gained clocked_in_at and clocked_out_at; hours is computed on clock-out. The project comes from the crew's accepted assignments (one project needs no question, several show cards), and the stage the project is on is frozen onto the entry at clock-in so hours stay attributed to the work actually being done.
Also called: clock in clock out · crew timesheet · time tracking for crews · hours from the field
Hours become two timestamps instead of a Friday guess
One tap in, one tap out, and the hours are computed from the two instants when the shift closes. The chip above the button reads “On the clock · 3h 12m” off the server's own timestamp, so a dead battery or a swapped phone does not lose the day. What a man writes down on Friday about last Tuesday is a recollection, and you are paying it.
Every hour lands on a job and on a stage
The project comes from the crew's accepted assignments — one live job needs no question, several show as cards — and the stage the job is on is frozen onto the entry at clock-in. The result is not “40 hours this week” but eight hours on Framing at the Wenger shop. That difference is what separates a payroll number from a job-cost number.
Location is stamped, and never enforced
Clock-in and clock-out coordinates are captured best-effort with a four-second timeout. No permission, a slow fix, or a steel building that swallows GPS simply means no pin — it never refuses a clock-in and nobody loses a day's pay to it. A hard geofence blocks the man when the technology fails; this records the evidence and leaves the judgement with you.
A leader can clock his own crew in, and the record says he did
From Today's Crew the leader taps Clock in beside a name. The worker is recorded as the worker, but the leader is stamped as the person who entered it. He can only ever reach members of his own crew. The man who left his phone in the truck still gets his day, and if anyone argues about that entry later it is attributable to a name.
The leader can see who is actually on the clock this morning
His own crew as a list of names with two facts each: on the clock since when, or hours already closed out today. Missing time gets fixed the same morning on site instead of turning up as a hole on payday. He sees nothing outside his own crew — that phone lives in a pocket on a jobsite.
The shift nobody closed raises an alarm rather than a guess
An hourly sweep finds anyone on the clock for twelve hours and notifies the crew leader and the owners through your own notification routing, once per shift so it stays worth reading. It deliberately does not close the shift: writing in a knock-off time nobody chose would put an invented number onto someone's pay. A human sets the real time, and that correction carries their name.
The worker can check his own week, split into approved and waiting
The bottom of his screen is one large number for the week from Monday, then “24h approved · 8h waiting” and a day-by-day list showing the job and the state of each entry. He can spot his own missing day. Approved and pending are never blended into one figure that implies you have agreed to something you have not.
A double tap cannot become a double shift
Clocking in while already on the clock returns the shift that exists rather than opening a second one, and clocking out with none open comes back as already done instead of an error. On a bad connection people tap twice. Two overlapping shifts quietly inflating a payroll total is exactly the failure worth designing out.
- 1Clock In posts to /api/crew-portal/clock with the token and, if the crew has more than one live job, which job.
- 2The row is written with org, crew, member, submitted_by, stage_name and clock_source='self' all derived server-side.
- 3Clock Out stamps clocked_out_at and writes hours = elapsed, rounded to 2dp, floored at zero.
- 4The screen shows 'On the clock · 3h 12m' from the server's timestamp, so the answer survives a dead battery or a swapped phone.
- 5Entries land as status='submitted' and flow into the same approvals queue and P&L as every other labour row.
Labour hours were a number somebody typed at the end of a day, or worse the end of a week — and a man on a roof does not stop to do that, so the number he eventually enters is a guess. Clocking in and out records two actual instants and derives the hours from them. Everything downstream reads the same hours figure it always did, so approvals, payroll and the job P&L keep working exactly as before.
- Hours reconstructed from memory days later are guesses.
- Nobody could tell which stage a day's hours belonged to.
- Payroll arguments with no record to settle them.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →