NEW Partner With Us Program — Zero Upfront Costs Learn More →
Let's Talk →
Let's Talk →
Google Ads

How to Set Up Google Ads Conversion Tracking for HVAC Companies

This guide explains how to set up Google Ads conversion tracking for HVAC companies so calls, form fills, and booking requests are all counted, then tied back to actual closed jobs for a true picture of campaign performance.

Rob Andolina September 21, 2026 9 min read

If you’re running Google Ads for an HVAC business and the “conversions” tab in your account never quite matches your booked jobs, you’re not imagining it. Most Google Ads accounts for HVAC companies are set up to count web form fills as the primary conversion, but 40-70% of local service leads come in by phone, not through a contact form. That gap is why your reported cost per lead looks great while your actual close rate tells a different story.

This guide walks through building conversion tracking that captures calls, form fills, and booking requests, then closes the loop by tying those leads back to actual signed jobs. By the end, you’ll have Google Ads tracking calls, form fills, and booked work correctly instead of just clicks, so you can see which campaigns are actually filling the truck.

Before you start, you’ll need admin access to your Google Ads account, Google Analytics 4, your website’s CMS or a tag manager, and some way to log job outcomes, whether that’s a CRM or a spreadsheet you update after each closed sale.

Step 1: Decide what actually counts as a conversion for your HVAC business

Most HVAC advertisers lump every lead together under one “conversion” label. That’s a mistake, because a lead conversion and a job conversion are not the same thing, and treating them identically wrecks your ability to judge campaign performance. A lead conversion is a call, form fill, or booking request. A job conversion is a scheduled service call or a signed install contract. You want to track both, but you need to keep them separate in your reporting so you can see conversion rate at each stage, not just total activity.

Value matters just as much as category. A $150 maintenance tune-up call and a $12,000 install lead should not carry the same weight in your account. If you assign flat values, or worse, leave every conversion valued at $1 (the default in a lot of accounts), Smart Bidding has no way to know it should chase the install leads harder than the tune-up calls. It will optimize toward whatever converts most often, which is usually the cheaper, higher-volume lead type. Set distinct estimated values by lead type from the start.

The most common mistake at this stage is counting a “thanks for calling” page view or a call-button click as a conversion on its own. A click on a phone number doesn’t mean a call happened, and a call happening doesn’t mean it was a real lead. It could be a wrong number, a robocall, or someone who hung up in three seconds. Define your conversions around actual customer intent: a form submission that reaches your inbox, a call that lasts long enough to be a real conversation, a booking request that hits your calendar. Get this definition right before you touch a single setting in Google Ads or GA4, because everything downstream depends on it.

Step 2: Set up call tracking that Google Ads can actually see

Calls generated directly by your ads need to route through Google’s call forwarding system. When you set up call extensions and call-only ads, Google can provide a forwarding number that swaps in for your business number on the ad itself. Calls placed through that number get reported back into Google Ads as call conversions, with duration data attached, which is exactly what you need.

Calls that come from your website are a separate problem. Someone clicks your ad, lands on your site, and calls the number listed in your header instead of clicking the ad’s call extension. Without dynamic number insertion (DNI), that call looks like it came from nowhere. DNI is a script that swaps the phone number displayed on your site based on how the visitor arrived, so a visitor from a Google Ads click sees a trackable number tied back to that specific campaign and keyword. This is what lets you attribute on-site calls separately from ad-click calls instead of losing them entirely.

Once calls are flowing into either system, set a minimum call duration as your conversion trigger, typically 30 to 60 seconds. A five-second call from an ad click is almost never a real lead. It’s someone who misdialed, hung up when a person answered, or a robocall hitting your line. Filtering by duration keeps junk calls out of your conversion count and keeps your reported cost per lead honest. Without this filter, you’ll see conversion numbers that look fantastic and mean nothing.

Step 3: Build form and booking-request tracking in GA4

Form submissions and online booking requests need their own event in GA4, and how you fire that event matters. Firing on page load of your contact page counts every visitor who lands there, whether or not they submit anything. Fire the event on the thank-you page load after a successful submission, or with a form-success listener that triggers only when the form actually submits without errors. This distinction is the difference between tracking real leads and tracking page views dressed up as leads.

Once the event is built, mark it as a Key Event in GA4. This is the term Google uses for what used to be called a “conversion” in the old GA4 interface, and it matters because only Key Events are eligible to be imported into Google Ads as conversion actions. If you skip this step, the event exists in your GA4 reports but never reaches your ads account.

Before you trust any of this, test it yourself. Submit your own form or booking request, then check GA4 DebugView to confirm the event fired correctly with the right parameters. DebugView shows events in near real time as they come in from a tagged test session, which makes it far faster than waiting to see if the event shows up in standard reports a day later. If it doesn’t show up in DebugView, don’t move on to importing it into Google Ads. Fix the trigger first.

