LAB LIVE
SCANNING410 CAMPAIGNS
ANOMALIES18 FLAGGED
AVG LIFT+4.15× ROAS
Analytics

Why GA4 Shows Zero Conversions from Google Ads — and How to Fix It

Google Ads reports 12 conversions. GA4 shows 0 from paid search. The campaign looks profitable in one place and invisible in another. This is one of the most common tracking problems we fix in audits — and it always has a specific cause.

Alex Sterling··9 min read

The symptom is always the same: Google Ads dashboard shows conversions, GA4 shows none — or a fraction — attributed to paid search. Your client asks why the numbers don't match. You open both dashboards and see two completely different realities.

The root cause is almost never “GA4 is broken.” It's one of six specific problems, each with a direct fix. Here's how to diagnose which one you're dealing with.

Why GA4 and Google Ads Never Agree Perfectly

Before diagnosing a problem, it's important to understand that GA4 and Google Ads will never show identical conversion numbers — even when everything is configured correctly. The gap has structural causes:

FactorGoogle Ads countsGA4 counts
Attribution modelData-driven (default since 2021) or last-clickLast-click (default), configurable per channel group
Attribution window30 days click, 1 day view (configurable)30 days (configurable in GA4 attribution settings)
Cross-deviceIncludes modeled conversions across devicesSession-scoped, no cross-device modeling by default
ConsentUses modeled conversions for users who declined cookiesNo data for users without consent unless Consent Mode v2 active

A 10–20% discrepancy between GA4 and Google Ads is normal and expected. A 50%+ gap — or zero conversions in GA4 — is a tracking problem, not a methodology difference.

The 6 Causes of Zero (or Near-Zero) GA4 Conversions from Google Ads

1. gclid Is Not Passing Through to the Landing Page

When someone clicks a Google Ad, Google appends a gclid parameter to the landing page URL. GA4 reads this parameter to identify the click as coming from Google Ads. If the gclid is stripped — by a redirect, a CMS setting, or a URL rewrite rule — GA4 cannot connect the session to Google Ads, and the conversion is attributed to direct or organic instead.

How to checkClick one of your own Google Ads (from an incognito window). Look at the URL after landing. If you see ?gclid=Cj0K... in the address bar, the parameter is passing. If the URL is clean without gclid, the parameter is being stripped. Also check: does your site use a redirect from a tracking domain before landing on the final URL? Redirects are the most common gclid-stripping culprit.

Fix: Enable Auto-tagging in Google Ads (Tools → Account settings → Auto-tagging → On). If auto-tagging is already on, check your server-side redirects and ensure they preserve query parameters. In Apache: RewriteRule with[QSA] flag. In nginx: use $is_args$args in the redirect target.

2. Consent Mode v2 Is Not Configured (EU Traffic)

Since March 2024, Google requires Consent Mode v2 for all advertisers serving ads in the EU/EEA. When a user declines cookies and Consent Mode v2 is not implemented, the GA4 tag fires in a “denied” state — meaning no data is collected for that user at all. In markets with high cookie refusal rates (Germany, France, Netherlands), this can suppress 30–60% of GA4 sessions and conversions from paid channels.

Real exampleA German dental clinic was seeing 80% fewer conversions in GA4 than in Google Ads. After implementing Consent Mode v2 with a compliant CMP (Cookiebot), GA4 began receiving modeled conversion data for users who declined consent. The gap dropped from 80% to 18% — within normal range for a DE audience with high refusal rates.

Fix: Implement Consent Mode v2 via your CMP (Cookiebot, Usercentrics, CookieYes) or via GTM using the Consent Mode template. Verify in GA4 DebugView that ad_storage and analytics_storagesignals are firing correctly before and after consent is given.

3. GA4 Conversion Event Is Not Marked as a Conversion

GA4 tracks events. Not every event is a conversion. In GA4, you must explicitly mark an event as a “key event” (previously called a conversion) in Admin → Events. If your purchase or lead event fires but isn't marked as a key event, it will appear in the Events report but nowhere in the conversion attribution reports — including the Google Ads channel attribution.

Fix: Go to GA4 Admin → Events → find your conversion event (e.g. purchase, generate_lead, form_submit) → toggle “Mark as key event” to On. Allow 24–48 hours for data to appear in attribution reports.

4. GA4 Property Is Not Linked to Google Ads

GA4 attribution for Google Ads channels requires an active link between the GA4 property and the Google Ads account. Without this link, GA4 cannot attribute sessions to specific Google Ads campaigns — they appear as generic “google / cpc” without campaign detail, or sometimes fall into Unassigned entirely.

