"> HVAC Job Costing: Track Profitability by Job (2026 Guide)

HVAC Job Costing: How to Track Profitability by Job

Why Job Costing Matters for HVAC Companies

Most HVAC company owners can tell you their total revenue and maybe their rough HVAC profit margins. Far fewer can tell you which types of jobs are making them money and which are quietly draining it.

That’s what job costing solves. Instead of looking at your financials in aggregate, job costing tracks revenue, labor, and materials for each individual job — giving you a clear picture of profitability at the job level. And the insights are often surprising: the $15,000 install that felt like a big win might have a thinner margin than the $300 diagnostic call you almost didn’t dispatch.

After working with HVAC companies on their financials for years, I can say this with confidence: job costing is the single most actionable financial practice an HVAC company can implement. It transforms pricing decisions, hiring decisions, and dispatching decisions from gut feeling to data-driven.

See exactly where your margins are leaking

We pull your numbers apart and hand you the 3–5 highest-impact fixes, ranked by dollar impact.

See how we fix margins →

What Goes Into a Job Cost — and What Doesn’t

Every HVAC job has three buckets of direct cost — and one deliberate exclusion. Getting these right is the foundation of accurate job costing.

Direct Labor

This is the fully loaded cost of the technicians who performed the work. “Fully loaded” means the hourly wage plus payroll taxes (FICA, FUTA, SUTA), workers’ compensation insurance, health benefits, retirement contributions, and paid time off — all expressed as a per-hour rate.

A common mistake is using just the hourly wage. If you pay a technician $30/hour, the fully loaded cost is typically $42–$50/hour once you factor in burden. Using the wrong number understates your costs by 40–65% and makes every job look more profitable than it actually is.

To calculate your labor burden rate, take your total annual cost for a technician (wages + all employer costs) and divide by their billable hours. Most HVAC technicians are billable 65–75% of their paid hours — the rest is drive time, training, downtime, and administrative tasks. According to the Bureau of Labor Statistics, the median HVAC technician wage is around $57,000/year, but your fully loaded cost per billable hour is likely $55–$75 depending on your benefits package and utilization rate.

Hourly is only half the labor story. Most companies pay service technicians hourly, but install labor increasingly runs on performance pay — and that improves the job costing math. A typical HVAC install structure pays roughly 10% of the job to the technician or comfort advisor who sold it and another 10% to the crew that installs it. On a $12,000 changeout, that’s $1,200 of selling cost and $1,200 of install labor — known the moment the job is sold. Performance pay turns labor into a truly variable, per-job cost: no hours ballooning from an estimated two to an actual six, no guesswork. Just remember that burden still rides on top — payroll taxes apply to commissions too.

Materials

Materials include everything that goes into the job: equipment, parts, supplies, and consumables. This is usually the most straightforward component — you know what a condenser unit, a furnace, or a capacitor costs from your supply house invoices.

The nuance is in tracking material usage accurately at the job level. Companies that pull parts from truck stock without logging them against specific jobs end up with inaccurate job costs and mysterious inventory shrinkage. A disciplined parts-tracking process — whether through your field service software or manual logs — is essential for reliable job costing.

Don’t forget to include ancillable materials: copper tubing, refrigerant, duct tape, fasteners, sealant. These small items add up across hundreds of jobs. Either track them individually or apply a standard consumables factor (typically 3–5% of total materials cost) to account for consumables.

Other Direct Job Costs

Labor and materials get all the attention, but plenty of jobs carry direct costs beyond those two — and leaving them out quietly overstates margins on exactly the jobs where they matter most. The test is simple: if the cost exists only because that job exists, it belongs in the job cost. The usual suspects:

A note on payment processing and financing fees: card processing fees (typically 2.5–3.5%) and third-party financing dealer fees (which can run 8–12% on promotional paper) are real variable costs — but we typically do not count them as job costs, because they depend on how the customer happens to pay, not on the job itself. The same $12K changeout costs you nothing extra on a check, a few hundred dollars on a card, and over a thousand on a 0% promo plan. Blending that into job costs makes identical jobs look like they had different margins. Track them as their own variable cost line instead — and keep them front of mind, because they scale linearly with revenue: as you grow, so do they, and they need to be priced for.

Where Overhead Fits (Hint: Not in the Job)

Overhead — rent, office staff, vehicles, software, insurance, marketing — is real money, but we deliberately do not allocate it to individual jobs, and we advise our clients against it. Per-job overhead allocation is arbitrary by construction: spread it per labor hour and long jobs look worse than they are; spread it per revenue dollar and big installs absorb overhead that exists whether you run them or not. Either way, you end up making pricing and dispatch decisions off a number someone invented.

Job costing should stop at gross profit: revenue minus fully loaded labor, materials, and other direct job costs. That number is clean, comparable across technicians and job types, and actionable. Overhead gets managed where it actually lives — at the company level, as a percentage of revenue — and it gets paid for by holding every job to a target gross margin. If overhead runs 18–25% of revenue and you want a 15–20% net margin, your jobs need to blend to roughly 50%+ gross margin. That is the real link between job costing and overhead: not allocation, but a margin target. For a detailed breakdown of how to benchmark your company-level overhead, see our guide to home services overhead rates.

