Google Ads · Conversion Tracking

Google Ads Conversion Tracking Not Working? The 90-Second Triage and 7 Fixes That Actually Work

Run this 90-second triage first, then fix the 7 most common failure modes across tag layer, data layer, and attribution layer.

B6
By B6 TeamKampaioMay 14, 2026 · 11 min read

TL;DR - The 90-Second Triage

If your Google Ads conversion tracking is broken, four checks resolve roughly 60% of cases before you touch any code. Run them in order.

Run in order · under 90 seconds total
1
Is the conversion action active?
Google Ads > Goals > Conversions > Summary
Status should say "Recording conversions". Anything else means the chain is broken upstream.
2
Does the conversion tag fire?
Google Tag Assistant on confirmation page
The Google Ads conversion tag should appear in the fired tags panel with the right event name.
3
Is the Conversions column visible?
Campaign view > Columns > Modify
Sometimes the data exists and the column is just hidden. Add "Conversions" and "Conv. value".
4
Is the action set as Primary?
Goals > Conversions > Conversion goal column
Primary feeds Smart Bidding. Secondary is observe-only and stays out of standard columns.
Still broken after these four? Skip to the three-layer model below and work top-down: tag layer is the most common, attribution layer is the rarest.

Still broken after these four? The issue is in one of three layers below. Work top-down. Tag layer issues are the most common and the easiest to verify.

The Three Layers Where Conversion Tracking Breaks

Conversion tracking is not one system. It is three stacked layers, and a failure in any one looks the same from the Google Ads UI: missing conversions.

</>   Layer 1
Tag layer
The gtag.js snippet or GTM tag itself. Missing on the right page, blocked, or firing on the wrong event.
Fixes 1, 2, 3
{ }   Layer 2
Data layer
What the tag is sending. Enhanced-conversion fields missing, duplicate fires from GA4 + direct gtag, gclid stripped.
Fixes 4, 5
  Layer 3
Attribution layer
What Google Ads does with the signal. Primary vs Secondary, view-through window, cross-device delay.
Fixes 6, 7

Identify your layer, jump to the fix. If you are not sure, start with Fix 1 and walk down. Tag layer breaks more often than data layer, and data layer more often than attribution.

Distribution of 100 conversion tracking issues from B6 audit runs. Tag layer is the easiest layer to diagnose, which is good news: most issues are also the most common.

Tag Layer Fixes (The First 60% of Cases)

Most conversion tracking issues live here. Either the tag is not on the page, not loading, or firing on the wrong event. Each fix below includes a five-minute verification step.

Fix 1: The Tag Is Missing on the Confirmation Page

The classic. Tag is deployed across the site, but the confirmation page was added later by a developer who did not redeploy the container. Or the checkout flow was updated and the tag did not move with it.

Verification: Install Google Tag Assistant (Chrome extension). Visit your purchase confirmation URL. Look for the Google Ads conversion tag in the fired tags panel. If you see no AW-XXXXXXXX tag, the snippet is missing on that page.

Fix paths:

  • GTM users: open your GTM container, find the Google Ads Conversion Tracking tag, check the trigger. It should fire on Page Path matching your actual confirmation URL (e.g. /thank-you, /order-confirmation) OR on a custom event called "purchase" pushed from the dataLayer. Update the trigger, publish the container version.
  • gtag.js users: open view-source: on your confirmation page in Chrome. Search for "AW-" in the page source. If absent, the snippet is missing. Add it inside the page template that renders after a successful order.
  • Shopify users: the new One-Click checkout (rolled out in 2024) bypasses the legacy "Additional Scripts" location. Use Shopify's Customer Events tracking pixel instead. The legacy spot still exists but does not fire on the new checkout.

Fix 2: The Tag Fires But Sends No Conversion Value

Tag fires. Reports show "1 conversion, $0 revenue" on every line. This usually means the value and currency parameters are missing or hardcoded to zero.

Verification: in Tag Assistant, click the firing conversion tag, switch to the Variables panel. Check that value has a non-zero number and currency is set (USD, EUR, etc.). If value shows 0 or undefined, the issue is data, not the tag.

