Reporting

When a dashboard and GA4 disagree, check these first

Four causes behind a Looker Studio report that does not match GA4: different definitions, privacy thresholds, the (other) row and API quotas.

A gap between a dashboard and GA4 can come from what each one asks, not from lost data. Rule out definitions, thresholds, row limits and quotas before you change the tracking.

Compare the same question first

A dashboard connected live to GA4 sends its own query and draws the answer. If that query differs from the one behind the GA4 screen you compare it with, the numbers can differ while each is correct for its own question.

Before looking for a tracking fault, line up the basics on both sides and change one thing at a time.

  • Date range: the same start and end dates on both sides.
  • Time zone: the property time zone, not the local day of the reader.
  • Metric: the same metric, for example total users versus active users.
  • Filters: the same match type, on the same dimension.
  • Comparison: totals against totals, before rows against rows.

Privacy thresholds can withhold rows

Google Analytics withholds some data so that nobody can infer the identity of a user. Google describes these thresholds as system defined, and they cannot be adjusted. They can apply to reports, explorations and API requests that include demographic data, and to search query rows with too few users.

In GA4, a data quality message shows when a threshold affects a card. Check whether your dashboard surfaces anything similar. If it does not, a reader sees a smaller number with no explanation, so add a note beside any chart that uses demographics.

The (other) row hides the long tail

When a table has more rows than its limit allows, Analytics keeps the most common values and groups the rest under (other). Google treats a dimension with more than 500 values as high cardinality, and the more values you collect, the greater the risk that the data is condensed.

A dashboard table that combines page path with a custom dimension can reach that limit sooner than the GA4 report you compare it with. The total can still match while individual rows do not.

  • Compare totals first, then the rows that matter.
  • Remove dimensions the decision does not need.
  • Avoid custom dimensions with many unique values, such as raw IDs or full URLs with parameters.
  • For user level analysis, use User-ID rather than a custom dimension.

API quotas can turn a chart into an error

Dashboard connectors that read GA4 live use the Google Analytics Data API, which limits each property by tokens. For a standard property, Google lists 200,000 core tokens per day, 40,000 per hour, 14,000 per project per property per hour and 10 concurrent requests.

A page with many charts, opened by several people at once, uses that budget quickly. The symptom is a chart that fails to load or shows a quota error, not a wrong number. Fewer GA4 charts per page, or a copy of the data in a warehouse you control for heavy reporting, keeps the dashboard readable.

Write the reconciliation down

Once you know why the numbers differ, record it next to the dashboard: which source is the reference for each metric, the gap you accept and why, and the date you last checked. The next person who spots a difference can then compare it with a known explanation instead of starting again.

This is a diagnostic order, not a promise that two tools will ever show identical numbers. Consent choices, processing delays and attribution settings can still leave a documented, expected gap.

Sources & context