Skip to content
Paid media playbooks·Jun 18, 2026·11 min read

Google Ads for HVAC companies: the account structure we run

The three-tier account structure we run for HVAC — emergency repair, maintenance, installation — plus the call tracking and missed-call backstop that turns clicks into booked jobs. With real before-and-after numbers.

P
PYKSL Editorial
Paid media
Google Ads for HVAC companies: the account structure we run
TL;DR
  • 01

    Structure an HVAC account by service and intent, not geography: separate campaigns for emergency repair, maintenance, and installation, because each has a different searcher, margin, and close rate. Tight ad groups per service, each pointed at a matching service-plus-suburb landing page.

  • 02

    In HVAC the money is on emergency intent, after hours, on the phone. Generic "HVAC services" campaigns burn budget on tyre-kickers. The conversion backstop — call tracking plus a missed-call text-back agent — matters as much as the campaign structure.

  • 03

    One account we rebuilt this way (CS-014) went from $1,500 to $6,800/mo in spend, an 11% to 28% close rate, and a 60% to 4% after-hours missed-call rate, cutting cost per booked job from $112 to $66 — booked out six weeks ahead by month three.

Why generic Google Ads waste HVAC spend

HVAC demand is not one market. It is three markets stacked on top of each other: the person whose furnace died at 11pm in January, the person booking a spring tune-up, and the person pricing a full system replacement. Same trade, three completely different searchers, three different margins, three different close rates. A campaign that treats them as one audience overpays for all three.

The most common HVAC account we audit has a single "HVAC Services" campaign, broad-match keywords, one landing page (usually the homepage), and no call tracking. It looks like it is running. Mostly it is buying clicks from people comparison-shopping a $9,000 install, while the $400 emergency repair — the job that actually closes on the phone in ten minutes — gets the same generic ad and the same slow homepage.

Emergency intent is the whole game in this trade. "ac not cooling", "furnace blowing cold air", "no heat" — these searches convert at multiples of "hvac company near me", and they convert by phone, fast, often after hours. If your account is not built to win those specific moments, you are subsidising your competitors' emergency leads with your own maintenance budget.

The fix is rarely more budget. It is structure. Spend only follows intent when the account is shaped around intent in the first place.

The account structure we run

We build HVAC accounts on three intent tiers. Each tier is its own campaign, with its own budget and its own definition of a conversion.

Tier one is emergency repair — and within it, we split cooling and heating into separate campaigns or separately-budgeted ad groups, because they are seasonal opposites and you want to shift money between them as the weather turns. Keywords are tight and symptom-led: "ac repair", "emergency ac repair", "ac not cooling", "furnace repair", "no heat", "furnace not working". Exact and phrase match, never broad. Ads lead with speed and availability — 24/7, same-day, tech dispatched fast — and they point at a service-plus-suburb landing page with the phone number above the fold, not the homepage.

Tier two is maintenance and tune-ups. Lower urgency, lower ticket, but high lifetime value, because a tune-up customer becomes a repair and then a replacement customer. Keywords: "ac tune up", "furnace maintenance", "hvac service plan". Ads sell the membership or the seasonal check. This tier runs on a tighter budget and can tolerate slightly broader match, because the searcher is calmer and the click is cheaper.

Tier three is installation and replacement: the big ticket, the long consideration cycle, the lowest close rate per click. Keywords: "ac installation cost", "furnace replacement", "new hvac system", "heat pump installation". This is where Performance Max earns its place — but fenced, with its own budget cap, a strong asset group per system type, and audience signals from your real customer list, so it does not cannibalise the emergency and branded terms that Search already wins cheaply.

A warning on Pmax: run it for installation and brand-adjacent discovery, never as the whole account. Unfenced Performance Max in an HVAC account will quietly absorb your emergency-repair conversions, take the credit, and convince you it is working. Cap it, feed it good conversion data, and keep watching what it is actually claiming.

Campaign (intent)Example ad groupsKeyword styleLands on
Emergency repair — coolingAC repair, AC not cooling, emergency ACExact / phrase, symptom-ledAC-repair + suburb page, phone above the fold
Emergency repair — heatingFurnace repair, no heat, furnace not workingExact / phrase, symptom-ledHeating-repair + suburb page
Maintenance / tune-upsAC tune-up, furnace maintenance, service planPhrase, plan-ledMembership / seasonal tune-up page
Installation / replacementAC install, furnace replacement, heat pumpPhrase + fenced PmaxSystem-replacement quote page
BrandBusiness name + variantsExactHomepage / reviews page
The HVAC account map we ship: campaign → ad groups → keyword style → destination.

Stacking LSAs on top of Search

Google's Local Services Ads sit above the regular Search results — the "Google Guaranteed" badge block at the very top of the page. For HVAC you want both LSAs and Search, not one or the other. They occupy different parts of the same results page, which means you can win that page twice.

LSAs are pay-per-lead, not pay-per-click, and they are gated behind license and insurance verification — which is exactly why they are worth it. Fewer advertisers clear the bar, the badge carries real trust on an emergency search, and you only pay when someone actually calls or messages. We treat LSAs as the top-of-page trust layer and Search as the precise, keyword-controllable layer beneath it.

The stack works like this: LSAs win the badge slot and the "verified, fast, local" impression. Search wins the specific symptom queries with tightly matched ads and matching landing pages. Branded Search defends your name, so a competitor's LSA does not intercept someone who already went looking for you. Together they make the whole top of the page feel like you.