The Two-Part Math of Net Profit (Where Overhead Actually Belongs)

The reason owners try to force overhead into job costing is that they’re trying to answer a fair question — “am I actually making money?” — with the wrong tool. Net profit isn’t a job-level number. It’s the product of two separate things:

1. Job-level margins. Revenue minus direct costs on each job — the gross profit your field work produces. This is what job costing measures, and it tells you whether your pricing, your technicians, and your job mix are healthy.

2. Volume relative to overhead. Your overhead is essentially fixed at any given size of the business. Whether your gross profit dollars cover it — and leave a strong net margin behind — depends on how much volume you push through the shop. Strong job margins on weak volume still produce a weak bottom line, because overhead eats the gross profit dollars. Big volume at weak margins fails the same way from the other side.

Confusing these two parts is exactly how owners end up allocating overhead to jobs: it feels like a shortcut to “net profit per job,” but it contaminates the margin number without ever answering the volume question. Keep them separate. Use job costing to manage margins; manage overhead against revenue — because there is a right amount of overhead for every level of revenue and job volume. A $3M shop and a $10M shop can both run 20% net margins, but they cannot run the same office, fleet, and software stack. When job margins are on benchmark and net profit still disappoints, the answer is almost never in the jobs — it’s that your overhead is sized for a bigger company than the volume you’re actually running.

Setting Up Job Costing in Practice

The mechanics of job costing depend on your technology stack, but the logic is the same regardless of whether you’re using QuickBooks, ServiceTitan, or a spreadsheet.

Option 1: Field Service Software (ServiceTitan, Housecall Pro, etc.)

If you’re running a platform like ServiceTitan, much of the job costing infrastructure is built in. Technician time is tracked via the mobile app, materials are logged from the pricebook, and gross profit per job comes straight out of the reporting.

The key is making sure your pricebook costs are accurate and current, your technicians are consistently clocking in and out of jobs in the app, and your accounting integration is mapping costs to the right categories. If your ServiceTitan data doesn’t match your QuickBooks, your job costing numbers won’t be trustworthy either — see our guide on why ServiceTitan doesn’t match QuickBooks for common reconciliation issues.

Option 2: QuickBooks Job Costing

QuickBooks Online supports job-level tracking through its Projects feature (or Classes in some configurations). You can assign income and expenses to specific customers/jobs and run profitability reports at the job level.

This approach works best for companies doing larger jobs (installs, new construction, commercial work) where the job duration and dollar value justify the tracking effort. For high-volume residential service calls, manual QuickBooks job tracking becomes impractical — you’ll want a field service platform to automate the data capture.

Option 3: Spreadsheet Tracking

For smaller operations or companies just getting started with job costing, a spreadsheet works. Create a template with columns for job number, customer, job type, revenue, labor hours, labor cost, materials cost, other direct costs (subs, permits), gross profit, and gross margin %. Enter data weekly from your timesheets and material logs.

The spreadsheet approach won’t scale past 20–30 jobs per week, but it will give you the insights you need to make better pricing and operational decisions while you evaluate software options.

Analyzing Job Cost Data: What to Look For

Once you have a few months of job cost data, the patterns that emerge will change how you run your business.

Profit margin by job type: Break your jobs into categories — service calls, repairs, maintenance visits, residential installs, commercial installs — and calculate the average margin for each. You’ll almost certainly find that some job types are significantly more profitable than others. This should inform your marketing spend: invest more in generating the types of jobs that make you the most money.

Profit margin by technician: Same job type, different technicians, wildly different margins. This is the norm, not the exception. The gap usually comes from speed (experienced techs complete jobs faster, so labor cost is lower), upselling ability (some techs consistently sell additional services or upgrades), and material usage (some techs are careful with inventory while others are wasteful). This data is gold for coaching conversations and compensation structure design. For more on this, see our guide to HVAC commission structures.

Effective revenue per hour: This is the diagnosis most owners miss on hourly service work. The hours on a job can be perfectly reasonable and the margin still comes in weak — because the problem is on the other side of the equation. Divide each job’s revenue by the total hours it consumed, including paid drive time, and compare it to what residential service work needs to command: roughly $250–$300 per hour effective. If your techs are efficient but your effective rate is $150/hour, no amount of cost discipline saves the margin — you’re underbilling, usually through a stale flat-rate book, undercharged diagnostics, or drive time you’re paying for but not pricing for. Fix the rate, not the tech.

Track overhead separately — as a percentage of revenue: Job costing stops at gross profit, but the companion discipline is watching company-level overhead monthly. For a healthy residential HVAC shop it should run roughly 18–25% of revenue excluding marketing. If that percentage is climbing, fixed costs are growing faster than revenue — add revenue or cut costs, but don’t bury the problem inside per-job numbers.

