Trades industry news, updated weekly
Business Tips

Your Flat-Rate Price Book Is Out of Date — And You Don't Know It

Maria ChenMaria Chen··12 min read

Your Flat-Rate Price Book Is Out of Date — And You Don't Know It

The Price Book Isn't Wrong — It's Just Old

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 losing money on every install for three years. Not by much per ticket — enough to feel like noise. But across several hundred installs a year, it added up to a business quietly eating itself while the owner looked at his revenue number and felt fine.

He had a flat-rate price book. A good one, from a recognizable vendor, set up properly when the shop bought it in 2018. The inputs hadn't been touched since.

That's the problem I want to talk about.

Flat-rate pricing is the right structure for a residential HVAC shop. Price certainty for the customer, no hourly clock for the tech, consistent quoting. The idea is sound. The execution depends entirely on whether the numbers inside the book reflect what it actually costs you to do the work today — not what it cost you when the implementation consultant left.

Most shops I work with haven't touched those numbers since setup. The software gets updated. The labor tables in their specific configuration do not. The cost-of-doing-business calculation underneath the whole thing is frozen in whatever year it was last configured. Every ticket quoted since is priced off a historical document.


What's Actually Inside a Flat-Rate Price That Can Go Wrong

A flat-rate repair price has roughly five inputs: technician labor and burden, vehicle operating cost per billable hour, overhead allocation, parts cost, and margin target. Several of them have moved sharply since 2021.

Parts costs are what owners notice. They hit the invoice, they show up in distributor emails. When Carrier raises a part 15%, you feel it. Most shops have adjusted parts pricing — imperfectly, but they've moved.

What hasn't moved is truck operating cost per billable hour. That's also, in my view, the single most underpriced cost in residential HVAC. It aggregates across multiple P&L lines — fuel, commercial auto insurance, registration, maintenance, depreciation — none of which appear as one number. So the total gets approximated. Usually with whatever the flat-rate vendor assumed as a default, or a trade association benchmark.

The national average is a fiction. It blends a Phoenix shop and a Vermont shop in January, and your costs are neither. Run your own number: pull last quarter's actual fuel spend per truck, actual insurance premium prorated, actual maintenance invoices, and a depreciation figure based on what it would cost to replace the truck today. Divide by actual billable hours — not scheduled, not total. Billable. That's your number. It will not match the book's assumption.

The truck cost problem is invisible because it's distributed. It doesn't show up as one line you can fix. It's hiding across five expense categories, and your price book is absorbing none of the increases.

On commercial auto insurance: premiums in HVAC have been rising at rates no default flat-rate configuration has tracked. The shops I've worked with in Virginia and Maryland are running real truck costs materially higher than what their books assume — and none of that gap is recoverable on a diagnostic fee they haven't touched in three years.

Technician wages are the third piece. In markets with active competition for journeyman techs, wages have moved. When a burden rate assumption inside your price book no longer matches what you're actually paying fully loaded — wage, payroll taxes, health contribution, workers' comp allocation, paid time off — the labor portion of every flat-rate ticket is underpriced by whatever the gap is. In some shops I've audited, that's been meaningful enough to invert the job's contribution margin before overhead even enters the picture.


The Vendor Book Problem

Here's what the flat-rate software companies would prefer you not examine too closely.

The major vendor books are built to produce predictable revenue per ticket. That sells, because contractors want predictability in quoting. But predictable revenue per ticket and predictable margin per ticket are different things, and the books are optimized for the former.

To say it plainly: these books are calibrated to close tickets consistently and to support the vendor's commission structure. They are not calibrated to your overhead, your market, or your truck costs. The result is predictable revenue per ticket and unpredictable margin per ticket. For an independent shop, that's the wrong optimization.

A brief distinction worth making: gross margin is revenue minus the direct cost of goods sold — labor and parts attributable to the job. Contribution margin is what's left after subtracting variable costs of doing one more job, before fixed overhead. A shop can be closing well on service calls and watching contribution margin on installs compress quarter over quarter while the revenue line stays fine. The price book gave them confidence. It wasn't built on their costs. It was a template that generated revenue in their market on cost assumptions that may have fit them in 2020.


What I Saw at Caldera

I ran service calls out of Caldera Heating & Cooling in Sunnyvale for two years before I went back for the MBA at George Mason. I was quoting from a book. The numbers felt authoritative because they were in the system and because the dispatcher had said "quote from the book" on day one.

The scar on my left forearm is from a reversing valve job in 2012. I could run a load calc, diagnose a refrigerant undercharge by subcooling and superheat, and I took genuine pride in the work. What neither I nor the shop owner had any operational visibility into was whether the prices in that book covered what it cost to send me out there.

The P&L problem I found in that 14-truck shop in 2019 didn't surprise me. The people executing flat-rate quotes are skilled at HVAC. They have no reason to distrust a number in the system. The owner has to get the book right — and has to keep getting it right as costs shift around it. That's the job the book cannot do for you.


SEER2 as a Live Case Study in Absorption vs. Pass-Through

When SEER2 took effect in January 2023, equipment costs moved — meaningfully in most product categories. What happened next separated shops that repriced from shops that didn't.

Shops that updated their flat-rate install prices to reflect the new equipment cost basis held margin reasonably well. Equipment got more expensive; the install price reflected that; margin held.

Shops that absorbed the equipment cost increase without passing it through watched install margins compress. Not all at once. Quietly, job by job, across the back half of 2023 and into 2024. In my experience, the majority of independents I work with did exactly this — absorbed and didn't reprice.

