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

How to Set Up Google Ads Tracking for HVAC: A Step-by-Step Guide

HVAC contractors running Google Ads without proper conversion tracking cannot tell which campaigns book real jobs versus which ones burn budget on empty clicks. This guide walks through a complete Google Ads tracking setup for HVAC — covering call tracking, form submissions, and Smart Bidding data — so every dollar spent is accountable.

Faisal Iqbal August 29, 2026 14 min read

If you’re running Google Ads for your HVAC business and you can’t tell which calls are coming from your ads, which keywords are booking jobs, or whether your budget is producing real revenue or just clicks, your tracking is broken. This guide fixes that.

Most HVAC contractors we talk to are flying blind. They know they’re spending money on Google Ads, and they know the phone rings sometimes, but they can’t tell you which campaign booked the emergency AC call last Tuesday versus the one that booked a $12,000 system replacement. That’s not a budget problem. That’s a tracking problem, and it’s fixable in an afternoon.

We’ll walk through every piece of conversion tracking you need: call tracking, form submissions, and how to connect it all back to your Google Ads account so the algorithm actually knows what a real lead looks like. Get this right and Smart Bidding has real data to optimize against. Get it wrong and you’re paying for clicks that never become booked jobs. If you’ve been wondering why your Google Ads aren’t working for your HVAC business, broken tracking is often the first place to look.

This guide assumes you have a Google Ads account already running and a basic Google Analytics 4 property set up. If you don’t have GA4 yet, that’s Step 1. Everything else builds on it.

Step 1: Confirm Your GA4 Property Is Properly Configured

Before you build anything new, you need to know what’s actually working. GA4 is the foundation every other tracking piece sits on, so a misconfigured property will corrupt everything downstream.

Start by logging into GA4 and confirming your property exists. Then check whether the base tag is firing on every page of your HVAC website, not just the homepage. This includes your contact page, your service pages, and any standalone landing pages you’re running for Google Ads campaigns. A tag that only fires on one page template is worse than useless because it gives you partial data that looks complete.

Next, check the account link. In GA4, go to Admin, then look under Product Links for Google Ads Links. The connection needs to exist here, inside GA4, not just configured from the Google Ads side. Many contractors have this set up in one direction but not both, and the data flow only works when both accounts recognize the connection.

While you’re in Google Ads, confirm that auto-tagging is enabled. Go to Settings, then Account Settings, and look for Auto-tagging. It should be turned on. Auto-tagging is what adds the GCLID parameter to your ad click URLs, and GA4 reads that parameter to attribute sessions back to specific ads, keywords, and campaigns. Without it, GA4 sees your ad traffic as direct or organic, and your reporting is meaningless.

The most common pitfall at this stage: contractors who had GA4 installed manually, page by page, rather than through a tag manager. If someone added the GA4 snippet directly to one page template in WordPress, it may only fire on certain pages. You’ll see gaps in your Realtime data that look like users disappearing mid-session.

Success check: Open GA4 and go to Reports, then Realtime. Visit your own website from a different browser or device. You should see yourself appear as an active user within 30 seconds. If you don’t show up, the base tag isn’t firing correctly and nothing else you build will work.

Step 2: Install Google Tag Manager on Your HVAC Site

Google Tag Manager is how you deploy and manage all your tracking tags without touching your website code every time something needs to change. For HVAC contractors who aren’t developers, this matters a lot. Once GTM is installed, you can add call tracking, form triggers, and conversion events yourself, or have an agency handle it, without filing a ticket to your web developer for every update.

Go to tagmanager.google.com and create a new account and container. Name the container after your website domain. GTM will give you two code snippets: one that goes in the <head> section of your site and one that goes immediately after the opening <body> tag. Both need to be on every page.

Where you add these depends on your platform. If your HVAC site runs on WordPress with Elementor, the cleanest approach is a plugin like Insert Headers and Footers, which lets you paste the snippets without editing theme files. If you’re on a managed platform like Scorpion or ServiceTitan Marketing Pro, you’ll need to contact their support team because those platforms control the site code and have a process for adding third-party scripts. Don’t try to work around it.

Once GTM is installed, migrate your existing GA4 base tag into it. Create a new tag in GTM, select Google Analytics: GA4 Configuration as the tag type, enter your Measurement ID (it starts with G-), and set the trigger to All Pages. Publish the container. Then remove the hardcoded GA4 snippet from your website so you’re not running two GA4 tags simultaneously.

Running duplicate GA4 tags is the most common mistake at this stage. It inflates every metric in your reports because every pageview, session, and event gets counted twice. Use GTM Preview mode before publishing to confirm exactly one GA4 Configuration tag fires on each page load. Preview mode shows you every tag that fired, in order, so there’s no guesswork.

Success check: In GTM Preview mode, load your homepage and your contact page. The tag summary should show your GA4 Configuration tag firing exactly once on each page. If it appears twice, you have a duplicate that needs to be removed before you move forward.

Step 3: Set Up Phone Call Conversion Tracking

