The short answer
Job costing means the same thing in principle across HVAC, plumbing, and electrical work, tracking revenue and cost at the individual job level, but what you actually have to separate to make it useful is different for each trade.
All three trades will tell you job costing matters. Fewer will tell you that the chart of accounts built for an HVAC contractor doesn't transfer cleanly to a plumbing outfit, and neither transfers cleanly to an electrical contractor running commercial jobs with retainage. The concept is universal. The setup isn't.
| Trade | What job costing has to separate | The margin trap |
|---|---|---|
| HVAC | Install vs. service vs. maintenance agreement revenue, by truck and technician | A maintenance agreement collected upfront masks whether it's actually profitable once service visits are delivered |
| Plumbing | Service calls vs. remodel and new-construction work, plus material cost per job | A 2 AM emergency call looks profitable on the invoice until parts, dispatch time, and callbacks are counted |
| Electrical | Residential vs. commercial vs. industrial contracts, retainage, and change orders | Change orders performed but never invoiced get absorbed into the original contract price, quietly |
HVAC job costing has to separate three distinct revenue types: installs, one-time service calls, and maintenance agreements. The maintenance agreement is the one that causes the most confusion, because it's often collected as a single annual payment but delivered as several service visits spread across the year. Book the whole fee as revenue the day it's collected and a maintenance-heavy month looks artificially strong while the months where the actual service visits happen look weaker than they are. Job costing by truck and technician is what surfaces whether a specific crew is spending more time on warranty callbacks than the schedule accounts for, which is invisible at the company-wide level.
Plumbing mixes fast-turn emergency service calls with material-heavy remodel and new-construction jobs, and averaging them together into one number hides where the actual margin comes from. An emergency call that generates a $350 invoice can net out to a loss once parts, drive time, and a callback are factored in, something that's invisible until job costing tracks cost at the individual call level rather than just revenue. Remodel work brings its own wrinkle: deposits and progress payments need to be recognized against the work actually completed, not booked as income the day they're collected, or a job can look profitable in month one and underwater by closeout.
Electrical job costing, especially on commercial and industrial contracts, has to account for money that isn't actually available yet. Retainage, typically 5–10% held back until final completion, and draw schedules tied to project milestones mean an invoiced amount and a collected amount are two different numbers that need to be tracked separately. Change orders are the other recurring leak: scope additions happen constantly on commercial jobs, and if they're not flagged and invoiced as they occur, that labor and material gets silently absorbed into the original contract price. Labor burden, the fully-loaded cost of a crew including payroll taxes, workers' comp, and benefits, also matters more here than in residential-heavy trades, since underpricing labor on a large commercial bid compounds fast.
Despite the differences, the underlying discipline doesn't change: every dollar of cost needs to be tied to the job that generated it, not lumped into a company-wide expense category, and every job type needs its own revenue line so averaging doesn't hide which part of the business is actually carrying the other. The specific categories differ. The requirement that your chart of accounts be built to capture them, rather than bolted on after the fact, does not.
Can one bookkeeping setup handle a business that does more than one of these trades?
Yes, multi-trade contractors are common, and the chart of accounts just needs separate job-type categories for each trade the business performs, rather than trying to force plumbing and electrical work into the same cost buckets.
Which trade is hardest to job cost accurately?
Electrical commercial work tends to be the most complex, mainly because retainage and change orders both require ongoing tracking that doesn't resolve until a job closes out months later, unlike a same-day HVAC or plumbing service call.
Do you build job costing for all three trades?
Yes. See the dedicated breakdowns for HVAC, plumbing, and electrical bookkeeping for how each one's job costing is actually structured. For the full picture on HVAC specifically, see The Complete Guide to HVAC Bookkeeping.
Jeremy Brewer is the founder of 911 Bookkeepers LLC in Baton Rouge, Louisiana. He worked in the field as an HVAC tech before building books for the trades, and he serves as a licensed paramedic in EMS. He is a Xero Certified Advisor.
Book a free 30-minute financial checkup and find out exactly where your business stands.