Diagram showing the flow of Google Ads conversion tracking from user click to conversion and back to Google Ads

Google Ads Conversion Tracking: The Complete Setup Guide

Most accounts I audit have conversion tracking that looks fine on the surface and is quietly broken underneath. This is how to set it up properly.

Chris Beechey

13 min read
Google Ads Tips

I took on a client recently whose Google Ads conversion tracking looked perfectly healthy from the outside. The dashboard reported steady conversions, the audit summary said the tags were live, and the account had been running like that for months. After spending an afternoon in GTM Preview I found three things broken at the same time. The GA4 Google Tag was paused. Enhanced Conversions was wired to DOM auto-detect variables that didn't match any real fields on the page. And the WordPress Site Kit plugin was injecting GTM a second time, on top of the manual install. Every dashboard said "all good". Almost nothing was actually working.

That's the thing about Google Ads conversion tracking. It rarely fails loudly. It fails by quietly under-reporting, double-counting, or feeding the algorithm garbage data that it then optimises toward with great enthusiasm. And once Smart Bidding is involved, bad tracking doesn't just give you bad reports - it actively burns budget chasing the wrong people.

This is a practitioner's guide to setting it up properly. Six steps, in the order I'd actually do them on a new account.

1. Decide What Actually Counts as a Conversion

Before you touch a tag, decide what you're tracking and why. A "conversion" should be a real business outcome - a booking, a qualified lead, a purchase. Not a button click. Not a page scroll. Not "engaged session". Not somebody hovering near your phone number for 3 seconds.

The fastest way to wreck an account's bidding is to flag too many things as primary conversions. Smart Bidding will optimise toward whatever you tell it counts, and it doesn't know that "watched 30 seconds of video" is twenty times less valuable than "submitted enquiry form".

What I do on every new account:

  • One primary conversion per business goal. For lead gen, that's usually one form submit type or one phone call type, not both unless you can value them differently.
  • Secondary conversions for everything else (newsletter signups, brochure downloads, video plays). These get observed but don't drive bidding.
  • Set a value on every conversion if you can. Even rough numbers - a $50 placeholder for a brochure request, $500 for a qualified lead - unlock Maximize Conversion Value bidding, which is almost always better than Maximize Conversions for lead gen.

My take: most accounts have too many primary conversions, not too few. If you're not sure whether something should be primary, demote it to secondary. You can always promote it later when you've got data.

2. Use Google Tag Manager, Not Direct gtag

You can technically install Google Ads conversion tracking by pasting gtag snippets directly into your site. Don't. Use Google Tag Manager.

GTM gives you three things that direct snippets can't:

  • Visibility. You can see every tag, trigger, and variable in one place. When something breaks, you've got a fighting chance of finding it.
  • Version control. Every change creates a version. If you publish something that breaks, you can roll back in one click.
  • Less developer dependency. Once GTM is in the page, you can add and edit conversion tags without touching the site code.

A few traps to avoid when installing GTM:

  • Don't double-install. WordPress plugins like Site Kit can inject GTM on top of a manual install. Both will fire, and depending on the setup you'll get duplicate page views, doubled conversions, or weird race conditions. Pick one method and remove the other.
  • Verify the install with GTM Preview, not a tag audit. I've seen audits report tags as "live" when they were actually paused inside the GTM workspace. The only thing that proves a tag fires is watching it fire in Preview mode against the real page.
  • Check both head and body snippets are present. GTM gives you two snippets. The body <noscript> one isn't decorative - it covers users with JavaScript disabled. Some installs only paste the head one.

If you're rebuilding tracking on an existing account, Google's official GTM install guide is the cleanest reference.

3. Track Real Conversions, Not Button Clicks

The single most common mistake I see, by a long way: people track "user clicked the submit button" instead of "form actually submitted successfully".

Sounds like a tiny distinction. It's not. If your form has validation errors - missing required fields, invalid email format, captcha fails - the user clicks submit, your tag fires, the conversion gets recorded, and absolutely nothing happened. You've just told Google "this person converted" when they very much didn't.

I picked up an account last year recording 2-3x more "conversions" than the client had actual leads in their CRM. The fix was simply switching the trigger from button click to form submit confirmation. Conversion volume dropped by 60% overnight, but the cost per real lead in their CRM stayed the same and Smart Bidding finally had clean data to learn from.

