Blog/Job profit

How HVAC Shops Track Profit Per Job (Without Guessing From Revenue)

Summer rush and winter emergency weeks can fill every bay and still leave an HVAC owner cash-poor. Tickets close, invoices go out, and the shop “was busy”—yet the bank balance does not match the calendar. The usual gap is not effort. It is tracking revenue and tickets while treating profit per job as a month-end mystery.

To track profit per HVAC job, subtract fully burdened labor, materials/equipment, subcontractors, commissions, and a share of overhead from the job’s revenue; then divide leftover profit by revenue for margin %. Service/repair and install jobs often behave differently, so review them separately. Calculators help once; ongoing tracking means logging costs against each invoice and payment so you see margin before month-end. A lightweight job-profit workflow (quote → invoice → costs → payment) supports that habit for small shops without replacing your full field-service suite or QuickBooks.

This guide is for HVAC owners and small shop managers—often 1–5 techs—who know how to run trucks but not how to see true job margin every week. The formula comes first. The conversion bridge is simple: after you learn it, you need a place to run it on every job, not a one-off calculator screenshot.

Track HVAC job margin without guessing from revenue?

Start free trial

Why “busy” HVAC months can still be cash-poor

Busy hides three common failures:

  1. Understated labor — wage-only costing ignores payroll taxes, benefits, and unbilled drive time
  2. Mix problems — high-revenue installs with thin equipment margins subsidize (or get subsidized by) repair tickets
  3. Late cash — invoiced work that is not paid yet looks like profit you can spend

A shop can post strong top-line months while a handful of jobs quietly lose money on callbacks, parts overruns, or owner hours logged at zero. Profit per job forces those stories into the open before you price the next similar ticket the same way.

For the category-level definition that applies across trades and studios, see profit per job for service businesses. For contractor cost codes and budget-versus-actual habits, see job costing for small contractors.

The HVAC job profit formula

Use one formula on every ticket and install:

Profit per job = Job revenue − Job costs

Job margin % = (Profit per job ÷ Job revenue) × 100

Revenue − burdened labor − materials/equipment − subs − commissions − allocated overhead

Build the cost side the same way every time:

  • Burdened labor — tech wages plus payroll taxes/benefits share, per productive hour—not raw wage alone
  • Materials / equipment — parts, equipment, filters, consumables used on that job
  • Subcontractors — duct, electrical, crane, or specialty trades for that engagement
  • Commissions — sales or referral fees tied to the job
  • Allocated overhead — a simple share of rent, insurance, vehicles, software, admin (per job, per labor hour, or % of revenue—pick one rule)
  • Other direct — permits, disposal, rental, payment-processor fees when payment hits

Skip perfection. Consistency beats a beautiful allocation model nobody updates after week two.

Gross vs net job margin (define clearly)

People mix these labels. For day-to-day shop use, be explicit:

  • Gross job profit / margin — revenue minus direct job costs (burdened labor, materials/equipment, subs, commissions, job-specific fees). Useful for comparing tickets quickly.
  • Net-er job view — the same, after a deliberate overhead allocation (and sometimes after acknowledging unpaid invoices are not spendable cash).

What matters is that your team uses one definition in meetings. If “margin” sometimes includes overhead and sometimes does not, you will argue about ghosts. Name the definition on the report: gross job margin vs job margin after overhead share.

External articles sometimes publish HVAC margin ranges by job type—treat them as commentary to date-check, not as JobMargin proof.

Service/repair vs install — different margin stories

Averaging all HVAC revenue into one margin number hides where you actually make money. Split the review.

What to watch on truck-roll jobs (drive time, callbacks)

Service and repair tickets are sensitive to:

  • Drive time — unpaid windshield hours are still burdened labor on that job
  • Diagnostic time that was quoted flat while the clock ran long
  • Callbacks — second labor hits against the same revenue; tag them to the original job
  • Small-parts creep — filters, fittings, and “while we’re here” items that never land on the cost sheet
  • Truck stock used but not recorded until month-end (or never)

A high ticket count with thin or negative margin after drive and callbacks is how a “great month” feels empty.

What to watch on installs (equipment cost, labor hours)

Installs often look strong on revenue and weak on leftover dollars when:

  • Equipment cost was quoted from an old price sheet
  • Labor hours ran long on change-outs, attic access, or permit delays
  • Subs / crane / disposal showed up as surprises after the customer signed
  • Commission was priced as if margin were fatter than reality

