"I added the conversion tag in Google Ads, but the count in my account just won't move." This is one of the most common headaches in advertising. You think the tag is in place — but if it isn't actually being counted as a conversion, your bidding, your reports, and every decision built on them are off.
Do any of these sound familiar?
- Your conversion count sits at 0 no matter how long you wait
- The conversion action status stays stuck on "No recent conversions"
- It records fine in GA4, but only Google Ads shows no count
- It was working yesterday, and now tracking has suddenly stopped
This guide walks through four ways to verify your Google Ads conversion tag is working, the top 5 reasons conversions go missing, the blind spots each method shares, and how to verify with confidence in your real production environment.
Before you start: "working" has three levels
The biggest reason Google Ads conversion checks go wrong is treating "the tag works" as a single state. In reality there are three distinct stages — and simply knowing which one you're checking makes diagnosis dramatically easier.
| Level | What it means | Common trap |
|---|---|---|
| ① Installed | The Google tag (gtag / GTM) and event snippet load on the page | It's missing on the conversion page entirely |
| ② Fires | The conversion request is sent to Google | Installed, but doesn't fire on a specific action |
| ③ Counted | Google Ads records it as an ad conversion | Fires, but isn't tied to a click (gclid), so it isn't counted |
The key point: firing (②) and being counted (③) are not the same thing. A request can leave the browser, but if that visit isn't tied to an ad click, Google Ads won't add it to your conversion count. That's the decisive difference from a GA4 check — and the core of the blind spots we'll cover later.
Methods 1–4 below mainly confirm ① installation and ② firing. Confirming ③ counting is covered by Method 2 (Google Ads conversion diagnostics) and the later section "Why a tag fires but isn't counted."
Before you begin: are you on "gtag" or "GTM"?
Knowing how your site installs the Google Ads tag changes where you should look. There are two broad setups:
- gtag (hardcoded): the Google tag (
AW-XXXXXXXXX) and the conversion event snippet are written directly into your HTML. Verify with Methods 1–3. - GTM (Google Tag Manager): the "Google Ads Conversion Tracking" tag is managed in a GTM container. Method 4 (GTM Preview) becomes the main tool, and "is the trigger firing?" / "did you publish?" are the key questions.
Not sure which? Open DevTools, go to the Network tab — if you see a gtm.js request, you're on GTM. Remember too that Google Ads conversion tracking needs a Conversion Linker (passing along auto-tagging data) to carry click information; if that's missing, it hits ③ counting directly (more below). Where you get stuck differs by setup.
Method 1: Google Tag Assistant
The most accessible official tool is Google Tag Assistant (tagassistant.google.com).
- Enter your site URL in Tag Assistant and connect
- In the preview window, go all the way through the action that triggers a conversion (form submit, purchase complete, etc.)
- Detected tags (your Google Ads
AW-XXXXXXXXX) and theconversionevent sent appear in a list
What it tells you: the tag is installed and the conversion request is being sent (① and ②). What it doesn't: whether Google Ads ultimately counted it as an ad conversion (③). Tag Assistant shows you up to "it was sent."
Common pitfall: detecting the tag on the homepage is fine, but unless you reach the actual thank-you or purchase-complete page, the conversion event snippet never fires. Check the exact page at the moment the conversion completes.
Method 2: Google Ads conversion diagnostics
This is the view from inside the Google Ads UI. Under "Goals → Summary → Conversions," open the conversion action to see its status and diagnostics (recording status).
- Check the conversion action status ("No recent conversions," "Recording conversions," etc.)
- Use the "Diagnostics" tab to see whether there are issues with installation or recent recording
- Confirm auto-tagging (gclid) is on and that the Conversion Linker is in place
What it tells you: whether Google Ads is actually receiving and counting conversions (the closest check to ③).
Caution: Google Ads reporting is not real time — counting can lag by hours or, in some cases, into the next day. Don't conclude "it's broken" just because the count doesn't appear the instant you send it.
Method 3: Browser DevTools (Network)
The most precise way to confirm ② firing is your browser's DevTools.
- Open the page you want to check and open the "Network" tab
- Filter for
conversionorgoogleadservices - Perform the conversion action (submit, purchase) and watch for requests to
googleadservices.com/pagead/conversion/… - Inspect the request and confirm the conversion ID (
AW-XXXXXXXXX) and label are correct, and that the click ID (gclid) is passed along
What it tells you: exactly which conversion was sent, with which parameters (the most precise view of ②). What it doesn't: still ③ (whether Google Ads counted it as an ad conversion). Even a correct payload won't appear in your count if it isn't tied to a click.
Common pitfall: with an ad blocker or browser tracking protection on, the
conversionrequest itself can be blocked, making it look like "not firing." Always check in a clean state with those turned off.
Method 4: Google Tag Manager Preview
If you manage tags through GTM, Preview mode lets you trace "which trigger fired which tag" for every action.
- Launch "Preview" from your GTM workspace
- Open the target site, perform the conversion action, and confirm the Google Ads conversion tag (and the Conversion Linker) fire
- If they don't, the cause is a trigger condition or variable misconfiguration
Caution: GTM changes don't go live until you publish (Submit). If it works in Preview but isn't tracked in production, "forgot to publish" is by far the most common cause. Also, if the Conversion Linker tag doesn't fire on all pages, click information isn't carried over and ③ counting drops.
The top 5 reasons conversions go missing
When the count still won't move, the cause usually falls into one of these five. Check them top to bottom.
1. The conversion page is missing the event snippet
The Google tag (AW-) goes on every page, but the conversion event snippet belongs only on the page where the conversion completes. If the thank-you or checkout-complete page is missing the snippet, it simply won't fire. Open the exact page you want to count and check it with Methods 1–3.
2. The Conversion Linker (auto-tagging) is missing
Google Ads uses the click ID (gclid) to tie a visit to a click. If auto-tagging is off or the Conversion Linker isn't installed, the tag can fire but never reach ③ counting. See Conversions fire but Google Ads doesn't count them? How the click ID (gclid) works.
3. You didn't publish your GTM changes
GTM works in Preview but won't appear in production until you publish. "Configured" is not "published."
4. Consent mode (the consent banner) is blocking measurement
If you run a cookie consent banner, measurement may be restricted or stopped while the user hasn't consented. Test in both states — consented and not consented.
5. The conversion action setup or counting method is off
The conversion action may not exist or may be disabled, the counting setting ("Every" vs "One") may differ from what you expect, or the conversion may fall outside your conversion window. If it's being counted twice, see Why conversions get counted twice, and how to check.
Cross-domain, iframe, and SPA pitfalls
Even when your tag setup is correct on a single domain, certain site architectures introduce their own tracking failures. These are easy to miss because the tag appears to work during basic testing.
Cross-domain redirects (payment gateways, booking engines)
If your conversion page lives on a different domain from your landing page — a third-party checkout, a payment gateway, or a booking platform — the first-party cookie that stores the gclid cannot travel across the domain boundary. The conversion fires, but Google Ads has no click to tie it to. Fix this with the gtag.js domain linker (gtag('set', 'linker', {domains: [...]})) or GTM's cross-domain tracking settings so the _gl parameter carries the click ID across. For a deeper walkthrough, see Why cross-domain tracking breaks and how to fix it.
Iframe-embedded forms and checkouts
When the conversion action happens inside an iframe (an embedded form, a widget from another platform), your parent page's tag cannot see it. The iframe is a separate browsing context with its own cookies. Either pass the conversion event from the iframe to the parent page via postMessage and fire the tag there, or move the tag inside the iframe — with the caveat that gclid must also be passed in. Backend conversion import via the Google Ads API is often the most reliable alternative.
Single-page applications (SPAs)
SPAs don't trigger traditional page loads when a user navigates. If your conversion tag is set to fire on a page load trigger, it will never fire after the initial load — even when the user reaches a thank-you "page." Use a history change trigger in GTM or fire gtag('event', 'conversion', {...}) programmatically when the conversion route renders. See SPA conversion tracking: how to get it right for setup details.
Why a tag fires but isn't counted
You confirmed "firing (②)" with Methods 1–4, but it never appears in your Google Ads count (never reaches ③). This is the most confusing pattern in Google Ads. The reason: firing = sent to Google, counting = Google Ads ties it to a click and records it — two different stages.
Typical reasons a sent conversion never gets counted:
- Missing click ID (gclid): auto-tagging off, the parameter lost on a redirect, or no Conversion Linker — so the visit isn't tied to an ad click
- Consent mode state: with no/limited consent, measurement or some information isn't sent or stored
- Outside the conversion window: the time from click to conversion exceeds your configured window
- Reporting lag: Google Ads reports aren't instant; counting takes time
In other words, confirming the browser "can send" doesn't guarantee the data is actually counted as an ad conversion in production. Google Ads in particular requires a tie to a click, which is the single biggest trap here. For the "shows in GA4 but not Google Ads" gap, see Why Google Ads and GA4 conversion counts don't match.
Enhanced Conversions: recovering data lost to browser restrictions
Even with a perfectly configured tag, browser privacy features (ITP in Safari, third-party cookie restrictions in Chrome) can erode the gclid cookie before the user converts. Enhanced Conversions address this gap by sending hashed first-party data (email address, phone number, or mailing address) alongside the conversion hit. Google matches this hashed data against signed-in user data to attribute the conversion back to the click.
Setting up Enhanced Conversions doesn't change Methods 1–4 above, but it adds a verification step: confirm that the hashed user_data field is actually being sent with the conversion request. You can check this in Tag Assistant (look for the user_data key in the conversion event payload) or in DevTools Network by inspecting the request body to googleadservices.com. If the field is missing or empty, Enhanced Conversions won't recover anything.
If you use server-side tagging, Enhanced Conversions require the user_data object to be forwarded from your web container to your server container — a step that's easy to miss. See How to verify Enhanced Conversions and Server-side GTM verification for the full setup and testing workflow.
What local checks alone can't tell you
All four methods are useful, but checking once, by hand, on your own machine has two structural limits.
- Your environment isn't your real users' environment. Login state, extensions, consent state — your setup can look fine while real visitors' conditions drop data.
- Ad-click conversions are hard to verify. Google Ads only counts visits tied to an ad click (gclid). To truly reproduce that by hand, you'd need to click a live ad and follow the path — which counts as a self-click and risks an ad-policy violation (Is clicking your own Google Ads against the rules?).
Judging "it's firing, so we're good" from a local tool is exactly how teams miss conversions that aren't being counted on the real path real visitors take.
A checklist to verify with confidence
Work through what's free and quick first, in order.
- Is the Google tag (
AW-) on every page? - Is the conversion event snippet on the page where it completes (thank-you / complete)?
- Does the conversion fire in at least one of Methods 1–3?
- Is the Conversion Linker / auto-tagging enabled, with
gclidcarried over? - Do Google Ads conversion diagnostics show "Recording conversions"?
- If using GTM, is the change published?
- Is the consent banner (consent mode) state stopping measurement?
- Are the conversion action settings — counting method, conversion window — as intended?
- If your checkout or conversion page is on a different domain, is cross-domain linking configured?
- If your site is a SPA, does the conversion tag fire on route changes (not just page load)?
- If you use Enhanced Conversions, is
user_dataactually present in the conversion request? - Is it counted under real production user conditions (not just your one test)?
Frequently asked questions (FAQ)
Q. If Tag Assistant says "fired," am I good? A. That confirms "sent (②)" only. Whether Google Ads counted it as an ad conversion (③) is a separate question. Confirm it's actually recorded in conversion diagnostics and isn't dropping under real conditions before you relax.
Q. Why does it record in GA4 but show 0 in Google Ads? A. The classic cause is a missing click ID (gclid). GA4 measures with its own mechanism, but Google Ads counting requires a tie to an ad click. Check auto-tagging, the Conversion Linker, and gclid loss on redirects. See how gclid works and why the counts don't match.
Q. How long until it shows in the count? A. Google Ads conversions are counted with a lag, not instantly — sometimes hours, sometimes into the next day. Don't conclude "it's broken" just because it isn't immediate.
Q. Should I click the ad to confirm? A. Clicking your own ad is treated as an ad-policy violation (self-clicking) and risks account review or suspension. Verify from outside your own account — an independent environment — instead.
Q. Why is the same conversion counted twice?
A. Typical causes: the event snippet was placed site-wide, the thank-you page was revisited via reload or back button, or the tag is loaded via both hardcoded gtag and GTM. In DevTools Network, count how many conversion requests fire per action to isolate it (causes of double counting and how to check).
Q. My checkout is on a different domain — do I need extra setup?
A. Yes. The gclid cookie is first-party and cannot cross domain boundaries on its own. Use the gtag.js linker or GTM's cross-domain settings to pass the _gl parameter to the checkout domain, or the conversion will fire without a click ID and never be counted. See cross-domain tracking.
Q. Does Enhanced Conversions replace normal conversion tracking? A. No. Enhanced Conversions is an add-on, not a replacement. The standard conversion tag still fires; Enhanced Conversions supplements it with hashed first-party data so Google can recover attributions that cookie loss would otherwise erase. See verifying Enhanced Conversions.
Q. My site is a single-page application — why does the tag only fire once?
A. SPAs don't perform full page reloads on navigation, so a page-load trigger fires only on the initial load. Switch to a history-change trigger in GTM, or call gtag('event', 'conversion', {...}) directly when the conversion view renders. See SPA conversion tracking.
Q. Does the same approach apply to GA4 tags and the Meta Pixel? A. The "installed / fires / recorded" framing is shared. See verifying your GA4 tag and verifying your Meta Pixel for each platform's steps.
Conclusion: don't stop at "it fires" — verify it's counted in production
Methods 1–4 are enough to confirm "firing." What matters is the step after: confirming the conversion is actually counted, on the real path your visitors take (the path that includes an ad click), in production.
ConversionOK runs your live page in an independent, isolated browser and intercepts the conversion requests that are actually sent, then verifies them — with no need to click your own ad and no interference from your office environment. Start with a free static check to confirm the entry point of your measurement.