Fix: GA4 Admin → Product Links → Google Ads Links → Add link → select your Google Ads account. After linking, also enable “Enable Google Signals” in Data Settings → Data Collection if cross-device reporting matters.

5. Attribution Window Mismatch

Google Ads default attribution window is 30 days for clicks. GA4 default lookback window is also 30 days — but configured separately in Admin → Attribution Settings. If someone changed the GA4 attribution window to 7 days (a common mistake made while troubleshooting), any conversion happening more than 7 days after a click is attributed to a later touchpoint or direct — not the original Google Ads click.

Fix: GA4 Admin → Attribution Settings → Reporting attribution model and lookback window. For most accounts: Data-Driven attribution with 30-day click window. Check that this matches or is close to your Google Ads attribution window to minimize structural discrepancy.

6. Cross-Domain Tracking Is Not Configured

If your checkout or payment process crosses to a different domain (e.g., from yourstore.com to checkout.yourstore.com or a third-party payment page), GA4 starts a new session on the second domain. The original gclid from the first domain is lost. The conversion on the payment page is attributed to direct — not to the Google Ads click that initiated the journey.

How to checkIn GA4 → Explore → create a Funnel Exploration. Set Step 1 as your landing page URL, Step 2 as your payment page URL. If the funnel shows a 100% drop-off at Step 2, cross-domain tracking is not working — users are not being recognized as the same session across domains.

Fix: GA4 Admin → Data Streams → your web stream → Configure tag settings → Configure your domains → add all domains that are part of the user journey. If using GTM, add all domains in the Cross-Domain Measurement setting of the Google Tag configuration.

Diagnosis Checklist: Work Through This in Order

Auto-tagging enabled?Google Ads → Tools → Account settings → Auto-tagging: On.
gclid in landing URL?Click your own ad incognito → check URL for gclid parameter. If missing: redirect is stripping it.
GA4 → Google Ads link active?GA4 Admin → Product Links → Google Ads Links: linked account visible and active.
Conversion event marked as key event?GA4 Admin → Events: target event has “Mark as key event” toggled On.
Consent Mode v2 active for EU?Test via GA4 DebugView: load page, decline consent, confirm ad_storage = denied fires.
Cross-domain configured?GA4 Admin → Data Streams → Configure domains: all checkout/payment domains listed.
Attribution windows match?GA4 Admin → Attribution Settings: lookback window same as Google Ads conversion window.

How to Verify Tracking Is Working After a Fix

After making changes, don't wait 48 hours hoping the data will improve. Use GA4 DebugView to verify in real time:

01
Enable DebugView

Open GA4 → Admin → DebugView. In Chrome, install the Google Analytics Debugger extension and enable it. Every event you trigger on your site will appear in real time in DebugView.

02
Click your own ad and complete a test conversion

With DebugView open, click a Google Ad (incognito + DebugView tab side by side, or use a test conversion event). Verify: (a) the session_start event shows source: google andmedium: cpc, (b) your conversion event fires and appears in DebugView, (c) the gclid is visible in the event parameters.

03
Check Realtime report for source/medium

GA4 → Reports → Realtime. After your test session, look forgoogle / cpc in the Traffic by Source panel. If you see direct / (none) instead, the gclid is not passing or auto-tagging is off.

One more thingGA4 attribution reports have a 24–72 hour data processing delay. Even after confirming events fire correctly in DebugView, the Acquisition reports won't update immediately. Use DebugView and Realtime for same-day verification; use Acquisition → Traffic Acquisition for historical analysis after the delay passes.

When the Gap Is Normal vs. When It's a Problem

Gap sizeLikely causeAction
5–20%Structural: model differences, cross-device, attribution windowNormal. No action needed.
20–40%Consent Mode missing or partial EU coverageImplement Consent Mode v2. Check CMP coverage rate.
40–70%gclid stripping, cross-domain issue, or attribution window mismatchRun full checklist above. DebugView to isolate.
70–100%GA4 not linked to Google Ads, or conversion events not marked as key eventsCheck GA4 Product Links and Events settings first — fastest fixes.

If you've worked through the full checklist and the gap remains above 40%, the next step is a GTM audit — checking that the GA4 configuration tag fires on all pages, that conversion tags aren't duplicating or misfiring, and that no tag is interfering with the dataLayer before GA4 reads it.

We run tracking audits as part of every Google Ads account review. More frameworks in the Sterling Lab blog, or see how we work with accounts that need tracking rebuilt from scratch.

Alex Sterling

Alex Sterling

Founder at Sterling Lab · Google Ads strategist · 42 client accounts across 10 countries