- Stop reporting on cost-per-lead. The only HVAC paid-media number that survives a P&L review is cost-per-booked-install.
- Split your Google Search account into three campaigns by job type (emergency repair, replacement, maintenance), then give each its OWN conversion action. Pool them and Smart Bidding will quietly fill your calendar with cheap tune-ups.
- Upload booked-install revenue back per-campaign through offline conversion import. Account-level uploads re-equalize a tune-up form-fill and a replacement form-fill, which is the exact problem the split was supposed to fix.
- Treat Local Services Ads (LSA) disputes as a discipline, not a refund reflex. Dispute only on Google’s allowed reasons (wrong area, spam, not a real lead). Never dispute because “they didn’t book.”
- CSR pickup time on paid calls is a media variable, not an ops problem. Slow pickup on a paid lead is ad spend evaporating.
Questions this article answers:
- Why is my HVAC cost-per-lead fine but my booked-install revenue isn’t?
- How should I split my Google Ads account between tune-up, repair, and replacement?
- What LSA disputes will Google actually credit back?
- What CSR pickup-time standard protects paid-lead ROI?
- When is Meta worth running for HVAC?
- What channel mix should an HVAC contractor run?
More HVAC Leads Won’t Fix a Calendar Full of Cheap Tune-Ups
If you’re spending real money on HVAC paid media and your cost-per-lead looks healthy but your install revenue doesn’t, you don’t have a lead-volume problem. You have a lead-mix problem.
Smart Bidding is doing exactly what you told it to do. It finds the cheapest conversion. The cheapest conversion in HVAC is almost always a tune-up.
This is the practitioner version of how to generate HVAC leads in 2026 for residential contractors. Three failure modes do most of the damage:
- A Google Search account that pools tune-up and replacement intent into one bidding pool.
- An LSA setup where nobody disputes anything.
- A CSR (the person answering the phone) who is slow to pick up paid calls, or doesn’t pick them up at all.
Fix those and you don’t need more leads. You need to stop burning the ones you already pay for.
The rest is mechanics. Account structure, conversion plumbing, dispute discipline, and the dispatch handoff.
Cost-Per-Booked-Install Is the Only Number That Survives a P&L Review
Cost-per-booked-install is total media spend divided by jobs that actually got on the truck and installed. It is the only HVAC paid-media metric that ties ad spend to revenue.
Everything upstream of it (CPL, cost-per-call, form-fills) is a directional signal, not a P&L number.
The math is simple. Your maximum profitable CPL equals your gross profit per install times your lead-to-install conversion rate. A replacement lead with thousands of dollars of gross profit behind it and a real close rate can defend a CPL that would bankrupt a tune-up campaign. A tune-up lead with a small first-transaction margin cannot defend the same CPL.
Those two CPLs cannot share a bidding pool. They aren’t the same business.
This is the same argument we make in our deeper write-up on HVAC cost-per-booked-install benchmarks. Stop benchmarking CPL. Benchmark cost-per-booked-install by job type and your campaign decisions get a lot easier.

