When GA4-reported Ads conversions and Google Ads native conversions drift apart by more than 20%, you cannot trust either dashboard — and Smart Bidding is almost certainly optimizing against a different signal than the one your team reviews in the Monday standup. Reconcile before you tune budgets or change bid strategies.
Why this matters
Google Ads and GA4 measure the same user with different rulebooks. Google Ads counts a conversion when its own tag fires (or when Enhanced Conversions hashes match a server-side event), attributed by the Ads conversion action's own attribution model and lookback window. GA4 counts a conversion when a configured event fires in the GA4 data stream, attributed by the GA4 reporting identity + attribution settings, and only credits Google Ads when the session's source/medium resolves to google/cpc — which itself depends on auto-tagging, Consent Mode signals, and cross-device stitching.
The Whitead rule fires MEDIUM when the absolute deviance between the two counts exceeds 20% over a stable 14-day window for the same primary conversion goal. That threshold matches the operational rule-of-thumb reported across practitioner write-ups (Analytics Mania, Kissmetrics, Ruler Analytics): under 10% is noise, 10-20% is investigable, above 20% means at least one of the two systems is reporting fiction. Smart Bidding consumes the Google Ads number; your stakeholder dashboard usually shows the GA4 number; if they disagree by 25%, somebody is making decisions on the wrong reality.
How to verify the issue
- Open GA4 → Reports → Acquisition → Traffic acquisition. Set the date range to the trailing 14 days (avoid the last 48h — modeling row not yet final). Filter Session source / medium to
google / cpc. Note the Conversions value for your primary conversion event. - Open Google Ads → Campaigns for the same 14-day window. Segment by Conversions → Conversion action. Sum the rows that correspond to the same business goal (e.g.
purchase,qualified_lead). - Compute deviance:
|GA4 - Ads| / max(GA4, Ads). Above 0.20 = finding confirmed. Re-check on a stable 14d window; never use a window that includes a tag deploy, attribution-model swap, or Consent Mode change. - Open Google Ads → Tools → Conversions → for each conversion action inspect Attribution model, Click-through conversion window, Engaged-view conversion window, and the Goal type setting (Primary / Secondary). Cross-check against GA4 → Admin → Attribution settings (Reporting attribution model + Acquisition conversion lookback window).
If steps 1-3 show >20% deviance and step 4 reveals any mismatch in attribution model OR lookback window OR a stacked GA4-import alongside a native Ads action for the same goal, the rule is confirmed.
How to fix it
Plan a 60-90 minute working session with the analytics + paid-media owners in the same call. Most fixes touch both consoles; one-side-only changes regenerate the drift within a week.
Pick a single source of truth per goal. For each business conversion (purchase, lead, signup), decide: native Google Ads conversion action OR imported GA4 conversion OR offline (CRM upload). Never two. Document the choice. See GA4 → Google Ads import for the canonical decision tree.
Align attribution models on both sides. Set the Google Ads conversion action's Attribution model to Data-driven under Tools → Conversions → action → Edit settings. In GA4, set Admin → Attribution settings → Reporting attribution model to Data-driven. Mismatched models alone can produce material deviance — fix this first before chasing other causes.
Align lookback windows. Set the Google Ads click-through window and the GA4 acquisition conversion lookback to the same value (default both to 30 days for lead-gen, 90 days for considered B2B SaaS). GA4's lookback is at Admin → Attribution settings → Acquisition conversion lookback window.
# Recommended starting point Google Ads click-through window: 30 days Google Ads engaged-view window: 3 days GA4 acquisition lookback: 30 days GA4 other-events lookback: 30 daysConfirm Consent Mode v2 is applied symmetrically. Both gtag (web container) and the GA4 measurement endpoint must receive the same
ad_storage+analytics_storagesignals. If Consent Mode is Advanced for GA4 but Basic for Ads (common after partial CMP migrations), Ads will see fewer raw conversions and lean on modeling, while GA4 reports the modeled-row total. See Enhanced Conversions for the API-mode payload that closes most consent gaps.Disable double-counting. In Google Ads → Tools → Conversions, set Goal type to Secondary for every non-canonical action covering the same goal (only Primary actions are counted in the Conversions column and used by Smart Bidding). Getting this classification right is non-negotiable.
Re-baseline 14 days. After changes, do not judge results until 14 full days post-deploy. Attribution-model swaps re-enter the Smart Bidding learning phase-style recalibration; comparing partial-window data will mislead.
"Differences between Google Ads and Analytics conversions are expected. Common causes include attribution model differences, conversion windows, and how each product handles cross-device, modeled, and consent-impacted conversions."
— Google Ads Help, Differences between Google Ads and Google Analytics conversions (accessed 2026-05-20)
How to confirm the fix worked
Diagnostic checklist — run all five 14 days post-deploy
- Deviance under 15% between GA4
google/cpcconversions and Google Ads Conversions column for the primary goal over a trailing 14-day window. - Attribution models match — both consoles set to data-driven (or both explicitly set to last-click if the account is in the DDA exclusion list).
- Lookback windows match — Google Ads click-through window == GA4 acquisition lookback window, documented in the measurement runbook.
- No double-counting — for each business goal, exactly one conversion action is set to Goal type = Primary in Google Ads.
- Consent Mode symmetry —
ad_storage+analytics_storageflow to both gtag and the GA4 endpoint; modeled-conversion row in GA4 within ±10% of Ads modeled total.
If all five pass, re-run the audit — ga_vs_ads_conversions moves from failed → passed. If deviance remains >15% after fixes 1-5 land, escalate to a server-side measurement review (see related playbook below).
Methodology note. Whitead's ga_vs_ads_conversions rule is an account-scope, measurement-category check evaluated against the trailing 14-day window. The check ingests the Google Ads conversions queryset (action name, category, status, 30-day count, attribution model — capped at 20 actions per account to keep the AI-review prompt under context budget) and routes to the check_ga_vs_ads_gap prompt. The output mapping returns passed when severity_score is under 1, low at >=1, medium at >=2 — calibrated against the <10% / 10-20% / >20% deviance bands reported across Analytics Mania, Kissmetrics, and Ruler Analytics case studies. The rule is currently held in a tombstone state (is_active: false) because the v1 audit pipeline only sees the Ads side; the GA4 OAuth + GA4 Reporting API integration that would close the data-comparison loop is tracked as an Epic 8 candidate. Until that integration ships, the rule is exposed in the wiki for operator self-service and surfaces in the audit narrative as a "verify manually" callout rather than an automated finding.
Related rules + concepts
- Data-driven attribution — primary driver of model-mismatch deviance; align this first.
- GA4 → Google Ads import — the playbook for picking single source of truth and removing double-counting.
- Enhanced Conversions — closes consent-impacted gaps that distort the Ads side specifically.
- Server-side GTM for Google Ads — escalation path when client-side fixes leave residual >15% deviance.
- Consent Mode v2 — the framework that must be symmetric across both endpoints.
- Fix: attribution last-click — sister finding that often co-occurs and is fixed in the same session.
Sources
- Google Ads Help — Differences between Google Ads and Google Analytics conversions. https://support.google.com/google-ads/answer/3097241 (accessed 2026-05-20)
- Google Ads Help — About attribution models. https://support.google.com/google-ads/answer/6259715 (accessed 2026-05-20)
- Google Analytics Help — [GA4] Attribution and attribution modeling. https://support.google.com/analytics/answer/10596866 (accessed 2026-05-20)
- Google Analytics Help — [GA4] About conversion modeling. https://support.google.com/analytics/answer/10710245 (accessed 2026-05-20)
- Google Ads Help — About consent mode modeling. https://support.google.com/google-ads/answer/10548233 (accessed 2026-05-20)
- Analytics Mania — Google Ads Conversion Tracking Not Working? 28 reasons and fixes. https://www.analyticsmania.com/post/google-ads-conversion-tracking-not-working/ (accessed 2026-05-20)
- Simo Ahava — Join Google Ads And GA4 Data In Google BigQuery. https://www.simoahava.com/analytics/join-ga4-google-ads-data-in-google-bigquery/ (accessed 2026-05-20)
- Kissmetrics — GA4 Conversions Don't Match Google Ads: Here's Why and What to Do About It. https://www.kissmetrics.io/blog/ga4-conversions-inconsistent (accessed 2026-05-20)
- Ruler Analytics — Why GA4 and Ad Platform Data Don't Match and What to Do. https://www.ruleranalytics.com/blog/analytics/google-analytics-ad-platforms-discrepancies/ (accessed 2026-05-20)