The Dangerous Assumption
You invoice $5,000 for a system replacement. The customer pays. You think you made $5,000 closer to your profit goal. You probably didn't.
You paid for the equipment. You spent two days of labor. You bought the refrigerant, oil, and supplies. You burned fuel driving back and forth. You paid the technician's hourly wage. If you did that job poorly, you might have actually lost money.
Most small HVAC contractors don't know their job costs. They know their revenue. They know their overhead. They assume the difference is profit. That math is wrong.
Why Job Costing Matters
Without job costing, you can't see which services are actually profitable. You might think replacement jobs are your bread and butter, but maybe service calls are where you actually make money. Or the opposite.
You might have one technician who consistently finishes jobs under budget and another who blows past your estimates on labor. You won't know unless you track job costs.
You might think $5,000 replacements are all the same margin. But a replacement where the customer has good access and the ductwork is already there might net you $1,800. One where you have to retrofit everything might net you $600 on the same invoice price.
Without visibility into job costs, you're flying blind. You make pricing decisions on gut feeling, not data.
The Basics of Job Costing
For each job, track three things: labor cost, materials cost, and job-specific overhead (drive time, permits, travel).
Labor cost is simple. If you pay a technician $20/hour and the job took six hours, labor cost is $120. If you pay hourly plus commission or bonus, account for that.
Materials cost is the equipment and supplies you bought for that specific job. A condensing unit, coil, refrigerant, oil, ductwork tape, fasteners, whatever left your warehouse for that customer.
Job-specific overhead is trickier. It includes travel time to the job, time spent managing that specific job, and any permits or special fees. If a service call requires two hours of drive time but only one hour of hands-on work, that drive time is a job cost. You can either charge separately or fold it into the job cost calculation.
How to Organize It
You don't need fancy accounting software to start. A spreadsheet works. For each job, create a row. Write down the job date, customer name, invoice price, hours of labor, hourly rate, equipment cost, supplies cost, and drive time.
Add a column for total cost (labor hours × rate + materials + drive time cost). Add a column for gross profit (invoice price - total cost). Add a column for margin percent (gross profit / invoice price × 100).
Do this for 20 jobs. You'll see patterns immediately. You'll see which job types print money. You'll see which ones barely break even.
The Hidden Costs That Matter
Warranties are a real cost. If you warranty a compressor for ten years, that's a hidden liability. When it fails year three, you lose the margin on that job retroactively. Factor warranty risk into your job costing.
Callbacks are a cost. If you install a system and the customer calls back three times for small adjustments or fixes, that's labor you eat. Add callback estimates to the job cost.
Bad debt is a cost. If a customer doesn't pay, that job cost you 100%. Track this separately from profitable jobs.
Why Some Jobs Lose Money
You might have taken a job at a price that didn't cover your costs. That happens. The question is whether it happened because you misestimated or because the job was harder than expected.
If you consistently bid replacement jobs at $4,500 but they cost $4,200 to deliver, great. You're making $300 margin on each. That's fine if your volume is there.
If you bid them at $4,500 and they cost $5,100 to deliver, you're losing $600 per job. After ten jobs, you've lost $6,000 in margin. That's a pricing problem, not a performance problem.
Job costing shows you which is which.
Pricing Decisions Come From Data
After you've costed 30-50 jobs, you'll know your true baseline costs by job type. A standard air conditioning service call might cost you $85 to deliver. A replacement job might cost you $3,200.
Now you can price intelligently. You know you need to make margin. You know what a job costs to deliver. You know your overhead. You can set prices that actually work.
Right now, you're guessing. You're asking competitors what they charge. You're trying to sound reasonable to customers. None of that is based on what it actually costs you to do the work.
The Immediate Win
Pick your last five completed jobs. Write down what you charged. Estimate what they cost you in labor, materials, and time. Calculate the margin. You might be shocked.
You might find that your highest-revenue jobs are your lowest-margin jobs. You might find one job type that's a goldmine. Use those insights to adjust your next ten estimates.
Job costing is the single best way to stop leaving money on the table.
Put this into practice with WerkOps
Run accurate load calculations, build estimates, and send invoices - all in one tool.
Start Free Trial
Written by
Dina Good
Founder, WerkOps
Dina grew up in the trades. Her father was a contractor, then a building inspector, and the job site was her classroom long before any formal one was. She went on to own her own contracting company, which is where she first felt the pain of running a skilled trade business on bad software and worse spreadsheets. A love of data pulled her into programming, and the two worlds eventually collided into WerkOps - software built by someone who has actually been on the truck.