Your Effective Labor Rate Is Lying to You — Here's Why
Your Effective Labor Rate Is Lying to You
In 2019, I pulled the P&L of a 14-truck residential HVAC shop that Atlantic Comfort Partners was considering acquiring. The owner had been in business for eleven years. He could tell you his average ticket, his close rate, his revenue per truck. What he could not tell me, because he had never calculated it, was his effective labor rate.
Once I ran it, the number showed he had been losing money on every install for three years. The install division was being cross-subsidized by service calls without anyone seeing it. The business looked profitable on the summary P&L. The detail told a different story.
The effective labor rate — ELR — is what you actually collected per hour of labor you actually paid for. Not scheduled. Not quoted. Paid, from payroll. Most P&Ls will never show it to you unprompted.
The Number Your P&L Keeps From You
Take your total labor revenue collected over the trailing twelve months and divide it by the total labor hours paid out during that same period. That result is your ELR.
Two related numbers get mistaken for it. Your billing rate is the number on the quote — $145/hour, $165/hour, whatever's in your price sheet. Your labor cost is the technician's wage plus burden: payroll taxes, benefits, workers' comp, fully loaded. ELR sits between those two, and the distance between ELR and billing rate is what this article is about.
In that 14-truck shop, the owner's billing rate on installs was $118 per hour. His fully loaded labor cost was roughly $67 per hour. He believed he was running a 43% gross margin on labor. When I divided collected install labor revenue by paid labor hours, his actual ELR was $84 per hour. Real labor margin: closer to 20%. The gap hadn't appeared on any report he ran.
Why the Quoted Rate and the Actual Rate Are Almost Never the Same
Several mechanisms push ELR below billing rate. None appear as a line item on a standard P&L.
Unbillable travel time. When a technician drives 35 minutes to a job and you're not charging a dispatch or travel fee, you're paying for that time and collecting nothing against it. Windshield hours count against billable output whether the job was sized right or not. I use the same math here that I apply to diagnostic fees: the cost of getting a truck to a house is real, and it belongs in the denominator of your ELR calculation.
Callback hours. When you send a tech back to fix something that should have worked the first time, you're paying full labor cost for hours that generate zero revenue. In the shops I audit, callback hours are the single largest driver of ELR compression — and the one owners are least willing to quantify directly.
Warranty work. Equipment warranty claims and labor warranty commitments both pull hours out of the revenue column. The parts might be covered. Your technician's time usually isn't.
Internal shop time. Training, shop meetings, vehicle maintenance, inventory counts, proposals that don't close. All paid. None billed. All sitting in the denominator.
This is where the overhead allocation problem compounds everything. Your cost-of-doing-business calculation — if you've built one — spreads overhead across an assumed billable hour count. If the assumed hour count is wrong, overhead recovery per hour is wrong, and your pricing will feel solid while your margin feels soft.
You cannot price against a cost you have not counted.
The Flat-Rate Book Problem
The major flat-rate pricing books produce predictable revenue per ticket. Standardized job codes, preset prices, consistency across technicians. The problem: predictable revenue per ticket is not predictable margin per ticket — and the flat-rate structure makes ELR deterioration nearly invisible.
When your ELR drops because callback rates climb, the flat-rate book keeps generating the same ticket total. Revenue looks stable. The hours bleeding out in the background don't appear in the ticket data. The report you look at every Monday morning — revenue per job, average ticket, close rate — shows nothing wrong. The ELR calculation, which requires stepping outside the ticketing system entirely and dividing collected dollars by paid hours, is what catches it.
The flat-rate books sold by the major industry vendors are calibrated to produce consistent, auditable revenue that looks good in a service agreement renewal pitch. Predictable revenue per ticket, unpredictable margin per ticket. That's the opposite of what a pricing system should do.
The SEER2 transition illustrated this directly. When equipment costs moved with the efficiency standard change, shops needed to reprice labor and overhead recovery — not just pass through the equipment delta. In the shops I've worked through the transition, the ones that absorbed the cost increase without updating their labor pricing are still feeling it. Most trusted the flat-rate book update cycle. The book moved slowly. The margin moved faster.
What I Saw at Caldera
Before the MBA, before Atlantic Comfort Partners, I worked at Caldera Heating & Cooling in Sunnyvale. Commercial and residential both. It's where I developed most of the instincts I still use.
On paper, Caldera's install crews were running about 6.5 revenue-producing hours out of an 8-hour shift — the remaining 1.5 hours accounted for travel, lunch, and minor administrative time. Install pricing was built on that 6.5 figure.
When I did an actual labor audit, not a scheduling report but a real accounting of where hours went, the productive billable average was closer to 5.1 hours per shift. That 1.4-hour daily gap was going to material runs when the warehouse order wasn't complete, permit paperwork that job foremen were completing on-site, and job-site troubleshooting on oversized equipment.
That last one matters. Rule-of-thumb sizing — square footage divided by some factor, no Manual J — was generating equipment selections too large for the actual load. Oversized equipment creates fitment problems, duct pressure issues that take time to resolve, and commissioning that runs long. None of it showed up as a warranty claim or a callback. It was absorbed into the original install hours, quietly, every time.
The ELR took the hit without anyone seeing it.
How to Actually Calculate Your ELR
You need two reports and one division.
Pull your total labor revenue collected over the trailing twelve months. Collected, not billed. Invoiced amounts sitting in receivables will flatter the number. If your DSO is elevated, billed ELR overstates what you actually earned. (DSO — days sales outstanding — is the average number of days between invoice date and payment receipt. If it's running 45 days, your collected labor revenue lags your billed labor revenue by six weeks.)
Pull your total labor hours paid from payroll for the same period. Not scheduled hours. Not hours logged in field service software. Paid hours, from the payroll register.
Divide collected labor revenue by paid labor hours. That is your ELR.
Compare it to your billing rate and your fully loaded labor cost. The gap between ELR and billing rate is your leakage. The gap between ELR and labor cost is your actual labor margin contribution. If ELR is below labor cost, the problem is immediate. If ELR is above labor cost but the margin is thinner than your P&L suggests, you've found where the invisible loss lives.
Your office manager can pull both reports in under an hour. The math is one formula.
What to Do With This Number Starting Monday
Run the trailing-12 ELR calculation before you quote another job.
When you have the number, break it down by labor category: service calls, installations, maintenance agreements. The shop-wide average will hide where the problem is concentrated. In the shops I audit, installs carry the largest ELR gap. Oversizing, extended commissioning, and permit processing all concentrate there. Maintenance tends to be cleanest.
Then break it down by technician. A shop average is almost always being pulled down by one installer whose callback rate is consuming 90-plus paid hours a year in zero-revenue work. Ninety hours is real money — and the shop-wide average obscures it entirely. The per-tech calculation finds it.
The hiring implication is direct. Every callback is paid hours with zero revenue against them. A tech who cannot diagnose correctly the first time is not a personality problem or a training problem. It's an ELR problem. The cost shows up in the denominator whether or not anyone has named it.
The ELR calculation didn't create any of this. The callback hours were already in the payroll register. The flat-rate book was already generating tickets without revealing what the hours actually cost. The calculation puts it somewhere you can see it.
Pull the payroll export this week. Run the number.
FAQ
How much variance between quoted rate and actual effective rate is manageable versus a sign something is wrong?
In the shops I've worked with, a gap under 10% reflects unavoidable unbillable time and is workable if you've accounted for it in your overhead recovery. When I see gaps above 15%, I start asking direct questions about callback rates, travel time policy, and whether the cost-of-doing-business calculation was built on actual billable hours or an assumption. Above 20%, the pricing structure needs to change before the next busy season. The gap isn't the problem. A gap you haven't measured is.
I run flat-rate pricing. Does ELR even apply to my shop?
It applies more urgently, not less. Flat-rate produces consistent ticket revenue regardless of what's happening to your actual hours — which means ELR deterioration is invisible inside your normal reporting. Time-and-material shops at least see the hour count on every invoice. Flat-rate shops have to step outside the ticketing system entirely to run the calculation. The predictability the flat-rate book sells you is exactly what keeps the margin drift hidden.
My ELR looks fine shop-wide but I suspect one install crew is dragging it down. How do I isolate it?
Pull labor revenue by job category from your service software, then match it against payroll hours for the techs assigned to those jobs over the same period. The match isn't perfect — payroll doesn't sort hours by job type — but if you know roughly what percentage of each tech's time goes to installs versus service, you can approximate it. If your software supports job costing reports, use those. The goal is identifying which category or crew is producing the largest gap, not three decimal places of precision.
Should I use hours from payroll or from my field service software? They never match.
Use payroll. Field service software captures hours as technicians log them — subject to rounding, incomplete entries, jobs that close without a final time stamp. Payroll captures hours as paid. The difference between the two numbers is itself diagnostic: if your software shows significantly fewer hours than payroll, you have unbillable time that isn't even being recorded. ELR calculated on software hours will overstate what you actually earned per paid hour.
If I raise my quoted labor rate to close the ELR gap, won't I lose jobs to competitors who haven't done this math?
Some jobs, possibly. The jobs you lose to a competitor who's underpriced are jobs that were never profitable at your actual cost structure. Shops that hold rates below their real costs to stay competitive don't grow out of the problem — they get busier and broker. In residential replacement work, where the customer is choosing who comes into their home, price is rarely the only variable. Contractors who reprice based on real costs lose fewer customers than they expect. The ones who don't reprice eventually run out of cash and can't figure out why.
How often should I be calculating ELR?
Trailing-12 is the right primary window — it smooths seasonal variation and gives you a number you can make pricing decisions against. Run it annually, tied to your budget cycle. If you make a significant pricing change, run it again at six months to see whether the change moved the number. Monthly ELR is too noisy for decisions; one bad callback stretch distorts a short window. Quarterly is a reasonable leading indicator if you want to catch drift before year-end.
Enjoyed this article?
Get articles like this in your inbox every Monday. Free, no spam.
