How to Track Labor Costs by Job
Quick Answer
To track labor costs by job, have employees record their time against a specific job or project, multiply those hours by a fully loaded labor rate that includes wages, overtime, employer taxes and benefits, and compare the result to the job estimate. Review estimate vs. actual after every job, look for patterns in jobs that run over and use what you learn to price and schedule future work.
Most service businesses know whether last month was profitable. Far fewer know which jobs made money and which ones quietly lost it. A job that looked great on the quote can turn into a loss after two extra days of labor, a callback and a crew that drove across town three times.
Tracking labor costs by job, often called job costing, shows you exactly where the money goes. This guide covers how to record time by job, how to calculate a fully loaded labor rate, how to compare estimates to actuals and how to use the results to price better and schedule smarter.
Note: This is general information, not accounting or tax advice. Confirm tax and benefit costs with your accountant or payroll provider.
What Is Job Costing for Labor?
Job costing is tracking the costs of each individual job, project or customer. Labor is usually the biggest and most variable piece, so labor job costing focuses on how many hours each job took and what those hours cost.
| Overall labor cost | Labor cost by job | |
|---|---|---|
| Shows | Total labor for the business | Labor for each specific job |
| Answers | Are labor costs too high overall? | Which jobs make or lose money? |
| Helps with | Budgets and labor percentage | Pricing, estimating and scheduling |
Both matter. See labor cost percentage for the big-picture view.
Why Track Labor by Job?
- Find money-losing jobs before you do more of them.
- Price accurately. Quotes based on real hours beat guesses.
- Improve estimates for future jobs.
- Spot problems like rework, travel time or slow crews.
- Bill accurately for time-and-materials work.
- Compare job types to see which work is most profitable.
Step 1: Record Time by Job
Everything depends on accurate hours for each job. Employees need an easy way to record which job they're working on:
- Job codes at clock-in, where employees choose the job when they punch in.
- Switching jobs during the day, by clocking out of one job and into the next.
- Job notes on timesheets for paper or spreadsheet systems.
- Work orders with start and end times.
Make it as simple as possible. If recording the job takes more than a few seconds, people will skip it or guess. Also decide how to handle time that isn't tied to a specific job, such as travel between jobs, shop time, meetings and training.
Remember that all hours actually worked must be recorded and paid for non-exempt employees, whether or not they're assigned to a job. Job coding is for your cost tracking; it should never change what employees are paid for. See how to track employee hours.
Step 2: Calculate a Fully Loaded Labor Rate
Hourly wages alone understate what labor really costs. A fully loaded labor rate adds employer costs on top of pay:
Fully loaded hourly rate = (Wages + employer payroll taxes + benefits + workers' comp + other employer costs) ÷ Hours worked
Example
| Item | Annual amount |
|---|---|
| Wages ($22/hour × 2,000 hours) | $44,000 |
| Employer Social Security and Medicare (7.65%) | $3,366 |
| Unemployment taxes (estimate) | $450 |
| Workers' comp (estimate) | $2,200 |
| Health and other benefits (estimate) | $5,000 |
| Total cost | $55,016 |
| Fully loaded hourly rate ($55,016 ÷ 2,000) | about $27.51 |
That's about 25% higher than the $22 wage. Using $22 in job costing would make every job look more profitable than it really is. According to the IRS, the employer share of Social Security is 6.2% on wages up to the annual wage base and Medicare is 1.45% with no cap. Your other costs will depend on your state, industry and benefits.
Some businesses also add a share of non-billable time, such as travel and shop time, into the job rate. Others track it separately. Pick one approach and use it consistently.
Step 3: Calculate Labor Cost for Each Job
Job labor cost = Hours on the job × Fully loaded rate (plus overtime premiums where they apply)
| Employee | Hours on job | Loaded rate | Labor cost |
|---|---|---|---|
| Lead tech | 14 | $31.00 | $434.00 |
| Tech | 14 | $27.50 | $385.00 |
| Helper | 10 | $21.00 | $210.00 |
| Total | 38 | $1,029.00 |
If some of those hours were overtime, add the overtime premium. Overtime is calculated on all hours worked in the workweek, not per job, so the premium is often shared across the jobs worked that week or assigned to the jobs that caused the extra hours. Choose a method and apply it the same way each time.
Step 4: Compare Estimate vs. Actual
| Job | Estimated hours | Actual hours | Variance | Estimated labor | Actual labor |
|---|---|---|---|---|---|
| Johnson install | 32 | 38 | +6 (19%) | $880 | $1,029 |
| Lee repair | 4 | 3.5 | −0.5 | $110 | $96 |
| Garcia replacement | 20 | 27 | +7 (35%) | $550 | $743 |
The Garcia job ran 35% over. Before quoting the next replacement job, find out why: was it a part delay, an unexpected problem, travel or an estimate that was too low to begin with?
Step 5: Find the Patterns
One job running over is a story. Several jobs running over is a pattern. Review job costing monthly and look for:
- Job types that always run over, which may need higher prices or better estimates.
- Crews or employees who need training or better tools.
- Rework and callbacks, which add labor without adding revenue.
- Travel time between jobs that could be reduced with better routing.
- Waiting time for parts, approvals or other trades.
For a structured way to review what happened, see the project retrospective template.
Step 6: Use It to Price and Schedule
- Update your estimating guide with average actual hours by job type.
- Raise prices on work that consistently costs more than you charge.
- Schedule realistically based on actual hours, not hopeful ones.
- Group jobs by area to cut travel time.
- Share results with crews so they understand what affects profit. See open-book management.
Job Costing Template
| Job | Customer | Price | Est. hours | Actual hours | Loaded rate | Labor cost | Materials | Gross profit | Margin |
|---|---|---|---|---|---|---|---|---|---|
| [job #] | [name] | $ | $ | $ | $ | $ | % | ||
| [job #] | [name] | $ | $ | $ | $ | $ | % |
A spreadsheet works well for this. Add a notes column for why a job ran over, and review it monthly.
Common Job Costing Mistakes
- Using base wages instead of a fully loaded rate.
- Ignoring non-job time, such as travel and shop time, which still has to be paid for somewhere.
- Guessing hours at the end of the day instead of recording them as work happens.
- Only checking big jobs. Small jobs that run over add up.
- Never updating estimates with what you learn.
- Letting job coding affect pay. All hours worked must be paid, regardless of which job they're assigned to.
Worked Example: One Job, Start to Finish
An HVAC company quotes a furnace replacement at $6,500. The estimate assumes 16 crew hours, $3,200 in equipment and materials and a loaded labor rate of $28 an hour.
| Item | Estimate | Actual |
|---|---|---|
| Crew hours | 16 | 22 |
| Labor cost ($28/hour) | $448 | $616 |
| Equipment and materials | $3,200 | $3,350 |
| Return trip for missing part | $0 | 2 hours, included above |
| Gross profit | $2,852 | $2,534 |
| Gross margin | 43.9% | 39.0% |
The job still made money, but almost five points less than planned. The review shows two causes: a missing part that needed a return trip, and older ductwork that took longer to connect. The fixes are simple: confirm all parts before the job date, and add a site visit before quoting older homes. The next similar job is quoted with a ductwork allowance and comes in on estimate.
Handling Non-Job Time
Not every paid hour belongs to a specific job. Common non-job time includes:
| Type | Examples | How to handle it |
|---|---|---|
| Travel | Driving between jobs, supply runs | Assign to jobs, or track as overhead |
| Shop and prep | Loading trucks, cleaning tools | Usually overhead |
| Meetings and training | Huddles, safety training | Overhead |
| Callbacks | Returning to fix a problem | Charge back to the original job |
| Admin | Paperwork, ordering | Overhead |
Track non-job time as its own category rather than letting it disappear. If non-job time is 20% of all hours, that's a real cost your prices need to cover. Charging callbacks back to the original job is especially useful, because it shows the true cost of rework. All of this time is paid work time for non-exempt employees, regardless of how you categorize it for costing.
Job Costing by Business Type
| Business | How time is usually tracked | What to watch |
|---|---|---|
| HVAC, plumbing, electrical | Job code at clock-in or by work order | Callbacks, return trips, travel |
| Construction and remodeling | By project and phase | Change orders, waiting on other trades |
| Landscaping and lawn care | By route or property | Drive time, weather delays |
| Cleaning | By site or home | Time per site vs. estimate |
| Professional services | By client or project | Non-billable time, scope creep |
Getting Crews to Track Time by Job
Job costing only works if crews record time accurately. A few things help:
- Explain why. "We want to price jobs so we don't lose money, and so nobody is rushed on jobs we underquoted."
- Make it fast. Selecting a job should take seconds, ideally from a phone.
- Don't use it to punish. If job hours are used only to criticize crews, they'll stop recording honestly.
- Share results. Show crews how accurate tracking led to better quotes and fewer rushed jobs.
- Review missed or wrong job codes each week and fix them before payroll and reporting.
Estimate Accuracy Over Time
Track estimate accuracy by job type each month: the percentage of jobs that finish within 10% of estimated hours. If accuracy improves, your quotes are getting better. If it doesn't, look at whether estimates are based on real data from past jobs or on hopeful guesses. Over a year, even small improvements in estimate accuracy can make a big difference in profit.
Job Costing Checklist
| Check | Done? |
|---|---|
| Every employee records time by job | |
| Fully loaded labor rate calculated and updated yearly | |
| Non-job time tracked as its own category | |
| Callbacks charged back to the original job | |
| Overtime premium handled the same way every time | |
| Estimate vs. actual reviewed after each larger job | |
| Patterns reviewed monthly | |
| Estimating guide updated with real averages |
Start with the first three. Once crews are recording time by job and you have a realistic loaded rate, the rest gets much easier, and you'll quickly see which jobs are really paying the bills.
Using Job Costs to Have Better Pricing Conversations
Job costing data makes pricing conversations with customers easier. Instead of guessing, you can explain that similar jobs take a certain number of hours on average, and that older homes or hard-to-reach equipment usually add time. When you need to raise prices, real numbers from your own jobs make the case clearly, both to customers and to your team. Many owners find that once they see true labor costs by job type, a few services they thought were profitable were actually breaking even, and a small price change on those services makes a big difference to the bottom line.
Track Time by Job With Updoot
Updoot's employee time clock records every punch to the minute, with GPS punch locations so you can see where crews clocked in. The payroll report shows regular hours, overtime and PTO for every employee each pay period, and project management keeps each job's tasks, owners and due dates in one place. The KPI dashboard shows hours worked and budget vs. actual, so you can spot jobs and weeks that run over.
Sources
- IRS: Topic 751, Social Security and Medicare Withholding Rates
- U.S. DOL: Fact Sheet #22, Hours Worked Under the FLSA
- U.S. DOL: Fact Sheet #23, Overtime Pay Requirements of the FLSA
