Why Your GA4 Numbers Don't Match: Troubleshooting Data Discrepancies
Almost every business eventually notices that GA4's numbers don't match another source — Shopify says 340 orders, GA4 says 298; Google Ads reports 50 conversions, GA4 shows 41. Some discrepancy is normal and expected, but a gap larger than roughly 5-10% usually points to a specific, fixable configuration issue rather than an inherent limitation of the tool.
Understand Why Some Gap Is Normal
GA4 relies on JavaScript execution and, increasingly, browser privacy features that block or limit tracking — ad blockers, Safari's Intelligent Tracking Prevention, and users declining cookie consent all cause GA4 to undercount relative to server-side systems like your CRM or payment processor, which see every transaction regardless of client-side tracking. A 5-10% gap between GA4 and a server-side source is typical and not a sign of a broken implementation.
Diagnose Larger Gaps Systematically
Check for Duplicate or Missing Tags
Use Tag Assistant to confirm the GA4 tag fires exactly once per page, and confirm it's present on every page template, including any landing pages built outside your main CMS (a common gap is a separate campaign landing page builder like Unbounce that needs the tag added manually).
Verify Cross-Domain and Subdomain Configuration
If checkout, a booking widget, or a separate app subdomain isn't included in GA4's configured domain list (Admin > Data Streams > Configure Tag Settings > Configure your domains), sessions split in two mid-journey, undercounting conversions attributed to the original session and sometimes double-counting sessions overall.
Check for Consent Mode Impact
If you've implemented Google's Consent Mode for GDPR/CCPA compliance, GA4 uses cookieless pings and modeling to estimate data from users who decline consent — this is expected behavior, not a bug, but it explains part of the gap versus a server-side system that counts every user regardless of consent status.
Compare Time Zones and Date Boundaries
A subtle but common cause: GA4 reports in the time zone set in Admin > Property Settings, while your CRM or ecommerce platform might report in UTC or a different local time zone. A day-boundary mismatch alone can shift a meaningful number of events into the "wrong" day when comparing day-by-day totals.
Reconciling Ad Platform Conversion Counts
Google Ads and GA4 use different attribution models by default — Ads often uses a "conversion window" and its own click-based attribution, while GA4 uses data-driven attribution across the full user journey. These are legitimately different, valid ways of counting the same conversions, not an error; use GA4's Advertising > Attribution reports to compare models directly rather than assuming one number is "correct."
When to Accept the Gap vs. Keep Digging
- Under 10% gap with a server-side source: generally acceptable, driven by privacy features and JS blocking.
- 10-25% gap: audit tag firing, cross-domain config, and consent mode before accepting it.
- Over 25% gap, or a gap that appeared suddenly: treat it as a broken implementation and audit immediately — something changed.
Communicating Discrepancies to Stakeholders
When a stakeholder questions a gap between GA4 and another system, resist the urge to just say "that's normal." Show the specific cause — a consent mode modeling note, a cross-domain gap, a time zone mismatch — with the actual numbers, so the explanation is concrete rather than a hand-wave. Teams that document and explain gaps proactively build far more trust in their analytics than teams that get caught off guard by the question during a leadership review. For a deeper look at this, see our guide, Fixing Common Mobile Usability Errors Reported in Google Search Console.
Perfect parity between GA4 and every other system you use isn't achievable and isn't the goal. Understanding why the gap exists, and confirming it's the expected kind of gap, is what lets you trust the directional trends GA4 shows you. For a deeper look at this, see our guide, 10 Common Analytics Tracking Mistakes That Silently Corrupt Your Data.