Fix: in GTM, open the Google Ads Conversion Tracking tag and scroll to the Conversion Value field. Replace any hardcoded value with a dataLayer variable like {{DLV - ecommerce.purchase.value}}. If your site does not push ecommerce purchase data to the dataLayer at all, you need a developer to add a purchase event on the confirmation page with revenue and currency.

Why this matters specifically: Target ROAS bidding needs a value to optimize against. Zero-value conversions tell Smart Bidding to treat all purchases as equal, which collapses your tROAS strategy within days. We have seen accounts where this single bug cost 25 to 30% ROAS for three weeks before anyone noticed the dollar signs were all blank. Performance Max is especially sensitive here - low signal density turns the campaign into a budget-burner overnight. If pMax is the campaign type going dark, the Performance Max diagnostic playbook walks through the asset-group and Final URL expansion checks tracking alone won't catch.

Fix 3: The Tag Fires on the Wrong Event (Inflating Conversions 50x)

The silent killer. Trigger is set to "All Pages" or "Page View" instead of the actual purchase event. Every page view becomes a conversion. Numbers look incredible (CTR 4%, conv rate 12%) until someone checks revenue.

Verification: in Google Ads, open the conversion action and look at "Conversions per click." For a non-form-fill action it should be well under 1.0, usually 0.05 to 0.20. Above 1.0 means duplicate fires. Then compare 7-day reported conversions to 7-day actual Shopify or Stripe orders. Off by 10x or more = wrong trigger.

Fix: in GTM, re-check the trigger. It should be "Custom Event - purchase" or "Page View - Page Path contains /thank-you", NEVER "All Pages." gtag.js users: ensure the conversion call lives inside the purchase confirmation handler, not in a global script loaded on every page.

🛡️Aegis· Risk review
I scanned 47 conversion actions across one client portfolio last month. 12 were firing on page loads instead of purchase events. The account had inflated reported conversions by 38x for three months before anyone noticed. Smart Bidding had been chasing junk signal the entire time.

Data Layer Fixes (When Tag Fires But Data Is Wrong)

The tag fires. Tag Assistant shows green. Something still does not add up. Either the data leaving the page is wrong, or two systems are sending the same conversion.

Fix 4: Duplicate Conversions From GA4 Import + Direct gtag

Common after teams enable GA4 conversion import to Google Ads but forget to disable the original direct Google Ads conversion tag. Both fire on the same purchase. The reported conversion count doubles. Smart Bidding optimizes against the inflated number.

Verification: in Google Ads, Goals, Conversions, Summary, look at the Source column. If you see two actions tied to the same purchase event (one source "Google Analytics 4 (GA4) property", one source "Website"), and both are "Include in ‘Conversions’", you have duplicates feeding bidding.

Fix: pick one source. The cleaner setup for ecommerce is GA4-imported because it brings richer ecommerce context (item IDs, categories, coupon codes). Disable the legacy direct Google Ads tag, or change one of the actions to "Secondary" so it does not feed Smart Bidding.

PropertyDirect Google Ads gtagGA4 import to Google Ads
Setup complexityLower (one tag)Higher (GA4 ecommerce required)
Latency5-15 minutes30-60 minutes
Ecommerce context (items, coupons)LimitedRich (full GA4 schema)
Match rate with enhanced conversionsStrongStrong
Risk of duplicate-fire bugLow (one source)High if direct gtag stays on
Recommended forLead-gen, simple ecomFull ecommerce, multi-funnel
Pick one source per event. Running both is the most common duplicate-conversion bug we see at the data layer.

Caveat: Smart Bidding has been optimizing against the inflated number. After deduplication, expect a 20 to 30% drop in reported conversions and a temporary "Learning Limited" status for 2 to 3 weeks while the algorithm recalibrates.

Fix 5: Enhanced Conversions Silent Failure (Missing Hashed Email)