Phone calls are how the majority of HVAC leads arrive. Based on Clicks Geek’s benchmarks across home services, somewhere between 40 and 70 percent of leads come in by phone. That means if you’re not tracking calls accurately, you’re missing most of your conversion data and Smart Bidding is optimizing against an incomplete picture.

There are two distinct call tracking setups you need, and most contractors only implement one.

Calls directly from your ads: These are calls made from the phone number shown in your ad before someone even visits your website. In Google Ads, go to Goals, then Conversions, then click the plus icon to create a new conversion action. Select Phone Calls, then Calls from Ads. Set the minimum call duration to at least 60 seconds. For HVAC, 90 seconds is a better threshold. A 15-second call is a wrong number or a vendor. A 90-second call is someone describing that their AC stopped working at 2pm on a 95-degree day. Those are the calls you want to count.

Calls from your website: These are calls made after someone clicks your ad and lands on your site. Google provides forwarding numbers that automatically swap your displayed phone number for a tracking number when a visitor arrives via an ad click. The setup lives inside Google Ads under your call conversion action settings. When you enable website call tracking, Google generates a snippet you add to your site through GTM. This snippet detects ad-click traffic via the GCLID and replaces your phone number dynamically, so the call routes through Google’s system and gets attributed to the right campaign and keyword.

In GTM, you’ll also want to set up a click trigger that fires when someone clicks a tel: link on your site. This catches mobile users who tap your phone number directly. Create a new trigger in GTM, select Click as the trigger type, then configure it to fire on clicks where the Click URL contains “tel:”. Pair this with a GA4 Event tag that sends a “phone_click” event so you have a record in GA4 as well.

If you want more visibility into what happens on calls, call recording platforms like CallRail integrate with Google Ads and can pass call outcome data back as offline conversions. That’s a more advanced setup, but it’s worth knowing it exists, especially if your office staff is booking jobs from calls and you want to close the loop between ad spend and actual revenue.

Success check: From a mobile device, click through one of your ads (you can pause it first to avoid charges, then use the preview link), land on your website, and tap the phone number. Then check Google Ads conversion history within a few hours to confirm the call registered. Also use Google Tag Assistant to verify the tel: click trigger fired in GTM.

Step 4: Track Form Submissions as Conversions

Not every HVAC lead calls. Some fill out a quote request form or book a maintenance appointment online. These submissions need to fire a conversion event when the form is actually submitted, not when someone views the form page. Tracking the page view is one of the most common mistakes in HVAC Google Ads setups, and it inflates your conversion numbers with people who loaded the form and left without submitting anything.

There are two reliable methods, and the simpler one is almost always better.

Thank-you page tracking: Configure your contact form to redirect to a dedicated /thank-you/ page after a successful submission. Then create a conversion action in Google Ads triggered by that URL. In GA4, set up a Page View event on /thank-you/ and mark it as a conversion. Import that GA4 conversion into Google Ads. Anyone who reaches that page submitted the form. Anyone who didn’t, didn’t. It’s clean, simple, and reliable because it doesn’t depend on JavaScript events firing correctly.

To set this up in Google Ads, go to Goals, then Conversions, create a new conversion action, and select Website. Enter your thank-you page URL as the trigger condition. Make sure the conversion window is set appropriately, 30 days is standard for HVAC, since someone might click your ad, think about it, and submit the form a few days later.

GTM form submission trigger: If you can’t use a thank-you page redirect because your form is embedded or your platform doesn’t support it, GTM has a Form Submission trigger type. Go to Triggers in GTM, create a new trigger, and select Form Submission. The key setting here is to check the box that says “Wait for Tags” and enable “Check Validation.” This ensures the trigger only fires on successful submissions, not on validation errors where someone hit submit but the form rejected their entry because they forgot to include a phone number.

After either method is configured, import the conversion into Google Ads through the linked GA4 account. Go to Tools, then Linked Accounts, confirm GA4 is connected, then go to Goals and import the relevant conversion event. Set it as a primary conversion so it feeds into Smart Bidding signals.

Success check: Submit a test entry through your form using a fake name and a real email address you control. Wait a few hours, then check Google Ads conversion history. The test submission should appear. If it doesn’t show up within 24 hours, the tracking chain has a gap somewhere, either the thank-you page redirect isn’t working, the GTM tag didn’t publish, or the conversion action isn’t set to include in conversions.

Step 5: Assign Conversion Values Based on Your Actual Job Revenue

Not all HVAC leads are worth the same. An emergency call in July from a homeowner whose central AC failed is worth far more than a tune-up inquiry in October. If your Google Ads conversion tracking treats both as equal, Smart Bidding will optimize for volume rather than revenue, and you’ll end up with a lot of $89 tune-up appointments and not enough system replacement jobs.

Conversion values tell the algorithm what each lead type is actually worth to your business. To set them, pull your own numbers from your CRM or job history. Look at your average ticket by job category: maintenance, repair, and new installation. Use those actual figures. Don’t use industry averages because your market, your pricing, and your close rate are specific to your business.

In Google Ads, go to Goals, then Conversions, and open each conversion action. You’ll see a field for Value. Enter a static dollar amount that reflects the average revenue for that lead type. If your site has separate forms for different services, create separate conversion actions for each one and assign different values. An emergency service form might carry a higher average value than a general contact form, and the algorithm should know that.

