Your HVAC leads are coming in at a cost that feels too high, or they call and never book. Both problems usually trace back to the same handful of leaks, and most of them can be found in an afternoon.
This guide walks through how to lower cost per lead on Google Ads for an HVAC business in the order that moves the number fastest: measure honestly, cut waste, restructure, fix the handoff, and only then touch bids. You’ll need admin access to your Google Ads account, call tracking or at least Google forwarding numbers, and 30 days of data to work from.
Step 1: Define what a lead is and calculate your real cost per lead
Cost per lead (CPL) is spend divided by leads. The catch is what you count as a lead. Sort every inquiry from the last 30 days into three buckets:
- Booked jobs: the caller or form submitter became a scheduled appointment or sold job.
- Qualified leads: a real service or install request from inside your service area that didn’t book yet.
- Junk: wrong numbers, job seekers, parts questions, vendors, and out-of-area callers.
Only the first two count. Now divide 30 days of spend by qualified leads, not by total conversions. Many accounts count every call that lasts five seconds and every form fill, including spam, so the reported CPL looks healthy while the real one is much higher. Do this math by hand from call logs or your call tracking platform if you have to.
Then compare. Home services Google Ads typically land at $18-35 per lead. Treat that as a reference range, not a goal. The number that pays your bills is cost per booked job, because a cheap lead that never books is the expensive one.
Since roughly 40-70% of leads arrive by phone, call tracking is where your measurement lives or dies. Check your call conversion action in Google Ads (under Goals, then Conversions) and set the minimum call length so that only real conversations count. Sixty seconds is a reasonable starting point for HVAC, since a genuine service request takes a minute to describe. Google’s settings names and locations shift, so verify the current options in your account as of today rather than trusting a screenshot from an old tutorial.
Write down two numbers before moving on: cost per qualified lead and cost per booked job. Everything after this is measured against them.
Step 2: Audit your search terms report and cut the wasted clicks
The search terms report shows what people actually typed before clicking your ad. Open it, set the range to the last 30 days, and sort by cost, highest first. Your money is leaking near the top of that list.
Flag every term that isn’t someone trying to buy service. The usual offenders in HVAC:
- Career intent: “hvac jobs”, “hvac technician salary”, “hvac school”, “hvac apprenticeship”
- Parts and DIY: “hvac parts”, “how to fix”, “diy”, “manual”, “wholesale”
- Adjacent trades: refrigeration, appliance repair, car AC
Add these as negative keywords, meaning terms that block your ads from showing on matching searches. Build them into a shared negative keyword list and apply it to every campaign so you fix it once. Be cautious with competitor and big-box retailer names: add them only if your data shows they burn budget without producing calls. Brand-name equipment queries (a specific manufacturer plus a model) can be either a homeowner with a broken unit or someone shopping for parts, so judge them by their own results.
Check match type drift
Broad match paired with automated bidding tends to wander into adjacent terms. If your report is full of things you never bid on, tighten your core terms to phrase and exact match, and keep broad only where it has earned its place with qualified leads.
Look for geographic waste
Scan for “near me” and city-name searches from people outside your service area, including neighboring counties you don’t cover. Google’s location report will show where clicks originate. Step 4 fixes the targeting, but note the damage now.
Repeat this audit monthly. Waste creeps back as Google expands what it considers relevant.
Step 3: Split emergency repair from replacement and install campaigns
“AC not cooling” and “new AC installation cost” are two different businesses. The first is an urgent homeowner who will book the first company that answers. The second is a shopper comparing quotes for a big purchase. They have different intent, different ticket sizes, and different amounts you can afford to pay for a lead.
Put them in one campaign and you get one budget and one bid target for both, so the cheap-to-acquire repair calls starve the installs, or the reverse. Split them:
- Emergency repair: call-focused ads, tight schedule alignment with when you can dispatch, and a lower acceptable CPL.
- Replacement and install: ads and pages that support a longer decision, with room for a higher CPL because the ticket is larger.
How much higher? Use your own average ticket for each type and your close rate on each, not a generic industry number. If an install job is worth many times a repair call to you, the acceptable lead cost is proportionally higher, and a single blended target will always be wrong for one of them.
If your market has strong seasons, go one step further and separate heating from cooling. That way budget follows the weather. A no-heat campaign can be scaled down in July without touching your AC campaigns, instead of spreading spend across off-season service that nobody is searching for.
One warning: don’t over-split. Every campaign needs enough conversions for automated bidding to learn from, and a small account carved into six campaigns gives each one too little data. Start with repair and replacement, and add the heating and cooling split only if volume can support it.
Step 4: Fix geo targeting, ad schedule, and call handling
Open campaign settings and check the location options. Set targeting to people in, or regularly in, your locations rather than “presence or interest.” The interest option lets Google show your ads to people merely searching about your area, including folks planning a move or researching from another state. As of September 2026, confirm the exact wording and default in your account, since Google has adjusted these settings before.
Next, look at performance by location. Use bid adjustments by zip code or radius:
- Pull back on outer areas where drive times are long and close rates are lower.
- Push up on your densest, highest-ticket neighborhoods, where each truck roll costs less and the average job is bigger.
Or exclude areas you can’t profitably serve outright.
Match the schedule to who answers
Paying for a click at 9 pm when the call goes to voicemail is one of the most common leaks in HVAC accounts. Pull your call logs by hour. If you offer 24/7 emergency dispatch, keep ads on around the clock, but only if a live person or a real answering service picks up. If not, restrict the schedule to hours when calls get answered, or lower bids after hours.
Audit call handling
Listen to a sample of recordings and check the log for missed calls and how quickly the phone gets picked up. A missed call is a paid click that produced nothing, and slow answers push callers to the next company on the results page. Your effective CPL moves as much with answer rate as it does with any bid change. If a fifth of your calls go unanswered, fixing that is a bigger cost cut than anything in the ad account.
Step 5: Rewrite ads and landing pages to attract the right calls
Good ads filter before the click. Every unqualified click you discourage is money kept. Put the qualifiers in the headlines and descriptions:
- Your service area by city or region
- Same-day or emergency availability
- Financing, for replacement campaigns
- Licensed and insured
- A service call fee, if you’re willing to state it
Stating a price scares off some clicks, and that’s the point. The people who still call know what they’re getting into.
Add call assets, location assets, and callout assets so the ad takes up more space and gives people a direct way to phone. Mention Google Guaranteed or Local Services Ads badge messaging only if you actually hold it. LSA eligibility and screening requirements change, so check Google’s current requirements as of today before you claim anything or plan around it.
Fix where the click lands
Send each campaign to a dedicated service page, not the homepage. An AC repair ad should land on an AC repair page. On mobile, the phone number should be visible without scrolling, tapping it should dial, and any form should be short: name, phone, address or zip, and what’s wrong.
Test one thing at a time
Change a headline set, or the page’s top section, but not both, and let each version collect enough clicks to mean something before you judge it. If you rewrite everything at once and results improve, you won’t know why. If they get worse, you can’t undo the right piece.
Step 6: Adjust bidding strategy once the data is clean
Automated bidding optimizes toward whatever you tell Google counts as a conversion. Feed it junk calls and it will happily find you more junk calls, faster. That’s why Step 1 comes first: the strategy is only as good as the tracking behind it.
After about a month of clean conversion data, consider moving from manual bidding or maximize clicks to maximize conversions with a target CPA (the average cost per conversion you want Google to aim for), or to target CPA directly. Set the target near your current actual cost per qualified lead, not your wish. Then step it down gradually, in modest increments, rather than cutting it in half. A drastic target starves the campaign of auctions and volume collapses.
Expect volatility. Any bid strategy change triggers a learning period where performance swings. Ramp on Google Ads typically runs 30-90 days, so do not judge a change after a week, and do not stack a new change on top of one that hasn’t settled.
Performance Max: use with eyes open
Performance Max runs across Google’s channels from one campaign, and it gives you less visibility into where the money goes. If you test it, confirm it can’t cannibalize your branded search, and check that lead quality holds up, since it can pad the numbers with cheap, low-intent conversions. Review the current controls available in your account as of September 2026. For many HVAC accounts, leaving it out until search is running clean is the safer call.
Step 7: Measure weekly, set thresholds, and know when CPL is not the problem
Keep a scorecard short enough that you’ll actually fill it in each week:
- Spend
- Qualified leads
- Cost per qualified lead
- Booked jobs
- Cost per booked job
- Missed calls
Decide your rules ahead of time so you’re not reacting to a bad Tuesday. For example: a search term gets negatived after a set number of clicks with no calls, a campaign gets paused if it misses its cost per booked job target for a defined stretch, and budget moves to the campaign that’s beating target. Pick the numbers using your own ticket and close rates.
Know the limit of what ads can fix. If your CPL sits inside the $18-35 range but few of those calls turn into jobs, the problem is downstream: slow callbacks, weak phone scripts, quoting, or pricing. No bid strategy repairs that. Use total spend as a sanity check too. Most local service businesses land around 8-12% of revenue on marketing, so if you’re far above that with flat growth, look at the whole picture, not only CPL.
And if the account has years of history, layers of old campaigns, and waste you can’t trace, an outside audit is usually faster than guessing your way through it.
Keep the Savings: Recheck at 30 to 60 Days and Review Monthly
Give the changes 30 to 60 days, then recalculate your cost per qualified lead and cost per booked job against the baseline from Step 1. Keep what lowered them, roll back what didn’t, and put a monthly search terms review on the calendar so the waste doesn’t creep back in.
Tired of spending money on marketing that doesn’t produce real revenue? We build lead systems that turn traffic into qualified leads and measurable sales growth. If you want to see what this would look like for your business, we’ll walk you through how it works and break down what’s realistic in your market.