Step 4: Import conversions into Google Ads and assign real dollar values

With call tracking live and your GA4 Key Events confirmed, it’s time to bring everything into one place. Go to Google Ads Linked Accounts settings and link your GA4 property if you haven’t already. Once linked, you can import the call and form Key Events as conversion actions inside Google Ads. This gives your bidding algorithms visibility into both lead types instead of just one.

Now assign values. Instead of leaving every imported action worth a flat dollar or an arbitrary default, set estimated values by lead type: a repair call might be worth $150 to $300, a maintenance plan signup somewhere in that range too, and a new install estimate request worth considerably more given typical install job sizes. These don’t need to be perfect. They need to be directionally accurate so tROAS and value-based bidding strategies have something meaningful to optimize toward. Without differentiated values, Smart Bidding treats a maintenance call and an install lead as equally valuable, which almost never reflects reality.

Last, decide which conversion actions get “primary” status. Primary conversion actions are the ones bidding algorithms actively optimize toward. Secondary actions still get recorded and reported, but they don’t drive bidding decisions. For most HVAC accounts, your qualified calls (past the duration threshold) and your form/booking Key Events should be primary. Lower-intent actions, like a click on your service area page or a PDF download, should stay secondary so they don’t dilute what the algorithm is chasing. Getting this designation wrong is one of the quieter reasons accounts underperform: the algorithm is technically working, it’s just optimizing toward the wrong signal.

Step 5: Close the loop with offline conversion import for booked jobs

This is the step most HVAC advertisers skip, and it’s the one that actually tells you whether your ads are producing revenue or just leads. Everything covered so far measures activity: calls, form fills, booking requests. None of it tells you whether those leads turned into an $8,000 furnace replacement or a no-show who never answered your follow-up call.

Offline conversion import closes that gap. Every lead that comes through a Google Ads click carries a GCLID (Google Click Identifier), a string of characters that ties that specific visit back to the exact ad, keyword, and campaign that generated it. Calls tracked through your call forwarding or DNI setup carry similar identifying data. When your CRM logs a new lead, capture that GCLID or call tracking ID alongside it. Then, once a job closes, whether it’s a signed install contract or a completed repair, export that data and upload it back into Google Ads as an offline conversion, complete with the actual job value.

This is what lets Google Ads (and you) see which campaigns, keywords, and even which days of the week produce leads that turn into real signed jobs, versus which ones produce a lot of calls that go nowhere. Without it, you’re optimizing toward lead volume and hoping quality follows. It usually doesn’t.

Set a realistic upload cadence, weekly is usually the right rhythm. HVAC sales cycles for larger jobs, especially installs, often run one to three weeks from the first call to a signed contract, so a daily upload schedule won’t capture much and a monthly one lets too much time pass before your bidding algorithm sees the outcome. Weekly uploads strike a workable balance between data freshness and having enough closed jobs to actually upload.

Step 6: Verify everything with test conversions before trusting the reports

Before you make a single bidding decision based on this new setup, run your own tests. Place a test call to your tracking number and let it run past your duration threshold, then submit a test form. Both should appear in Google Ads under Conversions, not just in GA4, within about 24 hours. If a test conversion shows up in GA4 but never reaches Google Ads, the link between the two accounts needs attention before you trust anything else.

While you’re checking, look specifically for duplicate counting. This happens often when a business runs both call extensions and website call tracking simultaneously without excluding overlap. A single phone call can get logged once through the extension and again through DNI tracking, which inflates your conversion count and makes your cost per lead look artificially low. Compare call logs against conversion counts for a sample week to make sure you’re not double counting.

Once you’re confident the numbers are accurate, give yourself time before judging results. Campaigns typically need 30 to 90 days to ramp fully, and HVAC lead volume and cost swing hard with the seasons: summer AC breakdowns drive one kind of demand curve, winter heating emergencies drive another. A cost per lead that looks high in a slow shoulder season might be right in line with the $18 to $35 range typical for home services once volume picks back up. Don’t overreact to two weeks of data in either direction.

What to watch once tracking is live

Once tracking is verified and values are assigned by job type, check your Google Ads conversion data weekly for the first month. This is when attribution gaps show up, a call that isn’t hitting the duration threshold, an offline upload that didn’t match its GCLID, a Key Event that stopped firing after a site update. Catching these early keeps bad data from skewing your bidding before it has a chance to compound.

If this feels like more setup than your team has time for, that’s a fair read. Between call tracking, GA4 events, GCLID capture, and a weekly offline upload process, it’s a real workload on top of running an HVAC company. Clicks Geek runs HVAC-specific conversion tracking as part of its Google Ads management for local service businesses, built on work across 298 industry playbooks since 2015 as a Google Premier Partner.

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.

Share
Keep reading

More from Google Ads