Time worked#
For: Manager | Admin You’ll need: Permission to view reports (your manager will know).
The Time worked report answers “how much was worked?” at two levels of grain, over the same rows and the same filters:
‘Per shift’ — one row per shift: what was scheduled, what actually happened, which premiums kicked in, and whether the shift was approved.
‘By person’ — one row per person and location, with scheduled and worked hours rolled up. (This was the standalone ‘Hours summary’ report before it was folded in here.)
Both views count the same shifts as the timesheet: published shifts, plus a shift with recorded hours even after it’s cancelled or declined. Drafts, and cancelled or declined shifts nobody worked, aren’t counted.
Open the report#
In the sidebar, open Reports → Time worked.
Switch grain with the ‘Per shift’ / ‘By person’ buttons above the table. Your filters carry over; the sort doesn’t, because the two views sort on different columns.
Filter the data#
Click the filter icon above the table to open the ‘Create filter’ menu.
Pick a filter — period, location, person, or workflow status (‘Scheduled’, ‘Confirmed’, ‘Approved’) — and set its value.
Active filters appear as chips under the toolbar: click a chip to edit it, its × to drop it, or ‘Clear’ to drop them all. Your filter set is remembered the next time you open the report, and can be saved as a view.
Review break issues#
Use ‘Break issues’ to filter for missing, short, early or late breaks, or ‘Needs review’ for incomplete daily checks. The per-shift report includes issue messages and a count of rows with issues; CSV and XLSX exports include those messages too. Daily checks include the complete workday behind location, date and page filters. The count remains a row count, so one daily issue can appear on several rows.
Where a break policy asks the break questions, a ‘Break answers’ badge marks a row whose person answered them or whose manager gave a reason; hover over it to read them. The CSV and XLSX exports carry them in a Break answers column. See How to review break answers.
Export#
See Export a report (CSV, XLSX, PDF) for CSV, XLSX, and PDF details. Each view exports its own shape — per-shift rows, or the person × location rollup.
Per shift#
Columns on screen (the last three are off by default; add them with ‘Manage columns’):
Start date
Person
Location
Position
Scheduled (h)
Worked (h)
Break (h)
Premiums (one combined column)
Variance (h)
Status
Actual start
Actual end
Approved
The export names the person column Employee and splits the premiums into separate Overtime, Sunday, Night, and Holiday columns.
A KPI strip above the table totals shifts, scheduled, worked, break, variance, and the approved count and share, with the premium counts underneath.
By person#
Columns are fixed here — ‘Manage columns’ doesn’t apply:
Person / Location (the person is a header row; each location is a row beneath it)
Scheduled (h)
Worked (h)
Total shifts
The export splits the first column into separate Employee and Location fields.
Above the table, a ‘Scheduled vs. Worked hours’ bar chart shows both figures per person, closed by a bold ‘Total’ row that sums across everyone currently on the list. It follows your filters — filter to one location and the total is that location’s.
Verify it worked#
In ‘Per shift’, each row is one shift. ‘Variance (h)’ is worked hours minus scheduled hours net of unpaid breaks — so an unpaid break doesn’t read as negative variance. The premiums show how much of the shift fell into each premium window.
In ‘By person’, each row is one person at one location. ‘Scheduled (h)’ is the planned hours, ‘Worked (h)’ is what actually happened, and ‘Total shifts’ is the count of shifts that contributed.