One discipline decides whether LSAs are cheap or a slow leak: dispute bad leads aggressively — wrong numbers, spam, out-of-area, jobs you do not do. Google credits legitimate disputes, and the operators who treat disputing as a weekly habit pay materially less per real lead.

Call tracking and the missed-call backstop

Here is the part most HVAC accounts get wrong, and it has nothing to do with the campaigns. In this trade, the conversion happens on the phone. If you cannot see which campaign, ad group, and keyword drove each call, you are optimising blind — and you will eventually switch off the campaigns that are working because they "look" unprofitable on clicks alone.

We wire CallRail into Google Ads and GTM with dynamic number insertion, so every call is attributed back to the exact keyword that earned it. Now the emergency-repair campaign gets judged on booked jobs, not clicks, and budget moves toward what actually books.

Then the backstop. HVAC calls arrive at night, on weekends, mid-job when the crew has its hands full. In the account we later wrote up as CS-014, the after-hours missed-call rate was above 60% before we touched anything — most of the emergency demand, the highest-intent calls in the entire trade, hitting voicemail and dialing the next company.

That is what Echo, our missed-call agent, exists for. It texts back within nine seconds of a missed call, qualifies the emergency, and books or triages it. In that account it took the after-hours miss rate from 60% to 4%. You can buy all the clicks you want; if more than half the resulting calls go unanswered after hours, you are funding your competitors. The account structure earns the call. The backstop makes sure the call earns a job.

This is why we do not sell campaigns in isolation. Ads, call tracking, landing pages, and the missed-call agent are one system. Pull any single piece out and the math stops working.

What good looks like

A word before the numbers: HVAC benchmarks swing hard with season, geography, and how mature the account is. Treat what follows as the shape of a healthy account, not a guarantee.

Cost per lead on emergency-repair Search, in most North American metros, tends to land between $25 and $80 — lower on tight symptom keywords, higher on competitive "near me" terms. Installation keywords run far higher per lead and should be judged on a longer close cycle. The number that actually matters is cost per booked job, because clicks and even leads can lie. Booked jobs do not.

Close rate is the other half of the equation. A generic account converting calls at roughly 11% and a structured account converting at 28% can spend the identical budget and still run completely different P&Ls. What moves that number is the structure, the landing pages, and the answer-rate — not the bid.

The rebuild below is one account, not a sample, so weight it accordingly. But the pattern repeats: spend went up because spending finally became profitable, not the other way around. The lever was structure and answer-rate, not a bigger budget.

MetricBeforeAfter
Google Ads spend$1,500 / mo$6,800 / mo
Qualified inbound leadsBaseline3.4× / month
Close rate11%28%
After-hours missed-call rate60%4%
Cost per booked job$112$66
PipelineReferral-onlyBooked out 6 weeks ahead by month 3
One HVAC account, rebuilt — CS-014, a second-generation operator outside Toronto, over an 88-day build (Q4 2024).

Where to start

If you are running HVAC Google Ads today and cannot answer "which keyword booked my last ten jobs," start there — not with new campaigns. Get call tracking in before you spend another dollar, because you cannot fix what you cannot see.

Then split the account by intent: pull emergency repair out of the generic campaign, give it its own budget and symptom-led keywords, and send it to a real service-plus-suburb landing page with the phone number above the fold. Fence Performance Max to installation. Add Local Services Ads for the trust slot. Put a missed-call backstop behind all of it.

That is the structure we run, and it is the same structure behind the numbers above. If you want it mapped against your own account, our growth audit is free and specific — we will show you where the spend is leaking and what the booked-job math could look like.

Questions we get
  • 01

    How much should an HVAC company spend on Google Ads?

    There is no universal number. Most HVAC operators we work with reach a stable, profitable account somewhere between $3,000 and $8,000 per month in ad spend, scaled to how many crews they can actually dispatch. The better question is not how much to spend, but what your cost per booked job is and whether you can handle more of those jobs. One account we rebuilt ran profitably at $1,500/mo, then scaled to $6,800/mo only because the structure and answer-rate made every additional dollar book real work. Let booked-job economics set the budget, not a fixed figure.

  • 02

    What is a good cost per lead for HVAC Google Ads?

    On emergency-repair Search in most North American metros, cost per lead usually lands between $25 and $80, depending on keyword competitiveness and season. Installation and replacement keywords cost considerably more per lead but justify it on ticket size. The more useful metric is cost per booked job: in one rebuilt account it fell from $112 to $66 once campaigns were split by intent and missed calls were recovered.

  • 03

    Should HVAC companies use Local Services Ads or Google Ads?

    Both. Local Services Ads — the Google Guaranteed badge — sit above the regular Search results and charge per lead rather than per click, so they are the top-of-page trust layer for emergency searches. Standard Google Ads give you keyword-level control and let you match specific symptom searches to specific landing pages. Run them together: LSAs for the badge and trust, Search for precision, and branded Search to defend your name.

  • 04

    Why do my HVAC Google Ads waste money?

    The three causes we find most often: a single generic campaign that lumps emergency repair, maintenance, and installation together, so budget leaks to low-intent clicks; no call tracking, so you cannot see which keywords book jobs and you switch off the wrong campaigns; and a high after-hours missed-call rate, so your highest-intent emergency calls hit voicemail and ring your competitor instead. Fix structure, attribution, and answer-rate before you add budget.

If this was useful

Want it applied to your business?

30 minutes. We review your acquisition data, ad accounts and unit economics. You leave with a thesis, whether you engage us or not.