Hours Worked Report
This report is filtered based on your division settings:
- Function: Operational
- Work Type: Full Project, Service
Compare hours worked to estimated hours across cost codes, grouped by department. Use this report to check whether labor is tracking to estimate and to see which categories are over or under.
Accessing the Report
Reports > General > Hours Worked
Report Columns
Rows are grouped by department (Production, Design, Non-Billable). Each group lists cost codes with category-level totals and a department total row.
| Column | Description |
|---|---|
| Category | Cost code number and name |
| Est Hours | Total estimated labor hours for the category from sold estimates. Shown only when a production date range or sales stage filter is set. |
| % Est Hours | Category's share of the department's total estimated hours |
| Hours Worked | Actual hours logged to this cost code in the selected worked date range |
| % Hours Worked | Category's share of the department's total hours worked |
| Diff. | Est Hours − Hours Worked (positive = under estimate, negative = over). Shown only when estimates are visible. |
| % Diff. | Hours Worked ÷ Est Hours × 100 — how much of the estimate has been consumed |
| Employee Count | Distinct employees who logged time to the category |
| Project Count | Distinct projects the time was logged against |
Click any category row to open a drill-down dialog showing each matching time entry (employee name, project, date, hours).
:::note Estimate columns Est Hours, % Est Hours, Diff., and % Diff. are only displayed when you set a Substantial Completion Date range or a Sales Stage filter — these scope the report to a meaningful set of projects so estimates can be totaled. :::
Date Range Filters
| Filter | What it filters |
|---|---|
| Worked Date Range | The date on each time entry. Required to run the report. |
| Substantial Completion Date | The project's substantial completion date. Combine with Worked Date Range to limit totals to jobs completing in a specific window. |
Additional Filters
Open the Filters drawer to narrow the report further. The badge next to the Filters button shows how many are active.
| Filter | Description |
|---|---|
| Sales Stage | Include only projects in the selected stage |
| Division | Opportunity type (operational / full-project divisions only) |
| User | Employee who logged the time entry |
| Department Type | Show only Production, Design, or Non-Billable rows |
| Project Manager | Projects assigned to the selected PM |
| Lead Carpenter | Projects assigned to the selected lead carpenter |
| Project ID From / To | Numeric project ID range |
| Cost Code | A single cost code, when you only want to see that line |
Use Clear All Filters at the bottom of the drawer to reset every filter except the two date ranges.
Project-level Filters and Change Order Rollup
When you filter by a project-level value — Substantial Completion Date, Sales Stage, Division, Project Manager, Lead Carpenter, or Project ID range — the report evaluates the filter against the parent project. If the parent matches, totals include the parent and all of its change orders and add-ons / allowances, even when a change order or add-on has a different value for the filtered column.
This matches the way hours roll up on the project's Production Stage tab, so estimated and actual totals stay consistent between the two views.
Warranty jobs stand alone. A warranty is filtered by its own column values rather than its original project's. This prevents warranty time from being pulled in (or excluded) based on the original project's completion date or stage.
Worked Date Range is not rolled up. It always filters on individual time-entry dates, so you can scope actuals to any window independently of the project's lifecycle.
Export
Click Export CSV to download the report exactly as displayed, including department headers and totals. The export respects the current sort order and every active filter.
Reading the Report
- Diff. is positive — the category is under its estimate so far. Confirm the work isn't simply incomplete.
- Diff. is negative — hours have exceeded the estimate. Investigate scope changes, rework, or estimating gaps.
- % Diff. > 100% — actuals have fully consumed the estimate. Useful as an early warning on active jobs.
- High Employee Count, low Hours Worked — many people touched the category briefly. Can indicate handoffs or rework.
- Low Project Count, high Hours Worked — hours are concentrated on a small number of jobs. Click through to confirm they are the expected ones.
Tips
- Set a Substantial Completion Date range to unlock the estimate columns and compare actuals to plan.
- Use the row drill-down to chase down unexpected entries before assuming the estimate is wrong.
- Combine Department Type with Lead Carpenter to review a single crew's performance.
- Export and pivot in a spreadsheet when you need cross-category comparisons the on-screen view doesn't provide.
Related Reports
- Estimate Hours Used — per-project accuracy roll-up
- Labor by Type — employee-level labor detail
- Cost Controls — dollars-based budget comparison