Your GA4 dashboard shows 847 purchases. BigQuery says 912. WooCommerce recorded 923. None of them are wrong—they’re measuring different things, at different times, with different rules. Understanding why these numbers differ is the first step to trusting your data again.
The mismatch isn’t a bug. It’s architecture. GA4 applies sampling, modeling, and processing that BigQuery exports never receive. Your ecommerce platform captures what actually happened, while analytics tools estimate what probably happened based on incomplete signals.
Why GA4 and BigQuery Will Never Match
The discrepancy starts with how data flows through each system. GA4 receives raw events, then processes them through several layers of transformation before displaying reports. BigQuery receives a different export—raw events without many of those transformations.
GA4 applies sampling and thresholding that BigQuery export does not. When your traffic exceeds certain thresholds, GA4 samples data to generate reports faster. The interface shows estimates based on a subset of your actual data. BigQuery receives the full dataset before sampling occurs.
This creates an immediate gap. Your GA4 exploration showing 10,000 sessions might be extrapolated from 2,500 actual sessions. BigQuery would show all sessions—but without GA4’s extrapolation logic, the totals differ.
The Consent Mode Problem Nobody Explains
Here’s where it gets worse. When visitors decline cookie consent, GA4 models their behavior based on similar consenting users. These modeled conversions appear in your GA4 reports—but modeled data is NOT exported to BigQuery.
If 40% of your EU visitors decline consent, GA4 might show 100 conversions: 60 observed plus 40 modeled. BigQuery shows only the 60 observed events. The 40 modeled conversions exist only in GA4’s interface.
This explains why consent mode regions show the largest GA4-to-BigQuery gaps. The more consent rejection you have, the more GA4 relies on modeling—and none of that modeling reaches BigQuery.
You may be interested in: WooCommerce Revenue vs Google Analytics: Why GA4 Is Always Wrong
Time Zone Mismatches Create Phantom Discrepancies
GA4 properties have configurable time zones. BigQuery exports data in UTC. If your GA4 property is set to EST and you query BigQuery without timezone conversion, you’re comparing different 24-hour windows.
Time zone mismatches cause apparent data discrepancies that aren’t real discrepancies at all. A purchase at 11pm EST on January 5th appears in GA4’s January 5th report. In BigQuery UTC, that same purchase is timestamped January 6th at 4am.
Daily reports will never match unless you explicitly handle timezone conversion in your BigQuery queries. Weekly and monthly aggregations hide this problem—until you try to reconcile specific days.
Processing Delays Add Another Layer
GA4 standard reports have 24-48 hour processing delays. Real-time reports show current activity, but the data that appears in standard reports and exports takes time to process.
If you export BigQuery data at noon and compare to GA4 reports at 3pm, you’re comparing different snapshots. GA4 may have processed additional events in those three hours that haven’t yet appeared in your export.
For accurate comparison, wait 48+ hours after the date range ends before attempting any reconciliation. Even then, late-arriving events can trickle in for days.
Session vs Event Counting Differences
GA4’s interface often displays session-scoped metrics. BigQuery exports event-level data. Converting between these scopes requires specific SQL logic that may not match GA4’s internal calculations exactly.
A session containing three page views and one purchase is one session in GA4. In BigQuery, it’s four separate events that you must aggregate. Different aggregation logic produces different numbers—even from the same underlying data.
BigQuery contains raw unsampled data versus processed GA4 reports. This is a feature, not a bug. Raw data enables custom analysis impossible in GA4’s interface. But it also means you’re responsible for the aggregation logic GA4 handles automatically.
What to Trust for What Purpose
Each data source serves a different purpose. Using the wrong source for a decision leads to bad decisions.
For revenue: Trust WooCommerce. Your ecommerce platform records what actually happened—orders placed, payments received, refunds processed. GA4 and BigQuery both estimate revenue based on tracked events, which are incomplete by definition.
For marketing attribution: Trust BigQuery. Unsampled event data with full parameter preservation enables accurate attribution modeling. GA4’s sampled, modeled data introduces uncertainty you can avoid.
For quick directional insights: GA4 is fine. “Is traffic up or down this week?” doesn’t require perfect accuracy. GA4’s processed reports answer directional questions adequately.
For high-stakes analysis: Triangulate. Compare multiple sources. If GA4, BigQuery, and WooCommerce all show the same trend, you can trust the trend. If they diverge significantly, investigate before acting.
You may be interested in: WordPress to BigQuery Without a Developer: The Non-Technical Data Warehouse Guide
The Better Question: Why Use GA4 as Middleman?
Here’s what most guides won’t tell you. If you’re exporting GA4 data to BigQuery anyway, you’re adding a lossy middleman to your data pipeline. GA4 samples, models, and delays your data before exporting a subset to BigQuery.
Server-side tracking sends events directly to BigQuery—no GA4 processing, no modeling, no sampling, no 48-hour delays. Your WooCommerce purchase fires, your server captures it, BigQuery receives it within seconds.
Transmute Engine™ routes WooCommerce events directly to BigQuery alongside GA4, Facebook CAPI, and Google Ads. You get real-time, unsampled data in BigQuery without depending on GA4’s export at all. The events still go to GA4 for quick reporting—but BigQuery becomes your source of truth, not a derivative of GA4’s processed output.
This eliminates the reconciliation problem entirely. There’s nothing to reconcile when BigQuery receives the same clean events your server captured—before any browser blocking, consent modeling, or sampling can interfere.
Key Takeaways
- GA4 and BigQuery measure different things: Sampling, modeling, and processing create permanent gaps that cannot be reconciled.
- Consent mode modeling doesn’t export: Modeled conversions appear only in GA4, never in BigQuery.
- Time zones matter: GA4 uses property timezone, BigQuery uses UTC. Daily comparisons require explicit conversion.
- Use each source for its purpose: WooCommerce for revenue, BigQuery for attribution, GA4 for quick insights.
- Skip the middleman: Server-side tracking to BigQuery bypasses GA4’s limitations entirely.
GA4 applies sampling on large datasets and includes modeled conversions that BigQuery doesn’t receive. BigQuery gets raw event data while GA4 shows processed, sometimes estimated numbers. For accurate revenue, always use your WooCommerce database as the source of truth.
Neither for revenue—use WooCommerce. For marketing analysis, BigQuery provides unsampled data better suited for accurate attribution. GA4 is useful for quick directional insights but should not be your decision-making source for high-stakes analysis.
No. The architectural differences—sampling, modeling, time zones, processing delays—mean exact matches are impossible by design. Accept the gap and use each tool for its intended purpose instead of trying to reconcile them.
The export is still valuable for historical event data. But for real-time, accurate conversion tracking, sending events directly to BigQuery via server-side tracking bypasses GA4’s limitations entirely.
Stop fighting to reconcile data that was never designed to match. Start capturing clean events at the source—see how Transmute Engine sends WooCommerce events directly to BigQuery.



