Why GA4 and BigQuery Can Both Be Right
A familiar analytics problem begins with a simple question: “Why does this dashboard say 1.2 million users when GA4 says 1.15 million?”
The immediate reaction is often that one system must be wrong. In many GA4 implementations, that conclusion is premature.
Google Analytics 4 reports and the GA4 BigQuery export are not two interfaces querying the same finished reporting table. They are different analytical surfaces with different processing rules, identity behavior, modeling, timing, and levels of granularity. Google explicitly states that differences can be normal. Its comparison guidance says that, after aligning settings, a 2% to 5% discrepancy in total event counts between Analytics and BigQuery can be expected.
For executives, the important question is therefore not “How do we force every number to match?” It is “Which metric definition should the business trust for each decision, and can we explain the difference?”
That distinction matters when GA4 data feeds board dashboards, marketing attribution, customer acquisition reporting, warehouse models, and finance-facing KPIs.
Actiknow’s Business Intelligence practice covers BI architecture, integration of data from databases and APIs, data modeling, dashboards, and publishing and refresh mechanisms. Those disciplines become especially important when GA4 is only one source in a broader reporting environment.
What GA4 BigQuery Export Actually Contains
The GA4 BigQuery export gives you event-level data collected by Analytics. Google describes it as raw event and user-level data, without all of the value additions applied inside standard GA4 reports and explorations.
That difference is fundamental.
In the GA4 interface, Google can apply reporting logic and features that are not reproduced in the event export. In BigQuery, your team receives granular events and then defines sessions, users, attribution logic, channel groupings, conversion logic, and business transformations through SQL and downstream models.
This gives the warehouse far more flexibility, but it also transfers responsibility.

Once you build a KPI from BigQuery, your SQL becomes part of the metric definition.
The Seven Most Common Reasons the Numbers Differ
1. Reporting identity is different
GA4 can use different reporting identity approaches in its reporting surfaces. BigQuery export is based on device-level identifiers and the identifiers contained in exported events.
Google specifically recommends switching the GA4 reporting identity to Device ID when making a direct comparison with BigQuery. Otherwise, you may be comparing differently resolved populations.
This is one of the first checks to perform when user counts disagree.
Do not automatically change the organization’s permanent reporting identity simply to make a warehouse number look closer. Instead, document which identity definition each KPI uses.
For an executive dashboard, “Users” is not a sufficient metric definition.
A better definition is something like:
Active users as reported by GA4 using the organization’s configured reporting identity.
Or:
Distinct user_pseudo_id values derived from GA4 BigQuery events.
Those are different measures. Labeling both “Users” invites confusion.

