Marketing Metrics and KPIs HVAC Companies Should Track

Marketing Metrics and KPIs HVAC Companies Should Track

By Christoph Olivier, Founder, CO Consulting.

Last reviewed: July 2026

Most HVAC dashboards track the wrong things. They show cost per lead, website traffic, and impressions, then leave the owner guessing whether marketing actually put trucks on driveways. The metrics that matter tie spend to booked revenue: cost per booked job, booked-call rate, average ticket, revenue per lead by channel, membership attach rate, and customer LTV. Track those and you can defend every marketing dollar. This guide covers the numbers to watch, the vanity metrics to drop, and how to build a simple dashboard that connects the two. If you want the pure math of calculating return, read our companion piece on how to measure marketing ROI for HVAC.

The short list of metrics that actually matter

For a home-services shop, the KPIs worth a dashboard slot are: cost per booked job, booked-call rate, average ticket, revenue per lead by channel, channel cost per job (LSA, Google Ads, shared leads), membership attach rate, customer LTV, and review velocity. Pick five to seven that map to your biggest gap. Everything else is a diagnostic you check when a headline number moves.

The organizing principle is simple. Every metric should trace back to one question: did this spend produce booked revenue? A number that cannot answer that question does not belong on the owner’s screen. Track leads if you must, but never stop at a lead, because a lead that never books is a cost with no return.

Cost per booked job, not cost per lead

Cost per lead hides the phone. Two shops can pay the same $100 per lead and get wildly different results once answer rate and booking rate are counted. Cost per booked job is the real acquisition number: total channel spend divided by jobs actually put on the board. At an industry answer rate near 68 percent and booking rate near 42 percent, a $100 lead becomes roughly $349 per booked job.

The spread is brutal and it lives in your own operation. Recent 2026 benchmark data shows a shop with a 90 percent answer rate and 65 percent booking rate turns a $140 call into a $240 cost per booked job. The same $140 call at a 68 percent answer rate and 40 percent booking rate costs $514 per booked job. Same media spend, double the acquisition cost, entirely because of how the phone gets worked. That is why booked-call rate sits next to cost per booked job on the dashboard.

MetricWhat it measuresWhy it beats cost per lead
Cost per lead (CPL)Spend per raw inquiryIgnores whether the call was answered or booked
Answer ratePercent of calls picked upMissed calls are paid-for leads thrown away
Booked-call ratePercent of answered calls turned into appointmentsThe lever that moves acquisition cost most
Cost per booked jobSpend per appointment on the boardThe number you can compare to average ticket

Booked-call rate and average ticket

Booked-call rate is the percent of answered marketing calls that become a scheduled appointment. It is the cheapest lever you own, because fixing the phone costs nothing in media. Average ticket is the revenue per completed job: roughly $400 to $700 for residential service, while AC-repair paid campaigns average a $3,174 ticket because repair calls convert into system sells.

Pair the two and you get a booked-job value. If your average ticket is $500 and your cost per booked job is $240, you are buying revenue at better than 2 to 1 before pull-through. Track average ticket by channel, not just blended, because a repair lead and a replacement lead are different businesses. Growing that gap between ticket and acquisition cost is the core of any revenue growth plan for HVAC contractors.

Revenue per lead by channel, and channel cost per job

Blended numbers lie. A shop with a $296 to $350 blended customer acquisition cost can still have one channel losing money and another printing it. Revenue per lead by channel, and its sibling cost per booked job by channel, tell you where to move budget. This is the single report that changes how an owner spends.

Here are current 2026 channel benchmarks worth putting on the board. Local Services Ads under the Google Verified badge remain the cheapest high-intent channel; shared-lead marketplaces are the most expensive per booked job.

ChannelCost per leadCost per booked jobNotes
Google Local Services Ads (LSA)~$51-$95~$116-$190Pay-per-lead, top of SERP, ~44% book rate
Google Search Ads (AC repair)~$231varies~$3,174 avg ticket, ~2.9x ROAS on repair-to-replace
Local SEO / Google Business ProfileLowest long-runCompoundingDominant for near-me; cheapest over time
Membership reactivation (email/text)~$100 CACCheapest revenue there isOne email campaign can pull $60K+
Angi / HomeAdvisor shared leadsVariable~$542Sold to 3-8 contractors; 10-23% junk

Read that table and the move is obvious: shift budget from shared leads at roughly $542 per booked job toward LSA near $168 and toward reviews and Google Business Profile. Winning the map pack is why SEO for HVAC contractors earns its own dashboard row rather than getting buried in a blended CPL.

Membership attach rate and customer LTV

Membership attach rate is the percent of jobs that convert into a maintenance agreement. It is the most valuable marketing metric an HVAC shop can move, because it multiplies the value of every customer you already paid to acquire. Maintenance plans run 45 to 65 percent gross margin, generate $1 to $3 of pull-through work per $1 of contract, and flatten shoulder season.

The LTV math makes the case. A single-job customer is worth roughly $15,340 over a 7 to 10 year relationship. A membership-attached customer is worth about $47,200, more than three times the lifetime value. That is why judging a campaign on first-job revenue undersells it badly. A lead that becomes a member is worth triple, and your dashboard should carry LTV by segment so nobody optimizes for cheap one-off calls at the expense of the recurring base.

Customer typeApprox. LTVAcquisition cost
Single-job customer~$15,340$300-$500 (install lead)
Membership-attached customer~$47,200~$100 for a maintenance-plan customer

Review velocity, the local ranking metric

