Free audit
Resources

Cost per booked job: the only HVAC marketing metric that matters

By Neeraj, Akarsh Digital · Published 18 September 2026 · 7 min read

The short answer

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.

Illustrative maths. Akarsh Digital has no client results to publish as of September 2026. The figures below use attributed 2026 third-party benchmarks and your own inputs. They are worked examples, not a forecast or a promise.
ChannelMonthly spendLeadsBook rateBooked jobsCost per booked jobDecision
Local Services Ads$1,5002438%9$167Scale
Google Search Ads$1,000730%2$500Hold, fix landing page
Meta offer campaign$6002015%3$200Hold
Angi$8001212%1.4$571Kill
Illustrative worked example using 2026 third-party benchmark ranges. Management fee excluded for clarity; include it in your own version.

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?

LineWhy it is there
Answer rateAre we picking up?
Median response timeAre we picking up fast enough?
Leads by sourceWhere is demand coming from?
Booked appointmentsDid demand become work?
Cost per booked job, by channelWhere does the next dollar go?
Reviews addedIs the ranking input moving?
One recommendationThe one decision for this week
No impressions, no click-through rate, no engagement, no followers.

That is the scoreboard on every tier. How the reporting is built. Related: LSA vs PPC and speed to lead.

FAQ

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.

Free, 48 hours, no pitch

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.