Writing · Pricing
Your effective labor rate is not your hourly rate.
The rate on your wall is a wish. The rate you collect is a fact. Here is how to work out the real one in an afternoon, with three numbers you already have.
A shop I use as a teaching example — call it Permian Mechanical — posts $135 an hour. Nice sign by the counter. Everybody in the building could tell you the number.
Last year that shop collected $92 an hour on every hour it paid for.
The gap is $43. Across about 6,700 paid hours, that is Δ $288,000 a year. Not lost sales. Not customers who went somewhere else. Work they already did, with their own people, on their own trucks.
Nobody decides to leak money like that. It happens one soft ticket at a time, for years. And the only way to find it is to stop looking at the sign and start doing the arithmetic.
The three numbers
This takes an afternoon. It takes less if your books are decent.
- Labor dollars you collected, last 12 months Collected, not billed. Money in the bank, not money on an invoice. If your books split labor from parts, this is one report. If they do not, see the sample method below.
- Hours you paid for, same 12 months Paid, not billable. Every hour on the payroll for anybody who turns a wrench: drive time, shop time, warranty work, the hour spent looking for a fitting. Pull it off the payroll reports. Do not estimate it.
- Divide the first by the second That is your effective labor rate. Now go stand next to the sign.
If those two numbers are close, you run a tight shop, and I mean that. If there is a $30 or $40 gap, multiply it by your paid hours and sit with the answer for a minute. That is this year. It was also last year.
If your books will not split labor from parts
Half the shops I look at cannot produce a clean labor number. That is not a dead end, and it is not a reason to guess. Take a sample instead.
Pull 20 invoices at random from the last year. Not your favourites — random. For each one, write down the labor dollars and the parts dollars. Add up the labor share. Apply that share to your total collected revenue.
Then write "n=20" next to your answer. A number from a 20-invoice sample, labelled as a sample, is honest and usable. A number with no method behind it will get argued with, and it should be.
Where the $43 goes
The gap is never one thing. It is six things, and they show up in about this order of size.
- Prices that have not moved. The rate sheet has no date on it. Legacy accounts are still paying 2019 money because nobody wanted the conversation.
- The "while I'm here" work. Twenty minutes here, a part there, a favour for a good customer. None of it hits a ticket.
- Jobs that ran long against a flat price. You quoted six hours and it took nine. The three extra hours are paid and not collected.
- Drive time and parts runs. Two trips to the supply house is an hour of payroll that nobody bills and nobody counts.
- Callbacks. Going back to redo something is two crews' worth of pay for one crew's worth of revenue.
- Invoices that went out slow, or short. Some got discounted at the counter to end an argument. A few never went out at all.
The objection, and it is a fair one
Owners tell me: my posted rate was never meant to be collected on every hour. Correct. Some paid hours are not meant to earn. Training. A ride-along with a new man. The morning after a hail storm when nobody can get anywhere.
So split the gap in two, because the honest part and the leak are different problems.
Run the same division twice. First on billable hours only. Then on all paid hours. The first number tells you what your pricing is really doing. The second tells you how much of your payroll is earning at all. The distance between them is your utilisation, and it is a separate fight.
Read the two answers like this. If the billable number lands near your posted rate and the all-paid number lands well short, your pricing is holding and your payroll is not being used. If both land short, the rate sheet is the first fight. Two different problems, two different people responsible, and you cannot tell which is which until you divide twice.
What to fix first
In this order, because this is the order the money comes back in.
- Put a date on the rate sheet Then put a review date on the calendar — the same day every year. A price nobody reviews is a price that falls behind. The Dallas Fed's Q2 2026 Texas service sector survey read input costs at 64.4 and prices received at 24.5 on the same scale. Your costs are moving faster than your prices, and they have been for a while.
- Audit ten tickets a week Somebody who is not the man who wrote the ticket reads it against what happened. Did the added work get added? Did the extra hour get billed? Ten a week, every week, and the habit fixes itself inside two months.
- Invoice the same day Not Friday. Not when somebody gets to it. The day the work is done. This one is free and it moves cash inside a month.
- Check your bids against reality Take ten finished jobs. Divide actual hours by estimated hours. If you get 1.2, you are giving away a fifth of the labor on every flat-price job you sell, and you are doing it on purpose without knowing it.
- Reprice the legacy accounts, on paper One letter, a date the new rate starts, 30 days' notice. Do the biggest one first, because it is the one you are most afraid of, and it will tell you the truth about the rest.
What happens when you raise prices
The fear goes: I raise prices 10%, I lose my customers. Forty years of shops, plumbers and electricians raising prices says otherwise.
Here is what happens when a good operation moves prices with a straight face. The bottom 5% leaves. Those are the slow payers and the ones who argue every invoice — the ones who were costing you money. A few people ask about it once. Everybody else pays the new rate, because they were not buying on price. They were buying on the fact that you show up.
Why this is the first reading I take
Two reasons.
The first is that it pays for everything else. Recovered cashflow in month one is what funds the second-in-command in month six, and the second-in-command is what gets you out of the middle of your own company.
The second is that a buyer's bank underwrites off your tax returns, not off your explanation. The earnings a lender can see are the earnings you actually collected. Around 78% of buyers at this size expect bank money, and the bank wants to see cash flow that covers the loan payment by 1.25 to 1.50 times. Every dollar of that $43 gap is a dollar that never reached the return.
The sign on the wall is what you meant to charge. The division is what you charged.
Go do the division. It is three numbers and an afternoon, and it is the cheapest thing in this whole practice.
Questions about the effective labor rate
What is an effective labor rate?
Collected labor dollars divided by paid hours. Not your posted rate — the rate you actually got, after unbilled travel, warranty work, rework, discounts, write-offs and hours somebody forgot to put on a ticket. A shop with a posted rate of $135 collecting $89 has a $46 gap on every paid hour, and that gap is where the first cycle usually finds its money.
How do I calculate mine?
Take twelve months of collected labor revenue and divide it by twelve months of paid field hours from payroll. Use paid hours, not billed hours — the difference between the two is the leak. Do it before you look at anything else, because it's the single number most likely to be worth six figures a year and it takes an afternoon.
Why is my posted rate so far off what I collect?
Because every gap is small and none of them get counted. Fifteen minutes of unbilled drive time, a warranty callback nobody costed, a change order agreed verbally and never invoiced, a long-standing customer who's been on an old rate for four years. Individually they're forgivable. Divided into paid hours, they're the whole difference between $89 and $135.
If you want the rest of the reading — all 12 numbers, scored — the Baseline takes about six minutes and does not ask for your email.
Take the Baseline