Why the same engineer can be 26% or 86% utilised
Ask the service manager, the finance director and the MD for last month's engineer utilisation and you will often get three answers. Nobody is lying. Each of them has divided a different set of hours by a different denominator, usually inside their own spreadsheet, and none of the three formulas is written down anywhere.
The arithmetic is never the hard part of an engineer utilisation calculation. The hard part is deciding, once and in writing, what goes on the top of the fraction and what goes on the bottom. This page sets out the choices, the timesheet and job fields that feed each one, and a calculator so you can see how far apart the definitions sit for the same person.
The two questions behind every utilisation figure
Every version of the formula answers two questions:
- Which hours count as capacity? This is the denominator: contracted hours, or contracted hours less the time the engineer was never going to be in the field.
- Which hours count as use? This is the numerator: everything booked to a job, only the time a customer pays for, or only the time that reaches an invoice as labour.
Change either answer and the percentage moves, sometimes by tens of points. Most arguments about whether utilisation is "good" are really an unspoken disagreement about one of these two questions.
Definitions worth agreeing
Available hours (the denominator)
Start from contracted hours for the period, taken from the HR record and shift pattern rather than assumed to be 40 a week. Then decide each adjustment explicitly:
| Item | Usual treatment | Why |
|---|---|---|
| Annual leave and bank holidays | Subtract | The engineer was never available to schedule. |
| Sickness | Subtract | Same reason. Report it separately so it stays visible. |
| Training | Your choice; we suggest subtract | Planned time out of the field. Counting it as available punishes the teams you are upskilling. |
| Overtime and attended call-outs | Add | If those hours appear in the numerator, they must appear in the denominator too. |
| Standby (on call, not attending) | Leave out entirely | Being reachable is not working. Only attended call-out time counts, and it goes through overtime. |
| Part-time contracts | Use their own contracted hours | A 24-hour-a-week engineer has 24 hours of capacity, not 40. |
The overtime row causes the most quiet inflation. If a team works a busy weekend and the extra hours land in the numerator but not the denominator, utilisation rises even though nothing became more efficient.
Billable, chargeable and productive (the numerator)
These three words get used interchangeably. They shouldn't be:
| Term | Includes | Excludes |
|---|---|---|
| Productive hours | All on-site job time, including call-backs and rework, plus travel between jobs | Admin, stores, meetings, unrecorded time |
| Billable hours | On-site time a customer pays for, whether charged by the hour or covered by a contract or PPM fee | Rework, call-backs, travel (unless you charge for it) |
| Chargeable hours | Only labour that appears as a line on an invoice | Contract and PPM visits paid through a fixed fee |
Productive utilisation tells you whether engineers are kept busy. Billable utilisation tells you whether that busyness is paid for. Chargeable utilisation tells finance how much labour revenue is directly tied to hours. A contract-heavy maintenance business will always look poor on chargeable utilisation, and that is fine as long as nobody reads it as a productivity measure.
Where the awkward hours go
- Travel. Productive, because the job can't happen without it. Not billable unless your price list charges it, in which case it moves into billable and, if invoiced as labour, chargeable.
- Call-backs and rework. Productive but not billable. Track them as their own line: rising rework hours inside a flat productive figure is a quality problem hiding in a utilisation report.
- Admin, van stock and meetings. Neither productive nor billable. Worth reporting, because a high number usually points at process rather than people.
- Unrecorded time. Hours worked minus hours booked. It isn't a category anyone chooses; it is the gap the timesheet doesn't explain, and it should be shown rather than quietly absorbed.
Try the definitions on one engineer
The calculator below starts with a fictional engineer's four weeks. Change any number, or switch the two definition choices, and watch each formula recalculate. Under each input is the system and field that would normally supply it.
Utilisation calculator
One engineer, four definitions
Pick a fictional engineer or type your own hours for a period. Each result shows its formula with your numbers in it.
- Available
- 148 h
- Worked
- 148 h
- Unrecorded
- 8 h
Available = 160 − 16 leave − 0 sick − 8 training + 12 overtime = 148 h
Productive utilisation
85.8%
(38 + 46 + 9 + 34) ÷ 148 = 85.8%
All on-site time plus travel, over available hours. Leaves out admin and unrecorded time.
Billable utilisation
56.8%
(38 + 46) ÷ 148 = 56.8%
On-site time a customer pays for, by the hour or through a contract. Rework and travel excluded.
Chargeable utilisation
25.7%
38 ÷ 148 = 25.7%
Only hours that appear as labour lines on an invoice.
Job hours ÷ contracted (the common shortcut)
58.1%
(38 + 46 + 9) ÷ 160 = 58.1%
Ignores leave, sickness and overtime, so it moves with the holiday calendar.
Standby hours (56) are kept out of every definition. Call-outs actually attended belong in overtime and the job lines.
Worked example (illustrative, fictional)
Ruth is a fictional full-time fire and security engineer on a 40-hour week. Over a four-week period her records show:
| Source | Item | Hours |
|---|---|---|
| HR | Contracted (40 × 4) | 160 |
| Leave system | Annual leave | 16 |
| Leave system | Sickness | 0 |
| HR | Training course | 8 |
| Timesheet | Overtime and attended call-outs | 12 |
| Job system | On site, charged by the hour | 38 |
| Job system | On site, covered by contract | 46 |
| Job system | Call-backs and rework | 9 |
| Timesheet | Travel between jobs | 34 |
| Timesheet | Admin, stores and meetings | 13 |
| Rota | Standby, not attending | 56 |
Available hours = 160 − 16 − 0 − 8 + 12 = 148.
Hours booked = 38 + 46 + 9 + 34 + 13 = 140, so 148 − 140 = 8 hours are unrecorded.
| Definition | Calculation | Result |
|---|---|---|
| Productive | (38 + 46 + 9 + 34) ÷ 148 = 127 ÷ 148 | 85.8% |
| Billable | (38 + 46) ÷ 148 = 84 ÷ 148 | 56.8% |
| Chargeable | 38 ÷ 148 | 25.7% |
| Job hours ÷ contracted | (38 + 46 + 9) ÷ 160 = 93 ÷ 160 | 58.1% |
Same engineer, same month, results from 25.7% to 85.8%. Now change only the denominator choices for billable utilisation. Count training as available and it becomes 84 ÷ 156 = 53.8%. Leave overtime out of available hours while keeping the overtime work in the numerator and it becomes 84 ÷ 136 = 61.8%. That is an eight-point swing from two policy decisions, with no change in what Ruth actually did. Her 56 standby hours appear nowhere, which is correct.
Why industry benchmarks mislead
You will find utilisation "targets" quoted online with no definition attached. Without knowing whether the figure is productive or chargeable, whether travel is in it, and whether overtime is in the denominator, a benchmark can't be compared with anything. Ruth's month alone covers a 60-point range. Compare your business with itself over time, on one written definition, before comparing it with anyone else.
The data model behind the calculation
A reliable figure needs four or five systems joined, not one export:
| Table | Key fields | Joins to |
|---|---|---|
| Employee (HR) | employee_id, contracted_hours_per_week, shift_pattern_id, start/leave dates | Everything, on employee_id |
| Absence | employee_id, date, absence_type, hours | Employee; overlaps checked against timesheet dates |
| Rota / on call | employee_id, date, shift_type | Employee; attended call-outs matched to timesheet overtime |
| Timesheet | employee_id, date, activity_code, pay_code, job_id, hours | Employee; job on job_id |
| Job and job labour | job_id, job_type, billing_type, parent_job_id, contract_id, labour hours | Timesheet; invoice lines |
| Invoice lines | invoice_id, job_id, line_type, quantity | Job, to separate chargeable from contract labour |
The join that most often breaks is timesheet to job. Engineers book time against a job reference that has since been merged, cancelled or re-raised as a recall, and the hours drop out of the job-based numerator. The second is part-time and rota patterns kept in a spreadsheet the job system never sees, which makes every part-timer look under-used. The same timesheet-to-invoice join is what an unbilled jobs report relies on, so fixing it once pays twice.
How to agree one definition
- Pick one headline measure for the board, usually billable utilisation, and keep productive and chargeable as supporting lines.
- Write the denominator rules from the table above into a one-page definition, including training, overtime and standby.
- Fix the activity codes engineers use for travel, admin and rework so the categories can be separated without guesswork.
- Calculate team figures by summing hours and then dividing. Averaging individual percentages gives a part-timer the same weight as a full-timer.
- Show unrecorded hours next to the figure every time, so a low percentage caused by missing timesheets can be told apart from a low percentage caused by idle time.
Utilisation then sits alongside the other measures in a field service KPI set without contradicting them.
Automating it with IVP.ai
The IVP.ai Data Layer connects your job system (for example Uptick), HR and leave records, rota spreadsheets and accounts into one governed warehouse, joins them on engineer and job, and applies your written definition the same way every time. A report or agent built on it, such as one from Deskless by IVP.ai, can then publish the weekly figure with the unrecorded hours and rework alongside it. A national fire safety and security company used this approach to bring HubSpot, Uptick and finance spreadsheets into one view and saved 10+ hours a week on reporting (case study). More on the approach is on the platform page and the field service reporting hub.
If you want to see your own utilisation on an agreed definition, the free 48-hour build connects up to three of your sources, cleans the data and sets one report or agent running on real data within 48 hours of read-only access.