The Three-Campaign Job-Type Split Fails Without Per-Campaign Offline Conversions
Split your Google Search account into three campaigns by job intent: Emergency Repair, Replacement Consideration, and Maintenance/Tune-Up. Then give each campaign its own conversion action. Then feed booked-install revenue back to that specific action through offline conversion import.
Skip the conversion plumbing and the split makes things worse, not better.
What each campaign targets, and what to negative out
Emergency Repair runs on “AC not cooling,” “furnace not working,” “no heat,” “emergency HVAC.” Tight target CPA, high bids, capacity-bound. Negative out: “tune up,” “maintenance,” “install,” “replacement,” “cost,” “financing,” “new system.”
Replacement Consideration runs on “new AC unit cost,” “HVAC replacement,” “furnace installation,” “heat pump vs furnace,” brand and tier queries. Longer consideration window, higher target CPA, lead form and call extensions both. Negative out: “repair,” “not working,” “tune up,” “maintenance,” “service.”
Maintenance/Tune-Up runs on “AC tune up,” “furnace inspection,” “HVAC maintenance plan.” Treat it as a customer-acquisition channel for your membership program, not a profit center on the first transaction. Lowest target CPA. Negative out: “replacement,” “install,” “not working,” “emergency.”
The per-campaign offline conversion upload rule
Here is the part everyone skips.
Each campaign needs its OWN conversion action in Google Ads, named by job type: “Repair Booked,” “Replacement Booked,” “Tune-Up Booked.” Then you upload booked-install revenue back to that specific conversion action through offline conversion import, with the actual install value (not a fixed lead value) on the replacement conversions.
Upload at the account level into one shared “Lead” conversion action and, without value-based bidding signals, Smart Bidding treats a small tune-up form-fill and a five-figure replacement form-fill as equivalent training signal. It then paces back toward whichever campaign converts fastest, which is almost always tune-ups.
The campaign split looks intact on the surface. The bidding behavior is identical to no split at all.
Why the split without the plumbing is worse than no split at all
Without per-campaign value feedback, Smart Bidding still equalizes value across the account. But now you’ve also fragmented your conversion data into three smaller pools, each with weaker statistical signal.
You’ve made the bidding model dumber and given it the same flawed objective. That’s the worst of both worlds.
Our write-up on enhanced conversions for leads troubleshooting walks through the match-rate side of this. Same principle here: the algorithm is only as smart as the conversion data you feed it.
LSA Dispute Discipline Protects Your Spend and Your Lead Quality Data
Google Local Services Ads (LSA) disputes are how you recoup spend on invalid leads and, just as importantly, how you keep your own lead-quality reporting honest. A contractor who never disputes is silently absorbing the cost of spam, out-of-area calls, and wrong-service inquiries into their CPL. A contractor who disputes everything wastes operational time and risks denials.
What Google will and won’t credit back
Per Google’s LSA dispute policy, valid dispute reasons include:
- Caller is outside your service area
- Spam or robocall
- Customer asking about a service you don’t offer
- Not a real lead (wrong number, hang-up with no message)
Dispute these aggressively and document the reason from the call log.
Invalid reasons: “they didn’t book,” “price shopper,” “competitor checking us out,” “didn’t show up for the appointment.” Disputing on these grounds gets denied.
Contractors leave real money on the table by skipping this entirely.
The 48-hour review cadence
Every LSA call gets reviewed within 48 hours by someone who actually listens to the recording or reads the CSR notes. Disputes get filed only on documented criteria. The CSR’s notes (“caller wanted duct cleaning, we don’t offer”) become the dispute justification.
Build this into the weekly CSR routine, not the agency’s monthly report.
The qualified-call rate is the metric underneath all of this. If your LSA qualification rate is low, dispute discipline is where you get most of it back before you start touching bids.
CSR Pickup Time on Paid Calls Is a Media Variable, Not an Ops Problem
Ring time on a paid HVAC call is ad spend evaporating. The classic Lead Response Management study found that the odds of qualifying a web lead drop sharply once response time crosses the first few minutes. The same curve exists on inbound calls, just compressed.
A homeowner with a broken AC in August is calling the next contractor on the list quickly.
That is why pickup time is a media metric, not an ops metric. The agency’s job is to report pickup time on the paid-acquired call cohort separately from organic and repeat-customer calls. Those cohorts have different economics. Lumping them together hides the leak.
What a real dispatch handoff looks like
The defensible standard on paid calls:
- Fast live pickup, well inside typical industry call-center service levels (most contact-center benchmarks target answering inside 20 seconds).
- Callback on paid form-fills inside a few minutes during business hours.
- Scripted qualification that separates repair from replacement intent in the first 30 seconds of the call.
- A confirmed appointment slot before the call ends. Not “we’ll call you back to schedule.” An actual time on the calendar.
Our HVAC call tracking and attribution stack breaks down how to measure the paid-cohort pickup time without conflating it with the rest of the call volume. If you can’t pull that report today, that’s the first thing to fix.
The Channel Mix: What LSA, Search, and Meta Are Actually Good At
Channel selection comes down to intent stage, not channel evangelism. Each platform is good at one part of the funnel and bad at others. Force the wrong channel at the wrong stage and the booked-install math collapses.
LSA: capacity-bound, not creative-bound
LSA wins on low-funnel emergency repair intent. Pay-per-lead model, Google Guaranteed badge, top placement above the regular ad slots. The constraint isn’t creative or copy. It’s CSR capacity.
If your CSR can’t pick up fast, LSA budget scales linearly into waste. If pickup is tight, LSA is usually the lowest cost-per-booked-install channel in residential HVAC.
Google Search: where the replacement conversation happens
Google Search with the three-campaign split is where replacement consideration earns its keep. The buyer is researching brands, financing, equipment tiers, and unit sizing. They are NOT in crisis mode.
This is where landing-page content, financing offers, and the per-campaign offline conversion feedback do their work. Replacement Search is also where Smart Bidding can find real value, IF you’ve fed it real install revenue.
Meta: financing creative yes, emergency repair no
Meta works for HVAC when the offer is financing-led replacement consideration. End-of-life equipment messaging, seasonal financing promos, “is your system over 10 years old” hooks.
It does NOT work for emergency repair. Emergency intent doesn’t exist on a Meta feed. Nobody scrolling Instagram with a dead AC is filling out a lead form. They’re calling somebody.
The common failure: a contractor runs Meta lead forms with a cheap tune-up offer, the CPL looks great, and the booked rate on those leads sits in the single digits. The leads are real. They’re just tire-kickers. Meta lead forms in HVAC have to be tied to a real consideration moment (equipment age, financing eligibility), not a discount fishing expedition.
A workable starting allocation
No two contractors split this the same way, but a starting frame for a residential contractor with a healthy CSR:
- Roughly half of budget into LSA, scaled to CSR capacity.
- Roughly a third into the three-campaign Search split, with the heaviest weight on Replacement.
- The remainder into Meta financing-led replacement creative during shoulder seasons.
Adjust by season. LSA and emergency Search scale in cooling and heating crises. Meta replacement creative fills the slower months (March, October) when nothing is actively breaking.
Book economics, not channel CPL, drive the rebalance.
Frequently Asked Questions
Why is my HVAC cost-per-lead fine but my booked-install revenue isn’t?
Your conversion data is training Smart Bidding to chase the cheapest job type, not the most profitable one. Almost always this is a pooled conversion action where tune-up form-fills, repair calls, and replacement leads all feed one shared “Lead” conversion.
The platform optimizes toward whichever converts fastest, which is tune-ups. Cost-per-booked-install by campaign is the diagnostic. If you can’t pull that report, that’s the first fix.
How should I split my Google Ads account between tune-up, repair, and replacement?
Three separate campaigns by intent (Emergency Repair, Replacement Consideration, Maintenance) with their OWN conversion actions and per-campaign offline conversion uploads of booked-install revenue.
Each campaign gets its own target CPA, its own negative keyword list to prevent cross-bidding, and its own success metric. Without the per-campaign conversion plumbing, the split is cosmetic and Smart Bidding re-equalizes value across the account.
What LSA disputes will Google actually credit back?
Per Google’s LSA dispute policy, Google credits disputes on documented operational reasons: caller outside your service area, spam or robocall, a service you don’t offer, or not a real lead (wrong number, hang-up).
Google will NOT credit “they didn’t book,” “price shopper,” or “no-show.” Review every LSA call within 48 hours and dispute only on documented criteria.
What CSR pickup-time standard protects paid-lead ROI?
Fast live pickup on paid calls (most contact-center benchmarks target answering inside 20 seconds), and a callback inside a few minutes on paid form-fills during business hours.
Past that, booked rates drop because the homeowner is calling the next contractor on the list. Report pickup time on the paid-acquired call cohort separately from organic and repeat-customer calls. The economics are different and lumping them hides the leak.
When is Meta worth running for HVAC?
Meta works for financing-led replacement consideration and equipment-age hooks. It fails for emergency repair. Emergency intent doesn’t exist on a Meta feed. Nobody with a dead AC fills out a lead form.
If your Meta CPL looks great but booked rates sit in the single digits, the offer is probably a discount tune-up attracting tire-kickers. Tie the Meta offer to a real consideration moment (system age, financing eligibility), not a price promo.
What channel mix should an HVAC contractor run?
A reasonable starting frame: roughly half of budget in LSA scaled to CSR capacity, a third in the three-campaign Google Search split weighted toward Replacement, and the rest in Meta financing-led creative during shoulder seasons.
Adjust by season. LSA and emergency Search scale in cooling crises. Meta replacement creative fills March and October. Book economics by booked-install CPL, not channel CPL, drive the rebalance.
Stop Burning the Leads You Already Pay For
If your Google Ads account has one pooled “Lead” conversion action, if you’ve never disputed an LSA call, or if you can’t pull pickup time on the paid-call cohort separately, you’re almost certainly burning leads you already paid for.
Book a free strategy call with Elevarus and we’ll map the three-campaign split, set up per-campaign offline conversion import, and build a CSR pickup standard against your actual call data.