Review installs as their own cohort. A shop can be excellent at service margins and mediocre at install margins (or the reverse)—and never know if everything rolls into one dashboard number.

Common HVAC costing mistakes

Using wage instead of burdened rate

If a tech’s wage is $30/hour and you cost jobs at $30/hour, you understate labor every time. Burden includes payroll taxes, workers’ comp, benefits, and often a share of non-billable time. Build a burdened rate (or a simple multiplier you revisit quarterly) and use it on every job. Wage-only costing is the most common way “profitable” tickets quietly lose money.

Ignoring overhead on “small” tickets

Owners often skip overhead on quick diagnostic calls because “it’s only a hundred-dollar ticket.” Those tickets still consume truck, insurance, dispatch attention, and software. A light per-job or per-hour overhead share keeps small work honest. You do not need fifty cost codes—three to eight buckets beat none.

Other frequent misses: owner hours at zero (estimating, parts runs, customer calls), payment fees ignored, and treating uninvoiced or overdue work as if cash already arrived.

A weekly tracking rhythm for a small HVAC shop

A 1–5 person crew needs a rhythm that survives peak season:

  1. Same day or next morning — tag parts and hours to the job when the ticket closes
  2. When payment hits — mark paid and note processor fees against that job
  3. Weekly (30–45 minutes) — sort last week’s jobs by profit and margin %; split service vs install
  4. Flag — any job under your minimum margin rule, any callback cluster, any invoice aging past your terms
  5. Price next — adjust flat-rate or quote assumptions on the patterns you just saw—not once a year at tax time

The point of the rhythm is early correction. Waiting for the company P&L averages good and bad jobs into a shrug.

From calculator to system: quote → invoice → costs → payment

Online HVAC margin calculators are useful for learning the formula once. They fail as an operating system: they do not hold your live quotes, invoices, cost entries, or payment status.

Ongoing tracking means one chain per job:

Quote → invoice → costs → payment

When those four live together, you can answer profit per job before month-end close—and you can see when “profit” is still stuck in overdue AR. That is the habit gap calculators never close.

How JobMargin helps HVAC owners (scope honesty)

JobMargin is built for service owners—including HVAC—who need to see the profit on every job. It is a lightweight stack for quote → invoice → costs → payment, with visibility into per-job profit, payments, and overdue invoices. Product-stated pricing is about $19–39/mo, aimed at 1–5 person field-service shops (and similar small studios/agencies).

What JobMargin is not:

  • Not a full Jobber-style scheduling / dispatch suite replacement
  • Not a QuickBooks replacement
  • Not a source of invented HVAC benchmark guarantees or “we improve your margin by X%” claims

Run the formula on your last 10 tickets. If you cannot answer profit per job in one place, try JobMargin—built for HVAC and other service owners who need margin visibility, not another dispatch OS. See profit per job in JobMargin.

FAQ

How do I track profit per job for HVAC?

Subtract fully burdened labor, materials/equipment, subcontractors, commissions, and a simple overhead share from that job’s revenue. Divide leftover profit by revenue for margin %. Log costs against each invoice and payment, and review service/repair separately from installs.

What is a good profit margin on an HVAC job?

It depends on job type (service vs install), market, and whether overhead is included. External articles sometimes publish ranges—date-check them. Your useful number is your minimum margin rule, applied consistently.

Should I use wage or burdened labor for HVAC job costing?

Use a burdened rate. Wage-only costing understates labor and makes thin tickets look healthy. Include payroll taxes, benefits, and a realistic view of productive time.

Do I need to replace my scheduling software to track HVAC job profit?

No. Scheduling/dispatch and job-profit visibility are different problems. A lightweight job-profit workflow can sit beside the tools you already use. JobMargin does not replace a full field-service suite or QuickBooks.

Can a small HVAC shop track this without a big software stack?

Yes. Start with a short cost checklist and a weekly review. Spreadsheets work for a few active jobs; when tagging falls behind, a lightweight job-profit tool (~$19–39/mo) for quote → invoice → costs → payment can hold the habit without an enterprise stack.


Ready to see profit on every HVAC job?

See the profit on every job with JobMargin — quote → invoice → costs → paid.

Start free trial

← All posts