Cost per booked job: the only HVAC marketing metric that matters
Cost per booked job is monthly channel spend divided by appointments booked on your calendar from that channel. In 2026, Local Services Ads run $168 to $190 per booked HVAC job and Angi about $542. Scale a channel under 10% of average ticket, hold at 10% to 15%, kill above that.
- Cost per booked job
- Total spend on a channel in a month, including ad spend and management fees, divided by the number of appointments booked on your calendar from that channel. Defined in writing so there is nothing to argue about.
Why is cost per booked job the metric that matters?
Because every other number on a marketing report can go up while revenue goes down. Impressions, clicks, click-through rate, cost per click and even cost per lead all measure activity before the moment that matters, which is a homeowner on your calendar. Top-performing HVAC operators track answer rate, booking rate and cost per booked job. The rest track what the platform dashboard shows them.
How do you calculate it by channel?
Cost per booked job = (ad spend + share of management fee) / booked appointments from that channel.
| Channel | Monthly spend | Leads | Book rate | Booked jobs | Cost per booked job | Decision |
|---|---|---|---|---|---|---|
| Local Services Ads | $1,500 | 24 | 38% | 9 | $167 | Scale |
| Google Search Ads | $1,000 | 7 | 30% | 2 | $500 | Hold, fix landing page |
| Meta offer campaign | $600 | 20 | 15% | 3 | $200 | Hold |
| Angi | $800 | 12 | 12% | 1.4 | $571 | Kill |
Source: 2026 HVAC Contractor Market and Lead-Gen Agency Opportunity Briefing, third-party benchmark data, August 2026.
What is the scale, hold or kill rule?
- Scale a channel when cost per booked job sits under 10% of average ticket and you have truck capacity to absorb more.
- Hold when it sits between 10% and 15% of average ticket. Fix the answering or the landing page before adding spend.
- Kill when it persistently exceeds 15% of average ticket, or when the lead is shared with 3 to 8 competitors and closes at 8% to 15%, which is the aggregator profile.
Why does the answering process change the number more than the ad does?
Take the LSA row above. At a 38% book rate, nine jobs cost $167 each. Drop the book rate to 25% because a third of leads sat for four hours, and the same $1,500 buys six jobs at $250 each. Nothing about the ad changed. The channel got 50% more expensive because of what happened after the lead arrived. That is why we fix the two-minute response before we touch a budget.
How do you define "booked job" so nobody argues?
An appointment scheduled on your calendar, sourced from a tracked channel. Not a lead, not a conversation, not a quote request that never got a time. It has to be on the calendar with a source attached. That definition is in our service agreement because the Tier 2 guarantee, blended cost per booked job under $350 after a 60-day baseline, depends on it.
What does the Monday page look like?
| Line | Why it is there |
|---|---|
| Answer rate | Are we picking up? |
| Median response time | Are we picking up fast enough? |
| Leads by source | Where is demand coming from? |
| Booked appointments | Did demand become work? |
| Cost per booked job, by channel | Where does the next dollar go? |
| Reviews added | Is the ranking input moving? |
| One recommendation | The one decision for this week |
That is the scoreboard on every tier. How the reporting is built. Related: LSA vs PPC and speed to lead.
Questions HVAC owners ask
What is a good cost per booked job for HVAC?
On Local Services Ads in 2026, $168 to $190. On aggregators like Angi, roughly $542. A useful rule: if cost per booked job persistently exceeds 12% to 15% of your average ticket on a channel, the channel mix is wrong.
Why not cost per lead?
Because a $20 lead that never books is more expensive than a $63 lead that books 40% of the time. Cost per lead rewards cheap channels. Cost per booked job rewards channels that put a truck in a driveway.
How do I track it without an agency?
A tracking number per channel, a source field on every job in your field service software, and a monthly spreadsheet: spend by channel divided by jobs booked from that channel. It is tedious, which is why nobody does it, which is why it works.
Find out what your phone missed last week.
Free Response Gap Audit. We test your lead form, time three calls, screenshot your search presence and send a one-page breakdown inside 48 hours. No pitch inside it.