Enhanced conversions require hashed user identifiers (email, phone, name, address) sent alongside each conversion. If those fields are missing, the tag still fires fine, but enhanced conversions silently fail. You see "Recording" in the diagnostics with a yellow warning, and your match rate never improves.

Verification: Google Ads, Tools, Conversions, click your action, open the Diagnostics tab. Look for "Enhanced conversions status: Recording" with a yellow warning detail like "user-provided data is missing."

Fix: in GTM, open the Google Ads Conversion Tracking tag, scroll to "Include user-provided data from your website" and set to True. Then map each field. The most important: email from {{DLV - user.email}} on the confirmation page. If your dataLayer does not include user.email at purchase, a developer needs to add it. Email is the highest-match-rate field, especially on iOS Safari where cookies are restricted. Full setup spec is at the Google Ads Help page for enhanced conversions.

Attribution Layer Fixes (Tag and Data Are Fine, But Conversions Still Look Low)

This is where smart operators get stuck. Tag fires correctly. Tag Assistant shows green. dataLayer is populated. But Google Ads still shows fewer conversions than your Shopify or CRM. The cause is upstream of the tag in the attribution settings.

Fix 6: Conversion Action Is Not Set as Primary

Google Ads splits conversion actions into "Primary" (feeds Smart Bidding) and "Secondary" (observe-only). A common mistake: agency creates a new "Purchase" action but leaves it as Secondary while an older "Lead form submit" stays Primary. Smart Bidding optimizes for lead forms, and reports show purchases as if they do not count.

Verification: Google Ads, Goals, Conversions, Summary. Each action has a "Conversion goal" column. Primary actions are part of an Account-default goal or a campaign-specific goal. Secondary actions show "Secondary action."

Fix: change the correct action to Primary inside the goal. If you have multiple Primary actions (e.g. Purchase + Lead), use the "Account-default" goal at the goal level so all campaigns optimize against both unless overridden.

Caveat: changing the primary action mid-flight resets Smart Bidding learning for affected campaigns. Plan the change for the start of a new week, not Friday afternoon, and budget 7 to 10 days for re-stabilization.

Fix 7: gclid Stripped at Checkout (Attribution Window Mismatch)

Subtle but common in headless storefronts, third-party checkouts, and Shopify Plus with custom checkout extensions. The user clicks an ad (gclid in the URL), navigates to checkout, and somewhere in the redirect chain the URL parameters get stripped. The conversion fires on the confirmation page WITHOUT gclid attached. Google Ads cannot attribute it back to the click.

The gclid attribution chain. The break almost always happens between landing and checkout when a third-party checkout strips URL parameters. Persisting gclid in a first-party cookie on landing prevents the loss.

Verification: open Chrome DevTools, Network tab, preserve log. Click a Google Ads ad in a test session and walk through the entire checkout. Trace the URL through each redirect. If gclid=... is present on the landing page but missing by the time you hit the confirmation page, it has been stripped.

Fix: persist gclid in a first-party cookie on landing. Read it back on the confirmation page and pass it to the conversion tag as a custom parameter. If your CRM stores gclid at lead capture, use the offline conversion import flow with CRM IDs instead.

In our audit data, this issue typically hides 15 to 25% of conversions in Shopify Plus and headless DTC stores. It is the most likely culprit when your Shopify dashboard shows 100 orders and Google Ads shows 75.

When the Tracking Is Fine But Conversions Still Look Low

Not every "missing conversion" is a tracking bug. Sometimes the tracking is correct and the gap is real, for reasons that have nothing to do with your tag setup.

Cross-device delay. Google Ads cross-device conversions can take up to 7 days to appear. Daily reports under-count on the most recent days. Open the "Days to conversion" report in Google Ads. If you see meaningful conversion volume in the 1 to 7 day bucket, your daily numbers are always behind reality.

Modeled conversions. Since iOS 14.5 and increasingly restrictive cookie policies, Google models a percentage of conversions where direct measurement is blocked. These appear with a small delay and are aggregated. If you compare ad-platform numbers to CRM line-by-line, you will always see a gap of roughly 5 to 15%.

