GA4 vs BigQuery: Why Your Data Doesn’t Match

27th Oct 2025

4 Minutes Read

By Sakina Furniturewala

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.

The Case of the Missing Users

It all started with a simple cross-check:

  • GA4 (Aug 20): 6,353 users

  • BigQuery (Aug 20): 6,212 users

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.

The Reporting Identity Twist:
After blaming SQL, filters, and BigQuery itself, we finally spotted the culprit in GA4’s Admin panel: Reporting Identity.

Here’s the deal:

  • Blended (default): Combines User ID, device, and Google’s modeling.
  • Observed: Uses just the User ID and device ID.
  • Device-based: Each device = one user.

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:

  • GA4 Explore: 5,656 users. 

  • BigQuery: 5,656 users.

After weeks of investigation, a single setting adjustment resolved the discrepancies. For the first time, GA4 and BigQuery reflected a consistent user count

The Intraday Twist

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:

  • Intraday tables: Like peeking at a spreadsheet while someone is still typing numbers. Good for “live” monitoring, not final reporting.
  • Daily export tables: The finished version, after GA4 processes all data (usually available within 24 hours).

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?

Conclusion

Neither is wrong. They’re just looking at your data through different lenses.

  • GA4 UI adds modeling, stitched identities, and estimates. Perfect for marketers.
  • BigQuery shows raw, untouched events. Perfect for analysts.

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?

  • Prefer video walkthroughs? Subscribe to the AnalyticsLiv YouTube channel, where we share step-by-step tutorials and strategies across GA4, BigQuery, and Google Cloud.

Need help setting things up the right way? Reach out, we’d love to help.