2. GA4 reports can include modeled data that BigQuery does not
Consent mode makes this especially important.
Google’s reporting-surface documentation says behavioral modeling can be included in GA4 reporting, while it is not included in BigQuery export. BigQuery can contain cookieless pings, but the modeled reporting layer that estimates user behavior is not simply exported as event-level modeled rows.
That means a warehouse team cannot assume it can reconstruct every GA4 interface metric from raw events.
This is not a SQL defect. It is a difference in what the two products contain.
For leadership reporting, document whether a KPI is:
- observed event data;
- modeled GA4 reporting data;
- or a business metric calculated from warehouse data.
Mixing those categories without disclosure makes reconciliation unnecessarily difficult.
3. Time zones do not match
A day is only comparable if both systems agree on when the day begins and ends.
Google recommends confirming that the GA4 property timezone and the periods used in BigQuery queries align. A UTC-based warehouse transformation compared with a GA4 property configured to a US, UK, or Australian local timezone can shift late-night events into different calendar dates.
The problem becomes more visible in:
- daily dashboards;
- month-end reporting;
- campaign launch days;
- high-volume event periods;
- businesses operating across multiple countries.
Your warehouse should have an explicit timezone policy.
For example, retain event timestamps in UTC but derive the business reporting date using the agreed reporting timezone. Do not allow every analyst to make this decision independently.
4. Data freshness and late processing differ
GA4 is not one single instantaneously settled dataset.
Google documents different processing times for different Analytics features. Attribution can take hours, data imports can take longer, and the BigQuery daily export is processed on its own schedule.
The BigQuery export also offers different modes.
Daily export provides the previous day’s raw event data.
Streaming export makes current-day events available within minutes but is best effort and may contain gaps.
Analytics 360 also has Fresh Daily export for faster batched availability.
Streaming data should therefore not automatically be treated as final data.
If an executive dashboard refreshes every fifteen minutes from streaming export while someone compares it with a processed GA4 report, a mismatch can be expected.
Define a data-finalization rule such as:
- Today = provisional.
- Yesterday = refresh after daily export completion.
- Recent attribution metrics = subject to restatement for an agreed period.
The exact window should reflect your reporting requirements. The important point is that the business knows when a number becomes stable.
5. Streams or events may be excluded from export
GA4 BigQuery links can be configured so that not every stream or event is exported.
Google recommends checking the BigQuery link configuration before investigating SQL.
If GA4 reports include activity that the export intentionally excludes, the warehouse should not match the interface.
This sounds obvious, but it is easily missed when the person building the dashboard did not configure the GA4-to-BigQuery link.
Keep the export configuration as part of your analytics documentation, including:
- property;
- BigQuery project;
- streams included;
- events excluded;
- export mode;
- property timezone;
- change history.
A configuration change can otherwise look like a sudden business trend.
6. Session and attribution logic is easy to rebuild incorrectly
Event counts are relatively straightforward to compare. Sessions, users, traffic sources, and attribution are harder.
The warehouse has to reconstruct business logic from event fields, and small SQL choices can materially change results.
Common issues include:
- counting session_start events instead of building the intended session key;
- using user_pseudo_id alone where a session-level identifier is required;
- mixing event-scoped and session-scoped acquisition fields;
- using the wrong traffic-source field;
- applying current channel rules to historical data;
- joining advertising data at the wrong grain;
- deduplicating events incorrectly;
- using current-day streaming fields as if they were complete.
The fix is not a larger reconciliation spreadsheet. It is a governed semantic definition.
If “Paid Search Sessions” is an executive KPI, the organization should know the exact logic that produces it.

7. Your BI model may be transforming GA4 after export
Sometimes GA4 and BigQuery are not the real comparison.
The actual comparison is:
GA4 interface -> raw BigQuery export -> staging model -> attribution model -> marketing mart -> BI semantic layer -> dashboard.
Every arrow can change the number.
- Filters may exclude internal traffic.
- Domain logic may remove unwanted hosts.
- Bots or test records may be removed.
- Campaign names may be standardized.
- Users may be joined to CRM records.
- Transactions may be reconciled to an ecommerce or finance system.
- Historical attribution may be recalculated.
Those transformations can be desirable. But once they exist, the resulting dashboard is a business reporting product, not a mirror of GA4.
Actiknow’s Custom Solutions practice includes integrations, database and data-lake setup, and data flow between business systems. When analytics combines GA4 with CRM, advertising, finance, or application data, reconciliation should cover the entire pipeline rather than only the final visualization.
How to Reconcile GA4 and BigQuery Systematically
Do not begin with the most complicated KPI.
Use a reconciliation ladder.
- Step 1: Confirm you are comparing the correct property and BigQuery project.
- Step 2: Compare the same calendar date and timezone.
- Step 3: Confirm exported streams and event exclusions.
- Step 4: Temporarily use Device ID reporting identity in GA4 for a direct BigQuery comparison, as Google recommends.
- Step 5: Compare total event counts for one completed day.
Google recommends this as a basic validation. If the raw event totals are reasonably aligned, you have evidence that collection and export are functioning before investigating higher-level metrics.
- Step 6: Compare a few high-volume event names.
Examples might include page_view, session_start, purchase, or another core event appropriate to the implementation.
- Step 7: Reconcile sessions and users separately.
Do not assume that success at event level proves your user or session logic.
- Step 8: Reconcile acquisition and attribution only after the underlying event/session layer is understood.
- Step 9: Trace the warehouse transformations between raw events and the dashboard.
- Step 10: Record every intentional difference.
This sequence turns “the numbers don’t match” into a bounded engineering problem.