View-through conversion window. Default is 30 days for view-through. If set to 1 day (a common over-conservative setting after the 2023 attribution updates), you lose view-through conversions where the user saw the ad on Display or YouTube and converted days later via direct or organic.

Cross-channel cannibalization. A conversion attributed to "Direct" in GA4 may have been driven by a Google Ads click. This is an attribution model question, not a tracking bug. Switching to data-driven attribution in Google Ads (already the default for most accounts since 2023) usually surfaces 10 to 20% more credit than last-click.

🐝Buzz· Bidding
When tracking breaks for 7 days, my bid model goes blind. I drop bids by an average of 40% to avoid wasting spend, which slashes impression share. Even after tracking is fixed, it takes me 2 to 3 weeks to rebuild confidence on a $10K/month account. Catch tracking issues in 24 hours and you save 3 weeks of recovery.

Stop the Bleeding: Set Up an Always-On Tracking Audit

The pattern is consistent across every account we have audited. Tracking breaks silently. Smart Bidding degrades within 3 to 7 days. Two weeks of spend underperforms. Then someone notices the reported conversions look wrong and goes looking for the cause. By then, 2 to 3 weeks of bidding recovery is also on the bill.

The fix is daily auditing, not annual setup. Most accounts get a clean tracking implementation once, then nobody checks it again until something breaks visibly.

This is what Aegis (the audit agent in B6) does. Daily scan across all conversion actions in your account. Flags: zero-fire-but-was-firing within 48 hours, duplicate-fire rate above baseline, primary/secondary misclassification, GA4 conversions imported but not active, enhanced conversions recording with missing user data. On a typical 12-conversion-action account we see 3 to 4 issues surfaced on the first audit run.

Scan your account in 60 seconds. We are not selling a tracking setup service (that is a one-time agency job). We are the always-on auditor that catches what humans miss on day 8.

Aegis also re-runs an audit after every detected change in your account, so when someone edits a conversion action or adds a new one, the re-check happens within minutes instead of next month. See how Aegis works and the rest of the seven B6 agents.

FAQ - Conversion Tracking Edge Cases

Why does my Google Ads conversion count differ from GA4? Different attribution models (Google Ads is moving to data-driven, GA4 defaults to data-driven), different conversion windows, and different de-duplication rules. A 10 to 20% gap is normal. A gap above 30% means investigate, usually starting with duplicate import (Fix 4 above).

What does "Recently a conversion has not been recorded" mean? An active conversion action had fires in the past but has logged zero fires in the past 7 days. Cause is either the tag broke or you genuinely had zero conversions for that action in 7 days. Check both, starting with Tag Assistant on the relevant page.

How long does Smart Bidding take to recover after tracking is fixed? 7 to 21 days. The algorithm needs to re-accumulate enough signal to leave "Learning Limited." During recovery, expect lower spend, lower impression share, and conservative bidding. Do not change other settings during this window. Related: what to do when Google Ads ROAS drops suddenly (most ROAS drops are downstream of tracking).

Does enhanced conversions help if my regular conversions are working? Yes. Enhanced conversions improve match rate by 5 to 15%, with the biggest gains on Safari and Firefox where third-party cookies are blocked or restricted. Even on a clean setup, the bump is worth the 20-minute configuration.

Should I use Google Ads gtag or import from GA4? Pick one. GA4 import gives richer ecommerce context. Direct gtag is simpler and has lower latency. Never run both for the same event (see Fix 4). For most accounts we recommend GA4 import once GA4 ecommerce events are clean.

Run an Account Audit in 60 Seconds

Connect your Google Ads account to B6 in read-only Co-pilot mode at $99/month. Within 60 seconds, Aegis audits every conversion action: tag fires, duplicate flags, primary/secondary classification, enhanced conversion match rate, GA4 import status. You see a scorecard that lists each issue with the specific fix path, in the same structure as this article.

If you fix tracking once and check it once a quarter, you accept three weeks of degraded Smart Bidding every time something breaks. Daily auditing turns three weeks of damage into 24 hours.

Scan your account in 60 seconds or see how the seven B6 agents work.