Revenue Per Truck Is a PE Metric — Stop Using It
Revenue Per Truck Is a PE Metric — Stop Using It
When I was at Atlantic Comfort Partners running acquisition models, revenue per truck was on every target summary we built. We used it to normalize across fleet sizes, compare markets, and arrive at a quick valuation proxy before we'd even seen the detailed financials. It was a screening metric. A filter. It answered one question — are these trucks generating enough top-line to justify opening the data room? — and it answered that question reasonably well.
I left Atlantic in 2021. Since then I've worked with independent shops, mostly under 25 trucks, and I keep finding owners who have adopted revenue per truck as an internal management metric. Some saw it in a trade publication. Some picked it up from a consultant who works primarily with larger operations. Some just heard that acquirers watch it and assumed that made it worth watching.
It doesn't. Not for a 3-truck shop, and not for a 12-truck shop. The metric was built to serve a roll-up thesis, and that thesis has almost nothing to do with how you run a service department in Alexandria or Sunnyvale or anywhere else.
Where Revenue Per Truck Came From — and Why It Made Sense There
The private-equity roll-up playbook in residential HVAC is a multiple arbitrage: buy fragmented small businesses cheap on EBITDA, assemble a platform that looks institutional, sell the platform at a higher multiple. Revenue per truck is a due diligence shortcut inside that process. When you're screening 40 acquisition targets in a year, you need a number that travels across dissimilar markets without requiring deep normalization before you've even opened the data room.
At Atlantic, the metric told us whether the revenue base was large enough to justify an offer. That's it. We were not managing those shops. Margin improvement was the post-close thesis — we expected pricing gaps, operational waste, messy books. Revenue per truck told us whether there was enough top-line to work with. The detail came later, and someone else's team handled it.
That's the context the metric was designed for. When you use it on yourself, there's no post-close team. You're looking at your own number and drawing conclusions about health and efficiency that it was never built to support.
What Revenue Per Truck Actually Hides
In 2019, I pulled the P&L on a 14-truck residential HVAC shop my firm was preparing to acquire. Revenue per truck looked reasonable — within the range we saw in comparable markets. Nothing in the top-line flagged a problem.
The gross margin on installs was underwater. Had been for three years. The owner didn't know because he was watching overall revenue growth and a positive net figure that included service revenue, which was carrying the installs. Every system he sold, he lost money on. He'd sold hundreds of systems.
Two shops can post identical revenue per truck while one is profitable and one is losing on the work that actually drives the volume. The metric collapses service revenue, install revenue, maintenance agreements, and parts markups into a single top-line figure divided by fleet count. What's happening underneath stays hidden.
Most small shops compound this by confusing markup with margin at the pricing stage. A shop pricing labor at a 40% markup believes it's earning 40 cents of gross profit on every dollar billed. It isn't — 40% markup is 28.6% gross margin. Those are different calculations and the difference is not small. Revenue per truck cannot catch this. The top line grows, the metric looks fine, and the cash position erodes in ways that feel like timing rather than structure.
Revenue per truck answers the wrong question for a working shop owner. It tells you how much your trucks bill. It says nothing about how much you keep per hour your tech is in the field — which is the only number that determines whether the business is actually working.
The Metric That Actually Tells You Something: Gross Profit Dollars Per Billable Hour
Gross profit dollars per billable hour: take the revenue from a job, subtract the direct cost of producing it, divide by the hours your technician spent doing billable work on-site.
Direct cost includes technician wages and burden, truck operating cost at your shop's actual rates, and direct materials. Billable hours are wrench time — not drive time, not prep, not paperwork. Just the time the tech is at the job doing work the customer is paying for.
I ran service calls out of a Sprinter for four years at Bayview Mechanical, then two more years at Caldera. I know what the gap between clocked hours and billable hours looks like from inside the truck. A technician who starts at 7:00 and runs four calls will have six to eight clocked hours and maybe four to five billable hours, depending on drive time and parts pickup. That gap is real cost. When shops calculate their labor rate, they often price off the billable hours while incurring cost on all the hours. That math requires you to account for the difference somewhere in the rate. Most shops don't.
The truck operating cost is where the first serious error usually lives. Commercial auto premiums in HVAC have risen sharply since 2021 — I've seen invoices running 14-22% annual increases depending on state. If you're using a benchmark figure from 2022, you're already off before you've touched anything else in the calculation. By how much? In the shops I've audited, the gap between the benchmark vehicle cost and the actual vehicle cost runs $8-15 per hour. That's not rounding error. The national average is a fiction for your shop. Your insurance invoice is not.
When you run gross profit dollars per billable hour correctly, the number varies by job type. Diagnostic calls look different from repairs, which look different from installs. The variation tells you where to focus.
The Contrarian Point: A Rising Revenue-Per-Truck Number Can Mean Your Pricing Is Broken
The flat-rate pricing books sold by the major industry vendors produce predictable revenue per ticket and unpredictable margin per ticket. The book sets the labor unit rate, adds the parts markup, and generates a ticket price. Ticket prices rise with the book. Revenue per truck rises with ticket prices. The vendor's commission rises with both. What the book doesn't consistently account for is your shop's actual overhead allocation and labor burden — so margin per ticket swings based on job complexity and parts cost variation in ways the flat-rate structure obscures but doesn't resolve.
A shop running vendor flat-rate pricing can show strong revenue-per-truck numbers for two years while labor gross margin compresses every quarter. The top line looks fine. The bank account tells a different story.
The SEER2 transition made this visible. In the shops I've been through this with, roughly 60% absorbed the equipment cost increase without fully passing it through to the customer. They repriced partially, held labor rates flat, ate some of the materials increase to protect close rates. Revenue per truck on those installs held steady or even climbed — higher equipment costs in the ticket, same labor rates, same truck count. Install gross margin fell hard. The metric showed nothing.
If your revenue per truck has climbed over the last 18 months, that's worth examining rather than celebrating. The question is whether gross profit per billable hour on the work driving that number moved in the same direction. Those two things can move in opposite directions without the top-line metric flinching.
How to Calculate Gross Profit Dollars Per Billable Hour for Your Shop
Start with one job type. Repair calls first — the scope is tighter and the data is cleaner. Add diagnostic and install once you have the repair calculation working.
Calculate your technician cost per clocked hour. Base wage, plus payroll taxes (FICA, FUTA, SUTA — roughly 8-10% depending on state), plus workers' comp allocation, plus any benefits load. That's your burdened labor rate per hour on the clock, not per billable hour.
Calculate your truck operating cost per hour. Pull your shop's actual commercial auto insurance invoice for the year. Pull the fuel card export. Add maintenance and repair from your records. Add straight-line depreciation on purchase price over expected useful life. Divide the total by operating hours for that truck in the year. Do not use a benchmark. This number varies by market, fleet age, and coverage level, and the error propagates into every calculation downstream.
Add overhead allocation. Divide monthly fixed overhead — rent, office staff, software subscriptions, owner's market-rate labor if you're working in the field — by total monthly billable hours. This step is where most shops undercount, particularly when the owner treats their draw as separate from the business's cost structure.
Subtract total cost per billable hour from revenue per billable hour. That's your gross profit per billable hour.
In the shops I've worked through this calculation with, a residential repair call with sound pricing and controlled costs typically lands between $90-140 in gross profit per billable hour after burdened labor, actual vehicle cost, and overhead. Installs run tighter because equipment cost is a higher share of the ticket. Diagnostic-only calls run tighter still. If you're seeing numbers well below $80 on repair calls, the pricing or cost structure needs examination. Usually both.
What to Do With This Before Next Monday
Pull your commercial auto insurance declarations page and your last year of fuel card statements. Put them somewhere you can find them.
Open your cost-of-doing-business worksheet and find the vehicle cost line. If that number came from any source other than your own records, replace it with the actual figure from those documents. Recalculate your hourly cost and see what moves.
If you don't have a cost-of-doing-business worksheet, that's the prior problem. You need five inputs: burdened labor cost per hour, vehicle operating cost per hour, overhead per hour, direct materials (job-specific), and billable hours from dispatch records. Everything in your pricing flows from these.
Once you have gross profit per billable hour on repair calls for a single month, you have a baseline. Track it monthly for 90 days. Watch what happens when you reprice, when you add a tech, when fuel costs spike. The number will tell you things that revenue per truck cannot.
You are not running an acquisition target. You are running a business that has to make money on every hour your truck is in the field. Measure that.
FAQ
I track revenue per tech, not per truck — is that the same problem?
Yes, with slightly different math. Revenue per tech has the same core failure: top-line volume without margin per unit of field time. A tech who runs long on every call and uses premium parts without a materials markup can post strong revenue-per-tech numbers and weak gross profit per billable hour. The direction you want to move is the same regardless.
What's a reasonable target for gross profit dollars per billable hour in residential HVAC right now?
In the shops I've worked through this calculation with, a solid repair call should produce $90-140 in gross profit per billable hour after burdened labor, actual vehicle cost, and overhead allocation. Installs typically run $60-90 because equipment cost is a higher percentage of the ticket. Your specific market and cost structure will move these numbers, which is exactly why building from your own data matters more than any benchmark.
My trucks run both service and install. How do I separate the calculation?
Track by job type from the start. In whatever dispatch software you're using, job type should already be a field on completed records. Pull service calls separately from installs, calculate gross profit per billable hour for each, and treat them as distinct lines of business — because they are. A truck that runs both service and install in a week is carrying two different margin profiles, and averaging them together obscures both.
We're growing fast and investors keep asking about revenue per truck. Do I just ignore it?
Track it for the conversations, but don't manage to it. Know your number, understand what drives it, and be prepared to explain the gross margin picture underneath it. An acquirer who's asking only about revenue per truck and not about install gross margin or service gross profit per hour is either unsophisticated or expecting to find the problems after close. Either way, you want to be the one who already knows what's there.
How do I count hours for a tech who splits time between driving, job prep, and billable work?
Only count time doing work the customer is billed for as billable hours in the denominator. Drive time, parts pickup, shop prep — these belong in your overhead allocation or vehicle cost per hour, not the billable hours figure. Keeping billable hours clean is also what tells you how much non-billable time your operation is absorbing, which is its own useful signal.
If I switch to this metric and the number looks worse than I expected, what do I do?
Resist adjusting the calculation. The most common causes I find when a shop runs this for the first time and doesn't like the answer: vehicle cost was pulled from a benchmark instead of actual invoices; overhead wasn't fully allocated because the owner's labor was excluded; billable hours were overcounted because drive time crept into the field. Check each input before drawing a conclusion. If the inputs are correct and the number is still weak, you're looking at a pricing problem, a cost structure problem, or both. Knowing that is the beginning of fixing it — not a reason to go back to a metric that couldn't see the problem at all.
Enjoyed this article?
Get articles like this in your inbox every Monday. Free, no spam.
