We’ve audited 23 HVAC accounts in the last 18 months. Spend ranges from $2,400 a month at the smallest to $48,000 a month at the largest. Half of them came to us frustrated. They were “doing lead generation” but couldn’t tell us how many calls turned into installs, or what a booked tune-up was really costing them. The other half came to us because they wanted to grow without adding chaos.
The gap between the accounts that print revenue and the accounts that burn it is bigger than most owners think. And it almost never comes down to ad spend.
Here’s the teardown of what HVAC lead generation actually looks like when it’s working, broken down by the components that matter. Plus the patterns we keep seeing on the accounts that aren’t.
The lead source mix is balanced, not all-in on one channel
The healthiest HVAC accounts we manage get leads from at least four sources at the same time. Google Search ads, Local Services Ads (LSAs), Google Business Profile (organic local pack), and an organic website pulling in long-tail searches like “ac making clicking noise atlanta.”
The struggling accounts almost always have one fat channel and three skinny ones. Usually paid search is doing all the work. So when CPCs spike in May, the whole pipeline tightens at the same time.
This isn’t a “diversify to feel good” point. It’s a math point. A single-channel account is paying retail for every lead. A multi-channel account is paying retail for the marginal lead and getting the easier ones for free or close to it. Over a year, that’s a 25 to 40 percent difference in blended cost per lead on the same spend.
If you’re running HVAC marketing right now and 80 percent of your booked jobs are coming from one source, that’s the first thing to fix. Not because the source is bad. Because you have no leverage.
Tracking ties leads to booked jobs, not form fills
This is the single biggest gap we see. Most HVAC operators we talk to track form submissions and call volume. They don’t track what those leads turned into.
The accounts that print revenue have call tracking running on every channel (CallRail or similar). Their CRM captures the lead source on every job ticket. And someone reviews the cost per booked job by source every month, not just lead count. Not cost per lead. Cost per booked job.
The difference matters because lead quality varies wildly by source. We had a roofing-and-HVAC client where Google Search leads booked at 38 percent and Meta leads booked at 6 percent. If you only look at cost per lead, Meta looks cheaper. If you look at cost per booked job, Meta is more than three times the price. Same spend, three times the price.
The mechanic that closes this gap:
- Call tracking numbers on every channel, including GBP (use the website link parameter, not the GBP-managed number)
- Form submissions tagged with hidden UTM fields
- A weekly or monthly export that joins ad spend to booked jobs by source
- A dashboard the owner actually looks at (revenue-attributed, not impression-counted)
Google Business Profile is doing the heavy lifting
If your GBP is decent, you get free leads every month. If your GBP is great, you get a lot of free leads every month. The accounts that print revenue treat GBP like a primary channel, not a setup-and-forget profile.
What “great” looks like, specifically:
- Categories set to the most accurate primary plus 2-4 secondary categories (“HVAC contractor” primary, “Air conditioning repair service”, “Heating contractor”, “Air conditioning contractor” as secondaries)
- Service areas matched to the geos you actually want to win, not every county within a hundred miles
- Photos uploaded weekly, not quarterly. The algorithm reads recency.
- Services list filled out completely with descriptions written for the way customers actually search
- Q&A populated by the business (yes, you can seed your own Q&A, and most owners don’t)
- Review velocity that beats the local pack competitors (more on this below)
The teardown we do on new clients almost always finds a GBP that’s 60 to 70 percent there. Closing the remaining 30 percent often produces more booked work in 60 days than any paid campaign does. And it costs nothing in media.
Capture demand. Don’t try to manufacture it.
Here’s an opinion that gets pushback. For an HVAC company under $200k a month in revenue, Meta ads are mostly a waste of paid acquisition budget. Paid search is where the buyers are.
The reason is intent. Someone Googling “ac repair near me” at 9 p.m. on a Friday in July is buying tonight. Someone scrolling Instagram doesn’t have a broken AC, they have a phone. You can interrupt them. You can show them a great offer. But you’re paying to create demand instead of capturing it, and HVAC demand creates itself every time a unit dies.
The accounts that print revenue concentrate paid spend on Google Search and Google Local Services Ads where eligible. A small amount of Performance Max sits in the mix for branded shopping coverage. Meta sits at maybe 10 to 15 percent of paid spend, almost entirely for retargeting and brand awareness in service areas. Not for cold lead generation.
The accounts that burn money usually have the inverse. Some owner read that “Facebook ads are cheaper” and pushed 40 percent of budget into Meta cold campaigns. The CPL on those campaigns looks fine. The booked-job rate is terrible. (See the tracking section above for why you wouldn’t know without it.)
There’s a real exception worth naming. If you sell new system installs and run financing offers, Meta can work as a long-cycle lead source. Lead comes in, sits in the CRM for 6 to 12 weeks, then converts when the existing unit finally dies. That’s a real strategy. It needs a nurture sequence and patience. Most HVAC operators we meet don’t have the infrastructure to make it pay off, so we don’t recommend it as the starting point.
Is your website actually built to convert?
A surprising number of HVAC websites we audit have a 4.8-second mobile load time, a phone number that isn’t click-to-call, and a hero section with a stock photo of a smiling technician instead of the actual business.
The accounts that print revenue have websites built for one job. Turn a person who’s already searching for HVAC help into a booked appointment. That looks like:
- Mobile page load under 2.5 seconds on a real phone, not on desktop with caching
- Phone number in the top right of every page, click-to-call enabled, and tracked
- A book-online widget if the dispatch software supports it (ServiceTitan, Housecall Pro, Jobber)
- Trust signals near the fold (real reviews, BBB if applicable, photos of the actual team and trucks)
- Service-area pages built per city/county the business actually serves, not generic “we serve all of [state]” garbage
- Form fields kept tight. Name, phone, ZIP, brief description. Not 14 fields. Every additional field costs you 5-8 percent of conversions on average.
The site is part of the lead-gen system. We’ve seen budget reallocations from ad spend to landing-page rebuilds that paid back in 90 days through higher conversion rates alone.
Review velocity is a system, not a side project
The local pack on Google for HVAC searches is decided largely by review count, review recency, and rating. If you have 84 reviews averaging 4.7 stars and your competitor has 312 reviews averaging 4.9 stars (and their newest is from this week, your newest is from February), you lose the pack.
The accounts that print revenue treat review generation as an operational system. Every completed job triggers a review request, usually within an hour, by text. The text uses the customer’s first name, the technician’s first name, and a direct link to the GBP review form. Response rates from this setup are typically 15-25 percent. Compare that to the 1-3 percent response rate you get from an email that arrives three days later.
There’s a HIPAA-adjacent caveat for some industries we serve. HVAC doesn’t have that constraint. So there’s no excuse not to be running review generation as a continuous process.
A related point most agencies skip. The owner should be responding to every single review, positive or negative, within 48 hours. Personalized responses, not templates. Google’s algorithm gives weight to engaged profiles. And honestly, it’s just good business.
The patterns underperforming accounts keep repeating
A few patterns show up over and over in the accounts that come to us burning money.
The owner can’t tell us their cost per booked job. They know their ad spend and their lead count. The link between those numbers and revenue is missing.
They have a Yelp ads spend they can’t justify. Yelp is fine for some markets and brutal for others. The accounts that print revenue have tested it and kept it only where it pays. The accounts that burn money have been running Yelp for two years without checking.
They’re paying for SEO from an agency that sends them a “ranking report” every month showing positions for keywords nobody is searching. No traffic data. No call data. No revenue tied to organic. Just rankings on a PDF.
They have a Google Ads account with one campaign called “HVAC” that runs every keyword from “ac repair” to “thermostat replacement near me” with the same bid strategy. Quality Score is low because the ad relevance is low. CPC is high because the algorithm doesn’t trust them.
Their LSAs aren’t optimized. LSAs reward responsiveness more than bid. The owners running LSAs well have someone answering the phone within three rings during business hours. The ones who don’t are throwing 60 percent of their LSA spend at dropped calls.
None of this is exotic. It’s just discipline applied in the right places. Which is also the answer to the question we get from new clients every week.
What this means for your account
If you’re trying to grow HVAC lead generation right now, the move isn’t to spend more on ads. It’s to figure out which leads actually become revenue, then aggressively rebuild the channels that produce those leads.
The fastest gains we see, in order:
- Get tracking right so you know cost per booked job by source
- Close the GBP gaps (categories, photos, services, Q&A, review velocity)
- Concentrate paid budget on the highest-intent channels (Search, LSAs)
- Fix the website conversion rate before adding more traffic to it
- Build the review system as a daily operational habit, not a quarterly push
We’ve watched this exact sequence take HVAC accounts from “we can’t tell if marketing is working” to “we’re booking 40 percent more jobs on the same spend” inside six months. Nothing fancy. Just the components in the right order.
If your account is missing two or more of those, that’s where the next $5,000 of budget should go. Not into ads. Into the system that makes the ads worth running.