Review velocity is the count of new reviews per month, weighted for recency. It belongs on the marketing dashboard because it is both a map-pack ranking factor and a trust signal, and its value depends on freshness. A shop with 60 reviews and 20 in the last 60 days beats a shop with 100 stale ones.

The working benchmark is 6 to 10 new reviews per month, with some operators pushing 3 to 5 per week to hold competitive positions. Track velocity and recency, not just total count. One note on compliance: review-request texts can be treated as marketing under the TCPA, so keep clear opt-in and opt-out language on any automated request. This matters more now that the Google Guarantee money-back promise ended in November 2025 and the badge consolidated into Google Verified, which signals vetting only. Your trust story rides on reviews, warranties, and your own guarantee.

Call-tracking attribution: how the numbers get connected

None of these metrics exist without attribution. Call tracking tags every call and form by source down to the keyword and landing page, then pushes that tag into your CRM so completed revenue traces back to the channel that caused it. Without it, you are guessing, and the six-month lag between spend and credited revenue is exactly how owners talk themselves into believing marketing barely breaks even.

The setup that works: use a call-tracking platform such as CallRail, CallTrackingMetrics, or WhatConverts to attribute every call to the campaign, ad group, and keyword. Pipe the tag into ServiceTitan or Housecall Pro. Push booked-job status back into Google Ads as an offline conversion so the platform optimizes toward jobs, not clicks. That closed loop is what turns a dashboard from a vanity screen into a spending decision.

How to build a simple HVAC marketing dashboard

A useful dashboard fits on one screen and answers one question: is marketing producing booked revenue? Do not track everything. Pick the five to seven KPIs tied to your biggest gap, wire attribution underneath them, and review weekly. Here is the build order.

  1. Set the source of truth. Connect call tracking to your CRM (ServiceTitan or Housecall Pro) so every booked job carries a channel tag.
  2. Pull marketing spend by channel. LSA, Google Ads, SEO retainer, shared leads, email or text. One row each.
  3. Add booked jobs by channel. Count appointments on the board, not raw leads.
  4. Calculate cost per booked job per channel. Spend divided by booked jobs. This is your headline table.
  5. Layer in average ticket and revenue per lead by channel. Now each channel shows cost in and revenue out.
  6. Add the compounding metrics. Membership attach rate, LTV by segment, review velocity. These catch value the first-job number misses.
  7. Review weekly, decide monthly. Weekly to catch a dead channel, monthly to move budget.

If building and maintaining this feels like a second job, that is the honest signal to bring in help. A marketing partner for HVAC contractors should hand you this dashboard, not a monthly PDF of impressions. If you want a second set of eyes on your numbers, book a consultation and we will map your spend to booked revenue.

Vanity metrics to ignore

Vanity metrics look like progress but do not connect to booked jobs. Drop them from the owner’s screen, or at least demote them to diagnostics. They make a report look busy while hiding whether marketing paid for itself.

  • Impressions and reach. Nobody paid you to be seen. Track booked calls instead.
  • Raw website traffic. Useful as a diagnostic, meaningless as a headline. Sessions do not fix furnaces.
  • Social media followers and likes. Rarely tie to a service call for a home-services shop.
  • Cost per lead, on its own. Without booked-call rate and cost per booked job next to it, CPL flatters the wrong channels.
  • Keyword rankings in isolation. A number-one ranking that books no calls is a trophy, not revenue.
  • Email open rate as a finish line. Opens are a step; booked reactivation revenue is the metric.

One more thing worth saying plainly: no honest marketer guarantees a specific number of jobs. Anyone promising guaranteed leads or rankings is selling the vanity version. The measurable version is a dashboard that shows cost per booked job trending down and revenue per channel trending up.

Frequently asked questions

What is the single most important marketing KPI for an HVAC company? Cost per booked job. It divides total channel spend by appointments actually scheduled, so it survives contact with your answer rate and booking rate. Cost per lead can look great while cost per booked job quietly doubles because calls go unanswered or unbooked. Compare cost per booked job to average ticket and you can defend every dollar.

How is cost per booked job different from cost per lead? Cost per lead counts raw inquiries. Cost per booked job counts only the calls that became appointments after answer rate and booking rate are applied. A $100 lead can become $240 or $514 per booked job depending entirely on how the phone gets worked. The booked-job number is the one you can trust.

Why track customer LTV instead of first-job revenue? Because a membership customer is worth about $47,200 over their lifetime versus roughly $15,340 for a single-job customer. Judging a campaign on first-job revenue undervalues any lead that becomes a member by more than three times. LTV by segment keeps you from optimizing for cheap one-off calls that never recur.

How many reviews per month should an HVAC company aim for? A working benchmark is 6 to 10 new reviews per month, weighted for recency, with competitive markets pushing 3 to 5 per week. Recency matters more than total count for the map pack. Keep opt-in and opt-out language on automated review-request texts, since those can count as marketing under the TCPA.

What tools connect marketing spend to booked revenue? A call-tracking platform such as CallRail, CallTrackingMetrics, or WhatConverts tags each call by source, then feeds ServiceTitan or Housecall Pro so completed revenue traces to the channel. Pushing booked-job status back to Google Ads as an offline conversion closes the loop and lets the platform optimize toward jobs, not clicks.

Which marketing metrics should I stop tracking? Demote impressions, reach, raw traffic, follower counts, keyword rankings in isolation, and email open rate as a finish line. They look like progress without connecting to booked jobs. Keep them as diagnostics if you like, but never let them headline the owner’s dashboard in place of cost per booked job and revenue per channel.