Time Entries
Open Time Entries in Thermal →
What it's for
Time Entries is the timesheet. Every hour a technician clocks lands here, and this is where the office checks it, fixes it, and approves it before it feeds payroll and job costing.
Reach it from People → Time entries in the sidebar, at /time-entries.
Tabs
Two views of the same data:
- List — one row per entry, best for reviewing and approving.
- Week grid — a technician-by-day grid, best for entering a whole week at once.
Panels and controls
List
- From and To set the date range.
- Columns: Tech, Date, Clock out, Duration, Type, Status, Flags, Notes, and Actions. Flags is where an entry that looks wrong announces itself before it reaches payroll.
- Bulk actions: Approve and Reject the ticked entries. There is a cap on how many can be handled at once, and exceeding it is refused rather than silently truncated.
Splitting an entry
An entry can be split in two at a chosen time — useful when one clocked block covered two jobs or two work locations. Split at takes the time, Segment 1 location and Segment 2 location take where each half was worked. An entry that is still clocked in cannot be split.
Week grid
Add row adds a technician's line; each cell takes hours against a day. The grid posts the whole week at once, and validates every cell before it accepts any of them, so a bad cell does not leave half a week posted.
No time entries yet is the empty state.
What it accepts
| Field | Format | Required | Rule |
|---|---|---|---|
| Technician | Pick a technician | Yes | "Select a technician."; "Technician not found." |
| Date | A date | Yes | "Enter a valid date and clock-in time." |
| Clock in | A time | Yes | Same message |
| Clock out | A time | Yes, to close an entry | "Enter a valid clock-out time."; "Clock out must be after clock in." |
| Time type | Pick a type | Yes | "Invalid time type." |
| Work location | Free text — e.g. NY, NJ | No | Used where labor is taxed or reported by location |
| Work order | Pick a job | No | What puts the hours into that job's cost |
| Notes | Free text | No | |
| Split time | A time | Yes, to split | "Invalid split time."; "Split time must be between clock in and clock out."; an entry still clocked in cannot be split |
| Grid hours | 0 to 24 per cell | Yes, per filled cell | "Hours must be between 0 and 24 per cell."; "Every cell needs a technician." |
Overlapping time is refused: "This overlaps an existing time entry for that technician." Two entries cannot claim the same hour, which is what keeps payroll and job cost from double-counting.
How to configure it
- Time validation settings decide which entries get flagged and how strictly.
- Overtime settings decide when hours tip into overtime and at what multiplier.
- Payroll settings decide what the export contains and how it is grouped.
- Labor rates decide what an approved hour costs — see Labor rate scales.
- Billable time settings decide which time types bill the customer.
Who can see it
This screen sits behind the Staff area.
Owners and office managers can open it. Dispatchers and technicians cannot — a technician sees their own clock in the field app, not the whole shop's timesheet. The gate is checked on the server, not just hidden in the sidebar, so a direct link does not get around it.
The full role matrix is on Roles & permissions.