Breakeven analysis: Your job cost data tells you exactly where pricing has to sit. Once you know your fully loaded labor cost per hour and your materials cost by job type, your target gross margin does the rest of the work — every job needs to clear the margin that covers company overhead and leaves your net profit. This removes the guesswork from pricing.

Common Job Costing Mistakes

Even companies that implement job costing make mistakes that undermine the accuracy of their data:

Understating labor burden: As mentioned above, using the base wage instead of the fully loaded rate is the most common error. This makes every job look 40–65% more profitable than it really is, which leads to underpricing.

Ignoring drive time: If a technician spends 45 minutes driving to a job, that time costs money — but many companies don’t allocate it. Include drive time in the job’s labor hours — it is real direct labor cost, and skipping it flatters every job’s margin. One way or another, it needs to be accounted for.

Inconsistent time tracking: Job costing is only as good as the time data feeding it. If technicians aren’t consistently and accurately logging their time per job, the numbers are meaningless. This is where field service software with GPS and automated time tracking pays for itself.

Allocating overhead into job costs: Spreading overhead across jobs feels rigorous, but it muddies the one number job costing exists to produce — clean gross profit per job. Keep overhead at the company level, watch it as a percentage of revenue, and let your gross margin target carry it.

Not acting on the data: The biggest mistake is doing the work to track job costs and then not using the insights. Job costing should directly inform pricing updates, technician coaching, marketing investment, and decisions about which service lines to grow or shrink.

From Job Costing to Pricing Strategy

Job costing data feeds directly into pricing. Once you know your true cost per hour and your target margin, pricing becomes a math problem instead of a guessing game.

For example, if your fully loaded labor cost is $50/hour and your service work needs to hold a 60% gross margin — enough to cover company overhead and leave a real net margin — your minimum labor billing rate is $50 / (1 – 0.60) = $125/hour. Add your materials markup (typically 30–50% for HVAC) and you have a defensible, data-driven price. Then sanity-check it from the top down: all-in, a healthy residential service call should produce roughly $250–$300 of revenue per hour of technician time it consumes, drive time included. If your flat-rate book implies materially less, the book needs another pass — not your technicians.

Companies that price this way — from costs up rather than market down — tend to have healthier margins than companies that just match competitors or use flat-rate books without understanding their actual cost structure. And when a customer pushes back on price, you can explain exactly what goes into it with confidence rather than discounting out of uncertainty.

Job costing isn’t glamorous. It’s the kind of back-office discipline that nobody sees from the outside. But it’s the financial foundation that separates HVAC companies that grow profitably from those that grow their way into trouble. For a broader look at what healthy HVAC profit margins look like, see our benchmarking guide based on 200+ acquisitions reviewed by our team.

Want job-level margins run for you?

We build the job costing, the gross margin targets, and the monthly financial package for contractors — with a fractional CFO who knows your trade:

HVAC →Plumbing →Electrical →Roofing →

Related Reading

Raymond Gong
About the Author
Raymond Gong

Raymond Gong is one of the senior partners of Profitability Partners, a fractional CFO and accounting firm built exclusively for home services companies — HVAC, plumbing, electrical, and roofing operators doing $5M–$30M in revenue. Prior to Profitability Partners, Raymond was a private equity professional at Black Diamond Capital Management and Third Lake Partners, a large family investment office. Raymond runs the books, the reporting, the profitability optimization, and the exit prep for contractors nationwide, working daily inside ServiceTitan, Housecall Pro, and QuickBooks — turning messy operational data into financials owners can actually run the business on, and that buyers and lenders take seriously. Raymond is a graduate of Vanderbilt University and is based in Tampa, FL.

Connect on LinkedIn

Raymond Gong

Raymond Gong is one of the senior partners of Profitability Partners, a fractional CFO and accounting firm built exclusively for home services companies — HVAC, plumbing, electrical, and roofing operators doing $5M–$30M in revenue. Prior to Profitability Partners, Raymond was a private equity professional at Black Diamond Capital Management and Third Lake Partners, a large family investment office. Raymond runs the books, the reporting, the profitability optimization, and the exit prep for contractors nationwide, working daily inside ServiceTitan, Housecall Pro, and QuickBooks — turning messy operational data into financials owners can actually run the business on, and that buyers and lenders take seriously. Raymond is a graduate of Vanderbilt University and is based in Tampa, FL.

See where your margins are leaking

Book a free consultation with a senior partner. We'll review your situation and tell you honestly if we can help.

Book Free Consultation →
Find Out What Your Margins Should Be →

One HVAC client went from 9% to 17% net margin — that’s +$7M in exit value.

Real client result — not a hypothetical

In a free 30-minute call, we’ll show you exactly where your margins are leaking — and what to fix first.

Your true margins, fully loaded — we calculate your real cost per job including labor burden, materials, and subcontractor costs, then benchmark against top performers so you see exactly where you’re leaving money
The dollar impact of each gap — we quantify what every margin leak and overhead inefficiency is actually costing you per month, so nothing stays hidden
The 3-5 highest-ROI fixes — ranked by impact, so you know exactly where to start
See What You’re Leaving on the Table Free · No obligation · Takes 30 minutes