How to Find Your HVAC Profit Leak in Under 10 Minutes
Most HVAC owners know something is off. Revenue looks reasonable. The trucks are running. But the money that should be there — isn't. The problem isn't that the leak is hard to find. It's that nobody has handed you a clear framework for where to look first.
This is that framework. Five steps. Five numbers. If you have access to your CRM or basic financial records, you can complete this in 10 minutes and know exactly which of the five profit pillars is your biggest problem right now.
Work through each step in order. Don't skip ahead — the sequence matters because each number provides context for the next.
Before You Start: What You'll Need
Pull up your CRM (ServiceTitan, Housecall Pro, Jobber — whichever you use) and your accounting software. You'll need numbers from the last 90 days minimum, ideally the last 12 months. If you can only access 90 days, use that — the diagnostic will still work, the benchmarks just carry slightly less weight.
Have a notepad or open a blank doc. You're going to write down five numbers. By the end, you'll compare each against its benchmark and the lowest-scoring one is your leak.
The 5-Step Self-Diagnostic
Pull your total revenue and total direct costs for the last 90 days. Direct costs = fully loaded labor (not just payroll — see our labor burden guide for the correct calculation) plus parts and materials. Divide the difference by revenue.
Formula: (Revenue − Direct Costs) ÷ Revenue × 100 = Gross Margin %
Write this number down. If you're using payroll-only for labor, add 8–12 points to your direct costs before calculating — that's closer to reality.
How many service opportunities did your techs present to customers in the last 90 days — and how many converted to paid work? This is not your call-to-appointment rate. It's your on-site presentation-to-sale rate.
Formula: Jobs invoiced ÷ Opportunities presented × 100 = Close Rate %
If your CRM doesn't track presented opportunities separately, use this proxy: take your total dispatched calls and subtract any calls where the customer declined work after the tech arrived. That denominator divided into your completed jobs gives a close rate approximation.
Total residential service revenue for the last 90 days, divided by total residential service jobs completed. Exclude installations and maintenance agreements from both numbers — you want pure service call ticket size.
Formula: Residential service revenue ÷ Residential service jobs = Average Ticket
If you can't separate residential service from installations in your system, use total revenue ÷ total jobs as an approximation — just note that installations will inflate this number, so your real service ticket is probably lower than the result.
Get all five numbers calculated and benchmarked automatically.
The MarginPlug diagnostic runs this exact self-assessment across all five pillars — with benchmarks calibrated to your revenue band — and identifies your #1 leak with a prescribed fix. Takes 8 minutes.
Run the full diagnostic free Free during beta · No credit card · 8 minutesA callback is any return visit to a customer's property within 30 days of a prior job on the same equipment, where no new problem was identified. In plain terms: you fixed it, it wasn't fixed, you went back.
Formula: Callback jobs ÷ Total jobs × 100 = Callback Rate %
Pull your jobs from the last 90 days. Search for any address that appears more than once with the same equipment type, with the second visit within 30 days of the first. Divide that count by total jobs. If your CRM has a "callback" or "warranty return" job type, filter for that.
Of all the jobs you ran in the last 12 months, what percentage were from customers who had used you at least once before? This is your repeat customer rate — and it's the single best indicator of whether your business is building compounding value or running on an acquisition treadmill.
Formula: Jobs from returning customers ÷ Total jobs × 100 = Repeat Customer Rate %
Most CRMs track this automatically. Look for a "new vs returning customer" split in your reports. If you can't find it, pull your customer list for the last 12 months and count how many names appear more than once.
How to Read Your Results
You now have five numbers. Compare each to its benchmark. The metric furthest below its benchmark — especially if it's in "critical" territory — is almost certainly your biggest profit leak. Here's how to interpret each combination:
| Your weakest metric | What it signals | First move |
|---|---|---|
| Gross margin below 44% | Labor burden miscalculation or pricing book is stale — structural Economics problem | Run the full labor burden calculation, then audit your flat rate book |
| Close rate below 60% | Presentation process is broken or techs aren't offering options on-site | Implement a 3-option presentation framework on every service call |
| Avg ticket below $400 | Techs closing but not capturing full value — or wrong call mix | Review your top-performing tech's ticket vs your average — the gap shows the opportunity |
| Callback rate above 5% | Quality or diagnostic failures on first visit — costing $9K–$18K/year in pure labor | Audit your 10 most recent callbacks — look for the common denominator (tech, job type, part) |
| Repeat rate below 20% | Acquisition treadmill — every dollar of revenue requires full CAC spend | Launch a maintenance agreement offer embedded in every service call — even a 5% conversion rate changes the math significantly |
What If Multiple Metrics Are Below Benchmark?
This is common — most businesses in the $500K–$3M range have two or three active leaks simultaneously. The prioritization rule is simple: fix Economics first, then Sales, then Delivery, then Flywheel.
Economics (gross margin and labor burden) is the foundation. If your cost calculations are wrong, every other metric is measured against a distorted baseline. There's no point optimizing your close rate if your pricing is off — you'll just close more underpriced jobs faster.
Sales comes second because it's the highest-leverage, fastest-moving lever. A 5-point improvement in close rate on 1,000 annual jobs at $500 average ticket = $25,000 in recovered revenue with no additional marketing spend.
Delivery (callbacks) and Flywheel (repeat rate) are important but slower-moving. The fixes are real but take 60–120 days to show up in the numbers. Start them in parallel but don't wait on Economics and Sales fixes to begin.
What Comes After This 10-Minute Diagnostic
This self-assessment gives you a directional answer — which pillar is weakest and roughly why. What it doesn't give you is a precise dollar estimate of the leak, a benchmark calibrated to your exact revenue band, or a prioritized prescription for what to fix first.
That's what the full MarginPlug business health score delivers. It runs the same five pillars with your actual inputs, benchmarks each against companies at your revenue level, attaches a dollar estimate to your biggest leak, and tells you in plain language what to fix first and why.
If you ran through the five steps above and found one number significantly below its benchmark — especially if it's in the critical range — the full diagnostic is the logical next step. It takes 8 minutes and the result is a scored report you can actually act on, not a general framework to interpret yourself.
Turn your 10-minute self-assessment into a full scored diagnostic.
MarginPlug benchmarks all five pillars against companies at your exact revenue level, attaches a dollar estimate to your biggest leak, and gives you a prioritized prescription. Free during beta.
Get my full diagnostic free Free during beta · No credit card · Results in minutes