If you only have one contact form and can’t separate lead types at the form level, use a blended average. Add up your total job revenue over the last 12 months, divide by the number of jobs, and use that as your conversion value. It’s not perfect, but it’s far better than leaving the value at zero or the default placeholder of $1.

Conversion values are what make Target ROAS bidding possible. When Google knows that a form submission is worth $800 on average, it can chase leads that are more likely to produce $800 jobs rather than just chasing any click that might submit a form. Without values, Target CPA is your only value-based option, and it optimizes for lead volume with no regard for lead quality or job size. That’s a meaningful difference when you’re comparing a tune-up call to a full system replacement.

Success check: Open your conversion actions in Google Ads and confirm every primary conversion action shows a non-zero value. If you’re using Target ROAS bidding, your campaign should have enough conversion history to support it. Google typically recommends at least 15 to 30 conversions in the past 30 days before switching to value-based bidding. If you’re not there yet, Target CPA with accurate values logged is a reasonable interim approach.

You’ve set up tracking. Now you need to confirm the data is actually flowing between your accounts and showing up where decisions get made.

In GA4, go to Admin, then Product Links, then Google Ads Links. If the link isn’t there, create it by selecting your Google Ads account from the list. Once linked, GA4 can share audience data with Google Ads for remarketing, and you can import GA4 conversion events directly into Google Ads reporting.

In Google Ads, go to Tools, then Linked Accounts, and confirm the GA4 connection shows as active. Then go to Goals, then Conversions, and import your GA4 conversion events as secondary conversions. Running them as secondary alongside your primary Google Ads conversion tracking lets you cross-reference both data sources and catch discrepancies early.

After a week of live traffic, open your Campaigns view in Google Ads. You should see conversions attributed to specific campaigns. If you see clicks but zero conversions, work through this diagnostic checklist in order:

1. Auto-tagging is enabled in Google Ads account settings. Without this, GA4 can’t read GCLID data from ad clicks.

2. GTM container is published. A container that’s only saved in draft mode isn’t live. Check the GTM dashboard for the published version number.

3. Conversion actions are set to include in conversions. In Google Ads, open each conversion action and confirm the “Include in Conversions” toggle is on. Actions set to Observation only won’t feed Smart Bidding.

4. Attribution window matches your sales cycle. For HVAC, a 30-day click attribution window and a 1-day view-through window is a reasonable starting point. Emergency calls convert fast, but some homeowners shop for a few days before submitting a quote request.

If you’re still seeing zero conversions after checking all four points, the issue is usually a GTM tag that didn’t publish, a conversion action that’s paused, or a thank-you page URL that doesn’t exactly match what you entered in the conversion trigger. Check for trailing slashes and case sensitivity in URLs. These small mismatches break tracking silently.

For a broader look at why conversions might not be registering, this breakdown of Google Ads conversion problems covers several common failure points that apply across industries.

Success check: You can see conversion data broken down by campaign, ad group, and keyword in Google Ads reports. If you can pull a report showing which keywords generated calls and form submissions over the past 7 days, your tracking is working.

What Good Tracking Looks Like After 30 Days

After 30 days with everything configured correctly, you should be able to answer three questions without guessing: which keywords generated booked calls, what your actual cost per lead is by campaign, and whether your ad spend is producing jobs or just traffic.

On cost per lead, Clicks Geek’s benchmark for home services Google Ads puts CPL in the $18 to $35 range. If your tracked CPL is sitting well above that range, either your campaigns need restructuring or your tracking is miscounting conversions, possibly counting page views instead of submissions, or counting calls that are too short to be real inquiries. If it’s well below that range, double-check that your conversion actions are actually requiring meaningful engagement before firing. A CPL of $4 usually means something is counting wrong.

Once your tracking is solid, the next step worth exploring is offline conversion imports. If you use ServiceTitan or a similar HVAC CRM, you can export closed jobs and upload them back into Google Ads to show the algorithm which leads actually became revenue. This closes the loop between ad spend and business results in a way that standard conversion tracking can’t. Google supports this via CSV upload or API integration, and ServiceTitan has documentation on exporting job data in the right format.

On a monthly basis, review these four things: conversion rate by campaign, cost per lead trend, call duration distribution from your call tracking, and form-to-booked-job rate from your CRM. If your call duration data shows a lot of sub-60-second calls still getting counted, raise your threshold. If your form-to-booked rate is low, the issue may be lead quality rather than tracking, and that’s a campaign and targeting conversation.

If you want to understand why your cost per lead might be higher than expected even with good tracking in place, this breakdown of high CPL causes covers the campaign-side factors worth reviewing.

Clicks Geek has managed over $100 million in ad spend for local service businesses since 2015, and broken tracking is one of the most common reasons HVAC contractors think Google Ads doesn’t work when the real problem is they can’t see what’s working. If you want to see what this would look like for your specific setup, we’ll walk through what’s actually happening in your account and what’s realistic to fix.

Share
Keep reading

More from Google Ads