Then layer in the oversizing problem. Manual J produces an actual load calculation. Rule-of-thumb sizing doesn't, and the pattern I see in the field is shops padding equipment size as a buffer against callbacks. With SEER2, that meant moving into higher equipment tiers at higher cost — while the flat-rate install price didn't move and the cost-of-doing-business calculation underneath it was still calibrated to 2021 inputs. The margin compression compounded.

The SEER2 cost increase was manageable. The static price book made it permanent.


What to Do Monday Morning

Pull three cost inputs and compare them to what your book assumes.

First: technician fully loaded hourly cost. Base wage plus payroll taxes, health insurance contribution, workers' comp allocation, and paid time out. Run the last full quarter of payroll data and divide by hours worked. Whatever that number is — compare it to the burden rate your price book is using. The gap, times billable hours per year, is the annual underpricing on labor alone.

Second: vehicle operating cost per billable hour. Actual fuel spend per truck last quarter, actual insurance premium, maintenance invoices, replacement-cost depreciation. Divide by actual billable hours. Compare to whatever the book assumes. If you don't know what the book assumes, call the vendor and ask them to show you the configuration. They can.

Third: overhead allocation per billable hour. Total fixed overhead for the quarter — rent, admin wages, software, marketing, non-truck insurance — divided by total billable hours across all trucks. If the book is allocating $22/hour and your actual rate is $31, every ticket is subsidizing overhead you've already spent.

Map the gap.

For each input, calculate the dollar difference between what the book assumes and what your real cost is. Multiply by average tickets per week. Annualize it. The number that comes out is your problem statement. It's what the stale configuration is costing you per year, on paper, before you've changed anything.

Rebuild from cost up.

A price book update without a current cost-of-doing-business calculation underneath it replaces one guess with another. The CODB calculation — what it actually costs to open the doors and put a truck on a call — is the foundation. The required billable rate that comes out of it is what goes into the book. Not a vendor default. Your number.

If your flat-rate software doesn't let you override the labor rate and overhead allocation at the line level, that's worth a direct conversation with the vendor. ServiceTitan allows it, as do most of the platforms running at this shop size. The feature exists. It usually wasn't configured during implementation, and nobody went back.

Revisit the three inputs every quarter. The cost environment since 2021 has not been stable, and there's no indication it's about to become so.


FAQ

My flat-rate software says it updates prices automatically — doesn't that solve this?

Automatic updates in most platforms push changes to parts pricing through distributor integrations, sometimes to labor rates based on regional wage indices. What they don't update is your shop's internal cost structure: your actual truck operating cost per hour, your real overhead allocation, your current burden rate. The automation handles the data it has access to. Your cost-of-doing-business numbers aren't in that system unless you entered them. Find out exactly what your platform's auto-update touches before assuming the problem is handled.

How often should I actually be updating my price book?

Quarterly reviews, two full rebuilds a year. A quarterly review means pulling the three inputs — burden rate, truck cost per billable hour, overhead allocation — and checking them against what the book is using. A full rebuild means going back to the cost-of-doing-business calculation and confirming the margin targets still hold given what costs have done. Annual is the cadence I see most often. Given how input costs have moved since 2021, annual isn't sufficient.

My close rate drops every time I raise prices. How do I know if the price is the problem or my techs' presentation is the problem?

Track close rate by technician, not just by price point. If the rate drops uniformly across all techs, you may be above market. If it's uneven — one tech closing well, another not — the price isn't the variable. Run three months of data, sort by tech and by job type, and look for the pattern. A pricing problem shows up systematically. A presentation problem shows up by technician. Most shops I've worked with assume price when the evidence points to presentation, because price is easier to adjust than behavior.

Should I build my own flat-rate book from scratch or start from a vendor template and adjust it?

Start from a vendor template, but treat it as structure only — not a number source. The template gives you the line-item logic, the way a flat-rate price assembles, the workflow for presenting it. Every labor rate, overhead allocation, and truck cost assumption inside it needs to be replaced with your actual figures from a current cost-of-doing-business calculation. A blank-page build from scratch is a long project. A template with your real inputs substituted in is not. The output is the same thing either way.

What gross margin should I be targeting on installs, and how do I know if my price book is hitting it?

I'm not going to give you an industry-standard number here, because the right target depends on your overhead structure, your market, and how you've defined what's in cost of goods sold. What I can tell you is how to measure what you're actually getting: pull install revenue for the last full quarter, subtract direct labor hours at actual burden rate and actual equipment cost, divide by revenue. That number is what your price book is producing on installs right now. Whether it's enough depends on your overhead allocation and margin target — but you need to see the number before you can answer the question.

If I raise prices mid-year, what do I do about existing maintenance agreement customers who expect flat-rate pricing on repairs?

Read the agreement language first. Most standard agreements specify either a fixed labor rate or a discount off published pricing — not a frozen price book. If yours says "flat-rate pricing per current schedule," you can update the schedule with reasonable written notice, typically 30 days. If you have a rate locked in for the agreement term, honor it and reprice at renewal. Mid-year renewals are a natural moment to reset rate expectations without triggering a cancellation conversation. Silently absorbing the cost difference for agreement customers is the same mechanism that eroded the 14-truck shop's install margins — distributed, invisible, and not recoverable until you're already behind.

Enjoyed this article?

Get articles like this in your inbox every Monday. Free, no spam.

More from The Backcharge