How do you check if your Google Ads conversion tracking is actually working?
- Published
- 15 min read
In short: "is my Google Ads conversion tracking working?" is really three separate questions: does the conversion tag fire, can Google Ads tie the conversion to an ad click, and can Smart Bidding use what it records? Tag Assistant answers the first in two minutes. The second is the one people test wrong, because a test order you place yourself will never appear in Google Ads. The third decides what your bids are based on, and it is the one nobody checks. A "Recording conversions" status has never proved a conversion signal you can bid on.
Tag Assistant shows the conversion tag firing on the order confirmation page. The conversion action reads "Recording conversions". The tROAS campaign is beating its target week after week.
And yet Google Ads counted 1,120 purchases last month, on a store whose back office recorded 940 orders in total, across every channel combined.
Both things are true at once. The tag fires, and the signal is wrong. Six months earlier someone imported the GA4 purchase event into Google Ads "to have both". Nobody set it to secondary. Two primary conversion actions now count the same order, Smart Bidding sees twice the revenue that actually came in, and it has been raising bids to chase it.
This is where Google Ads differs from GA4 and from Meta. GA4 gives you DebugView and Meta gives you Test Events: a live stream where you watch your own event arrive. Google Ads has no equivalent, because it only records a conversion it can attribute to an ad interaction. Your test order never shows up, whether the tracking works or not. So the middle level cannot be checked by watching. It has to be checked by following the click identifier from the ad to the order.
This article takes the three levels in order: what each one proves, what it doesn't, and when to move to the next.
The three questions hiding inside "is my conversion tracking working?"
When someone asks whether Google Ads conversion tracking works, they are stacking three questions of increasing difficulty:
- Does the conversion tag fire? Does a conversion request leave the browser, with the right label, value and transaction ID.
- Can Google Ads attribute it? Does the click identifier survive from the ad to the confirmation page, so Google Ads can tie the conversion to a click and record it.
- Can Smart Bidding use it? Is the conversion counted once, marked primary, valued correctly and sent with the consent signals Google needs.
Each level needs different tools, and critically: passing one level says nothing about the next. A tag that fires can carry no gclid context at all, because a redirect stripped it on the landing page three steps earlier. A conversion Google Ads records cleanly can be counted a second time by an imported GA4 conversion, or sit in a secondary action Smart Bidding ignores.
The line to remember: the levels are hierarchical in verification order, not in importance. The third one is what your bids rest on, and it's the one that gets skipped.
Level 1: check the conversion tag fires
Four methods, fastest to most reliable:
- Tag Assistant. Connect the site at tagassistant.google.com and browse to the confirmation page. The Google tag (
AW-followed by your conversion ID) appears in the summary, and everyconversionevent it sent is listed with itssend_totarget. When Google Ads is deployed through GTM, this is the same session as GTM Preview mode, which also shows why the tag fired: which trigger, on which event, with which variables resolved. - The browser Network tab. Filter on
?random. Every request togoogleadservices.com/pagead/conversion/<conversion ID>/is a conversion hit leaving the browser, and its parameters are readable straight from the URL:labelcarries the conversion label,valueandcurrency_codethe amount,oidthe transaction ID. Ifoidis absent on a purchase conversion, stop here: you have already found the cause of your future duplicates. - The console. Typing
dataLayerreturns the push history for the page. This is the prerequisite for everything else: if the order value and the order ID aren't in thedataLayerat the moment the tag fires, no tag can send them. If that word is new to you, start with this article. - The label itself. Open the conversion action in Google Ads (Goals, then Conversions, then Summary), display its tag setup and compare its conversion ID and label with what the Network tab shows. A tag faithfully sending to a label from a conversion action someone deleted and recreated last year fires perfectly and feeds nothing.
What this level proves: the firing mechanism is wired up, to an address.
What it doesn't prove: that the address is the right one, that the conversion will be tied to a click, or that it will be counted once. Tag Assistant confirms a request left the browser. The green check is a plumbing test.
Level 2: check Google Ads can attribute the conversion
The tag fires. Now: can Google Ads connect it to a click?
This is the level where most checks go wrong, because it cannot be checked the obvious way. Google Ads only records conversions that follow an ad interaction. Place a test order after typing the URL yourself and nothing will appear in the conversion columns, whether the tracking is perfect or broken. Teams read that silence as an outage, or they click their own ads to test, which costs money and pollutes the data they are trying to verify.
What you check instead is the chain that makes attribution possible:
- Auto-tagging is on. In the account settings. Without it, ad clicks carry no
gclidand nothing downstream can work. - The click identifier survives the landing page. Open your landing page with a test parameter, for example
?gclid=test123, and watch the URL through every redirect: http to https, locale redirect, consent wall, mobile subdomain. A redirect that drops the query string removes the only link between the click and the conversion. On iOS traffic the identifier arrives asgbraidorwbraidinstead, and the same test applies. - The identifier is stored. After landing, the first-party
_gcl_awcookie should exist and contain your test value. With GTM it is the Conversion Linker tag that writes it, and it has to fire on every page, landing pages included. Withgtag.jsthe Google tag handles it natively. If the cookie is missing, the conversion tag will fire on the confirmation page with nothing to attribute to. - The chain survives the checkout. If the checkout or the payment page runs on another domain, the cookie stays behind unless cross-domain linking is configured. Complete a journey from the test landing URL to the confirmation page and check the cookie and the conversion hit on the last page.
- Google Ads reports what it received. The status column on the conversion summary ("Recording conversions", "No recent conversions", "Inactive", "Misconfigured", "Needs attention") and each action's diagnostics. Both lag by hours, and conversions imported from GA4 lag longer. Never diagnose an outage from the Google Ads interface on release day.
What this level proves: a real ad click can travel to a recorded conversion.
What it doesn't prove: that the recorded conversion is right. The status says conversions are arriving. It doesn't say how many of them are duplicates, what value they carry, or whether bidding looks at them. Reading what actually lands in each platform is a separate exercise.
Level 3: check Smart Bidding can use it (the level everyone skips)
This is where the question you actually care about lives, and no debug tool will settle it. It is settled by reading how the conversion actions are configured, and by comparing what Google Ads counts against an outside truth.
- List your primary conversion actions. Only primary actions feed the "Conversions" column and Smart Bidding; secondary ones only appear in "All conv." Two cases break things here. Two primary actions measuring the same purchase, typically the native Google Ads tag and an imported GA4
purchase, count every order twice, and Google Ads never deduplicates across two different conversion actions. The reverse case: the action you just spent a sprint implementing was created as secondary. It fires, it records, and bidding ignores it. - Check the counting and the transaction ID. A purchase action should count "Every" conversion, and send the order ID as
transaction_id, which becomesoidin the hit. Google Ads deduplicates conversions with the same transaction ID within a single action. Without it, a customer who reloads the confirmation page or reopens it from the order email counts as a second sale. - Run the invariant test. Google Ads only sees orders attributed to ads, so it should never match your back office: it should be lower. On a closed day, compare purchase conversions using the "Conv. (by conv. time)" column against total back-office orders. The default "Conversions" column credits conversions to the day of the ad click, not the day of the purchase, and comparing it to the back office is the most common false diagnosis in this area. If Google Ads reports more purchases than the back office recorded from all channels combined, something is being counted twice. No attribution model explains an overcount of the whole.
- Run the average order value test. Conversion value divided by conversions, against the back office's average order value, over the same period. The two will not match exactly, but a ratio near 2 or near 0.5, or a jump after a release, means the value is wrong: tax included on one side and excluded on the other, shipping added, an amount sent in cents, the wrong currency. tROAS optimizes on exactly this number.
- Check the consent signals. Read the
gcsandgcdparameters of the conversion hit, which carry the consent state. In the EEA, since March 2024, Google requires thead_user_dataandad_personalizationsignals from Consent Mode v2 in addition to the original two. A CMP that only sends the original signals leaves you with conversions that exist but can't be fully used for measurement or audiences, and nothing in the interface flags it loudly.
The invariant test is the single most important check in this article, and the most commonly missing. It is the only one comparing your measurement to something other than itself. Without it you are verifying the internal consistency of a system that can be consistently wrong, and one that bids with your money while it is wrong.
The line to remember: "Recording conversions" proves something arrived. Only the back office proves the count is plausible, and only the conversion action settings prove bidding is looking at the right thing.
The verification table
| Level | Check | Tool | Signal it's broken |
|---|---|---|---|
| 1 | The conversion tag fires | Tag Assistant, Network tab | No ?random request on the confirmation page |
| 1 | The information exists upstream | dataLayer in console | Order value or ID missing at push time |
| 1 | The hit targets a live action | Label in the Network tab vs conversion action | Label from a deleted or recreated action |
| 1 | The purchase carries a transaction ID | Network tab, oid parameter | oid absent |
| 2 | Ad clicks carry an identifier | Account settings | Auto-tagging off |
| 2 | The identifier survives landing | Landing URL with ?gclid=test123 | Parameter gone after a redirect |
| 2 | The identifier is stored | _gcl_aw cookie, Conversion Linker | Cookie absent after landing |
| 2 | The chain survives checkout | Full journey to confirmation | Cookie lost on the checkout domain |
| 3 | Nothing is counted twice | Primary actions list, invariant test | Two primary actions for one purchase, or Ads above back office |
| 3 | Bidding sees the action | Primary / secondary setting | Key action secondary |
| 3 | Values are right | Value per conversion vs back-office AOV | Ratio far from 1, or a jump after a release |
| 3 | Consent is fully signalled | gcs / gcd in the hit, EEA traffic | ad_user_data never sent |
The bottom four rows are the ones no debug tool will ever surface, and the ones that cost the most. Here, directly in bids.
When everything looks fine and nothing is
Silent failures are this field's specialty, because they produce no error. They produce plausible numbers, and on Google Ads the most expensive ones produce flattering numbers.
- GA4 import and native tag, both primary. Every order counts twice, ROAS looks excellent, and tROAS raises bids to chase revenue that doesn't exist. The most expensive failure on this list, and the hardest to question, because nobody audits good news.
- A redirect eats the
gclid. A new locale redirect or consent wall drops the query string. The tag still fires on every order, Tag Assistant is still green, and recorded conversions quietly fall. Smart Bidding concludes the campaigns got worse and pulls back. - The Conversion Linker doesn't fire on landing pages. Its trigger was restricted to "all pages except…", or it waits for a consent event that fires after the landing URL is gone. Same symptom, different cause.
- No transaction ID. The confirmation page counts again on every reload, every back button, every revisit from the order email. Volumes creep up by a few percent, never enough to trip an alert.
- Value sent in cents, or with tax on one side only.
4990instead of49.90. The conversion records, and tROAS is now optimizing on a number that is wrong by a factor. - Two tags on the confirmation page. A hardcoded snippet left over from an old agency plus the GTM tag, or a Shopify app plus a manual install. Double counting inside one action is avoided only if both send the same transaction ID. One of the most common mistakes in this whole area.
- The tag fires before consent. Data arrives, but in a legally untenable position, and often with a consent setup that undermines the measurement anyway.
- The failure hits one segment only. Safari, iOS, the app-to-web journey, one country's domain. Global volume barely moves, so nobody notices.
What they share: none of them is visible without a reference stating what should be sent, on which page, with which parameters, to which conversion action. That reference is the tracking plan. Without one, you are not verifying your conversion tracking, you are watching it.
Why this check doesn't hold over time
Everything above describes a point-in-time check. Done properly across all three levels, it takes half a day on a mid-sized e-commerce site, and that is for Google Ads alone. Most of our clients run it alongside GA4, Meta and at least one of TikTok or Pinterest, each with its own event names, its own required parameters and its own debug tool. The problem isn't doing it once. It's that it stays valid until the next release, which often means days.
And the gap between collection breaking and somebody noticing is measurable. Our own figures put the average at two weeks, except when the regression touches revenue directly, because there someone is looking daily. Google Ads makes that window worse in two ways. Its interface lags by hours, so a release-day check sees nothing. And Smart Bidding does not wait for you: it keeps learning from the broken signal every day it stays broken, and a doubled conversion count looks exactly like a campaign that finally works.
That is what MayIA° automates. LLM agents replay your journeys like a user, capture the hits leaving the browser for every platform at once (Google Ads, GA4, Meta, TikTok and the rest) and compare each one against what your tracking plan declares: conversion present on the right page, label, value, currency and transaction ID populated and correctly typed, nothing sent twice. The comparison runs at each deployment rather than when somebody eventually questions a ROAS. Level 3, the one nobody has time to redo by hand every release, becomes systematic. If you want the full manual method before automating anything, it's in how to test a data layer. The same three-level logic applied to Google Analytics is here and to the Meta Pixel here. And if you're comparing what the market offers, we've documented the automated data layer QA tools.
In closing
"Is my Google Ads conversion tracking working?" is a badly posed question, and that's what makes it expensive: it always gets a reassuring answer. The tag fires and the status says "Recording conversions", so it works.
Ask it in three parts instead. Does the tag fire, can Google Ads tie it to a click, can Smart Bidding use it? The first takes two minutes with Tag Assistant. The second takes a test landing URL and a cookie, not a test order. The third takes your back office and a look at which conversion actions are primary. That's where the budget decisions are actually made.
If you remember one thing: Google Ads will never show you your own test conversion, and it will happily show you a conversion twice.
Want to know what your conversion tags are really sending, across every platform, without spending the half day? Have it audited. We run your critical journeys and tell you where the gaps are.
FAQ
How do I know if my Google Ads conversion tracking is working?
In three steps, not one. Tag Assistant and the Network tab confirm the conversion tag fires with the right label, value and transaction ID. A test landing URL with a gclid and the _gcl_aw cookie confirm Google Ads will be able to tie the conversion to a click. Then the list of primary actions and a reconciliation against the back office confirm Smart Bidding is bidding on a correct signal. The third step is the only one that proves anything about signal quality.
Why doesn't my test conversion show up in Google Ads?
Because Google Ads only records conversions that follow an ad interaction. An order placed after typing the URL yourself is tied to no click, and will never appear in the conversion columns, whether the tracking works or not. Check instead that the conversion hit fires, then that the gclid chain holds from the landing page to the confirmation page. And don't click your own ads to test: it costs money and pollutes the data.
Why does Google Ads report more conversions than my back office?
Almost always because the same order is counted twice. The most common cause is a GA4 purchase imported into Google Ads next to the native conversion tag, with both actions set as primary: Google Ads never deduplicates across two different actions. Other causes are a missing transaction ID, which recounts every reload of the confirmation page, and two tags on the same page. Google Ads only sees orders attributed to ads, so it cannot legitimately exceed the back-office total.
What is the difference between a primary and a secondary conversion?
Only primary actions feed the Conversions column and Smart Bidding strategies. Secondary actions are recorded and visible in All conv., but bidding ignores them. A key action created as secondary by mistake fires, records, and influences no bid; two primary actions measuring the same purchase make bidding chase doubled revenue.
Why don't Google Ads conversions match my back office for a given day?
First, because Google Ads only counts orders attributed to ads, not every order. Second, because the default Conversions column credits each conversion to the day of the ad click, not the day of the purchase. To reconcile a closed day, use the Conv. (by conv. time) column and check it stays below the back-office total.
What does the Conversion Linker do in GTM?
It reads the click identifier (gclid, or gbraid and wbraid on iOS) from the landing URL and stores it in a first-party cookie, _gcl_aw, so the conversion tag can tie it to the order several pages later. It must fire on every page, landing pages included. If it is missing or fires too late, the conversion tag still fires normally but Google Ads records fewer conversions, with no visible error.
How often should I check my Google Ads conversion tracking?
At every release, because a check is only valid until the next deployment. Our own figures show a regression takes two weeks on average to be noticed. Google Ads makes that worse: its interface lags by hours, and Smart Bidding keeps learning from a broken signal every day it stays broken. A doubled conversion count looks exactly like a campaign that finally works.