What Should Executives Use as the Source of Truth?
There is no universal answer that says GA4 is always correct or BigQuery is always correct.
Use the source appropriate to the decision.
Use GA4 reporting when the organization needs Google’s reporting definitions, modeling, built-in acquisition views, and standard Analytics experience.
Use BigQuery when you need event-level analysis, custom transformations, durable warehouse logic, cross-system joins, organization-specific definitions, or BI reporting outside the GA4 interface.
For enterprise reporting, the better operating model is often to define an authoritative source by metric rather than declare one platform authoritative for everything.
For example:
- Website event collection health: GA4 and raw export reconciliation.
- Executive marketing KPI: governed warehouse model.
- Google-modeled audience behavior: GA4 reporting surface.
- Revenue: finance or commerce system reconciled into the warehouse.
- Cross-channel customer reporting: warehouse and BI semantic model.
The phrase “single source of truth” should mean one governed definition for a decision, not one database forced to answer every question.
Build a Metric Reconciliation Contract
A mature analytics team should maintain a small reconciliation contract for important KPIs.
For each metric, capture:
- business name;
- business definition;
- system of record;
- calculation grain;
- identity method;
- timezone;
- inclusion and exclusion rules;
- attribution rule where applicable;
- expected data latency;
- expected variance from GA4;
- owner;
- last validation date.
This does not need to become bureaucracy.
Ten well-defined executive KPIs are more valuable than two hundred measures that nobody can explain.
A Practical Monitoring Pattern
Once the initial reconciliation is complete, automate it.
Create a daily control table containing metrics such as:
- GA4 exported event rows;
- warehouse event rows after ingestion;
- core event counts;
- sessions;
- distinct device identifiers;
- transactions;
- revenue where appropriate;
- variance percentage;
- pipeline completion timestamp.
Set alerts based on meaningful tolerances, not an expectation of zero difference.
Google itself notes that a modest difference in event totals can be expected. Your control should distinguish ordinary platform variance from a broken export, missing stream, failed transformation, or changed business rule.
The tolerance may also differ by metric. A tiny variance in page views may be immaterial while one missing purchase is worth investigating.

Questions Leadership Should Ask
When GA4 and an executive dashboard disagree, ask:
- Are these metrics actually defined the same way?
- Are they using the same reporting identity?
- Are modeled data involved?
- Are both periods using the same timezone?
- Is today’s data still provisional?
- Are all streams and events exported?
- Has attribution finished processing?
- What transformations occur after BigQuery ingestion?
- Which system is authoritative for this business decision?
- What variance is expected and monitored?
- Who owns the metric definition?
Those questions are more productive than asking the BI team to “make it match GA4.”
Frequently Asked Questions
Why does GA4 show different users than BigQuery?
GA4 reporting can use reporting identity and behavioral modeling that are not reproduced in the raw BigQuery event export. BigQuery calculations also depend on how your SQL defines a user. Compare identity definitions before treating the difference as an error.
Should GA4 event counts exactly match BigQuery?
Not necessarily. Google says that, after checking link configuration, reporting identity, timezone, and export filters, a 2% to 5% discrepancy in total event counts can be expected. Larger or persistent unexplained differences should be investigated.
Is BigQuery raw GA4 data?
BigQuery Export provides raw event and user-level data collected by GA4, without all the reporting-layer value additions available in the Analytics interface. Your organization is responsible for the SQL and transformations used to turn those events into warehouse KPIs.
Does GA4 behavioral modeling appear in BigQuery?
Google states that behavioral modeling is not included in BigQuery export. This is one reason user and session-oriented reporting can differ from GA4 reports when consent mode and modeling are relevant.
Should we use GA4 or BigQuery for executive dashboards?
Use a governed metric definition appropriate to the decision. BigQuery is usually better suited when executive reporting requires custom logic, historical transformations, cross-system joins, or integration with BI tools. GA4 remains appropriate when the intended metric is specifically Google’s reporting definition.
Why does today’s BigQuery data change later?
Streaming export is designed for near-real-time availability and is best effort. Daily processing can provide more complete data, and attribution-related information may also settle later. Treat intraday metrics as provisional unless your architecture explicitly accounts for these limitations.
How often should GA4 and warehouse metrics be reconciled?
Validate heavily during implementation and after material tracking, consent, export, attribution, or transformation changes. For critical pipelines, automate daily control metrics so unexpected variances are detected rather than discovered during executive reporting.
Call to Action
If your GA4, warehouse, and executive dashboards disagree, the goal should not be to hide the variance. It should be to make every important number explainable. Actiknow can help design the BI and data architecture, reconcile source-to-dashboard logic, and build governed reporting that combines analytics data with the rest of your business systems. Talk to Actiknow about your analytics reporting architecture.