What to do instead:

  • Use Form Submit triggers in GTM where the form lets you (built-in HTML forms usually do).
  • For AJAX forms (where the page doesn't reload), trigger off the success message appearing or a thank-you element being injected. A MutationObserver works well for this.
  • For single-page apps, fire conversions on the route change to the thank-you page, not on the click.
  • Always test the failure path. Submit the form with a deliberately invalid email. If a conversion fires, you've got the wrong trigger.

This is also the most common cause of inflated conversion counts in audits. If your conversion volume looks too good to be true, this is the first place to check.

4. Add Enhanced Conversions for Leads

Enhanced Conversions is the upgrade most accounts haven't bothered with, and it's worth the 30 minutes it takes to set up.

The short version: when someone fills in your form, the Google tag captures their email (and optionally phone), hashes it with SHA-256 in the browser, and sends the hash to Google Ads. Later, if Google can match that hash to a signed-in Google account that saw the ad, you get an attributed conversion that would otherwise be lost - typically because of cookie blocking, cross-device behaviour, or iOS privacy restrictions.

In practice this lifts measured conversions by 20-50% on lead gen accounts in my experience, though the exact uplift varies wildly by audience. The data going to Google is hashed before it leaves the browser, so you're not handing them raw email addresses - the hash is a one-way fingerprint.

Setup steps via GTM:

  1. In Google Ads, go to Goals > Conversions > [your conversion] > Diagnostics, and turn on Enhanced Conversions for Leads.
  2. In GTM, create a "User-Provided Data" variable that grabs the email (and phone) from your form fields. Use Custom JavaScript variables that read directly from the form input IDs - don't rely on Google's DOM auto-detect feature, which has a habit of grabbing nothing on AJAX forms.
  3. In your conversion tag, add the User-Provided Data variable in the Enhanced Conversions section.
  4. Test in GTM Preview - the user data should appear in the tag's payload before it fires.

A note from a recent painful experience: the DOM auto-detect option in Enhanced Conversions looks magical but breaks silently when the form is dynamically loaded or uses non-standard field structures. Always use Custom JavaScript variables that explicitly target the field IDs you can see in the page source. If you can't find a stable ID, ask the developer to add one.

Google's Enhanced Conversions documentation walks through the field requirements in detail.

5. Close the Loop with Offline Conversions

This is the biggest leverage move on this list, and the one almost no small accounts bother with.

A form submit isn't a customer. For most businesses, only a fraction of leads turn into actual sales - maybe 20% if you're good, 5% if you're a high-volume lead gen business with a long sales cycle. If Google is optimising toward "form submit", it's finding more form-fillers, not more buyers. Send back which leads actually became customers and the algorithm starts finding more of those instead.

The mechanism is simpler than it sounds:

  • Enhanced Conversions captures the hashed email at form submit (step 4).
  • When that lead later books an appointment, signs a contract, or pays an invoice in your CRM, you log the same email plus the conversion date and value into a Google Sheet.
  • Google Ads Data Manager imports that sheet daily and matches the hashes.
  • Smart Bidding now optimises toward "form-fill that became a real customer" instead of just "form-fill".

You don't need a CRM integration or developer help to do this. A shared Google Sheet with two tabs and a small Apps Script that hashes emails server-side will do it. The whole setup takes a couple of hours.

The only real constraint: offline conversions must be uploaded within 63 days of the original ad click. Anything older won't match. Weekly is the right cadence for most accounts.

This is the change that turns a flat-performing lead gen account into one that actually compounds. If you're only doing one of the steps in this guide, do this one - assuming steps 1 to 4 are already in place to feed it.

6. Test Your Google Ads Conversion Tracking, Then Trust It

The temptation after building any of this is to assume it works because the dashboard says "OK". It probably doesn't. Verify everything before you trust the numbers.

A proper test pass takes about 20 minutes:

  • Open the page in GTM Preview. Submit the form with a real email. Confirm the conversion tag fires, the user data is populated, and there are no JavaScript errors.
  • In Google Ads, go to Tools > Diagnostics on the conversion. After 24-48 hours, the status should be "Recording conversions" with a recent timestamp.
  • Cross-check against your CRM. Pull the last week of leads from both Google Ads and your CRM. If the numbers are wildly different, something's wrong.
  • Test the failure path. Submit invalid data. The tag should NOT fire.
  • Check for duplicates. If the same email submits twice in 30 minutes, you should see one conversion, not two (use the conversion settings to control this).

Don't skip this part. I've lost count of accounts that thought their tracking was fine for months, then discovered the tag had been silently failing since a theme update in March.

This is also a good time to run a wider account check. If you've fixed tracking, it's worth looking at whether other things are bleeding budget at the same time - I covered the most common ones in 5 Google Ads Mistakes That Waste Budget, and the search term piece in How to Read Your Google Ads Search Term Report.

Key Takeaways

  • One primary conversion per business goal, with a value attached. Demote everything else to secondary.
  • Use GTM, not direct gtag snippets. Verify with GTM Preview, not audits.
  • Track form submissions, not button clicks. The button click trigger is the most common cause of inflated conversion counts.
  • Set up Enhanced Conversions for Leads using explicit Custom JavaScript variables. Don't rely on DOM auto-detect.
  • Close the loop with offline conversions. This is the biggest leverage move for lead gen accounts.
  • Test the failure path, not just the happy path. If the tag fires on invalid submissions, your data is junk.

If your conversion tracking is a mystery, your account numbers don't match your CRM, or your Smart Bidding strategies aren't performing the way they should, that's almost always where the problem starts. If you'd rather not work through it yourself, a Google Ads audit will tell you exactly what's broken and what to do about it.