
Ever had that “wait, what?!” moment when the numbers in GA4 don’t match the ones in BigQuery?
Yeah, we’ve been there too.
One of our clients faced this exact problem. GA4’s Explore report said one thing, but BigQuery, our trusted source of truth, told a completely different story. And sometimes, the difference wasn’t small.
Here’s how we solved the mystery and what you can learn from it.
It all started with a simple cross-check:
Not too bad, right? Except the next day was off again. And the next. In fact, not a single day matched.
We double-checked our SQL. Re-reviewed every filter. Even exported GA4 data into a CSV file for manual comparison. But no matter what we tried, the numbers wouldn’t line up. Something fishy was going on.
Here’s the deal:
Most GA4 properties default to Blended. That works for marketers chasing cross-device journeys, but BigQuery only gets the raw observable events. That’s why our numbers never matched.
So, we switched from Blended (Before)
to Device-based. (After)
GA4 even warned us, “reports may only reflect a subset of users,”… but we clicked anyway.
The very next day, the numbers matched:
After weeks of investigation, a single setting adjustment resolved the discrepancies. For the first time, GA4 and BigQuery reflected a consistent user count
Just when we thought the case was closed, another twist appeared.
We still noticed tiny mismatches. That’s when we realized we were sometimes comparing GA4 against intraday tables in BigQuery.
Quick breakdown:
Lesson learned: for day-level accuracy, always use daily export tables. Save intraday tables for real-time monitoring only.
So… Who’s Right? GA4 or BigQuery?
Neither is wrong. They’re just looking at your data through different lenses.
When comparing the two, treat identity, timing, sampling, and time zones as suspects, not errors.
If this story felt familiar, don’t worry. Almost everyone working with GA4 and BigQuery runs into it at some point.
Want to go deeper?
Need help setting things up the right way? Reach out, we’d love to help.