GA4 Data Sampling and Thresholding Explained

GA4 data thresholding and sampling explained in plain English - what triggers each, why GA4 numbers do not match, and how to report accurately to clients.

Ready to get started?

Set up in 2 minutes. White-label reports and AI insights.

14-day free trial - 2 min setup - no credit card required

GA4 Data Sampling and Thresholding Explained

GA4 data thresholding is Google's privacy rule that hides rows from a report when the number of users behind them is too small to be safe. GA4 sampling is a different mechanism: it estimates results from a subset of events when a query is too large to process in full. Both change the numbers your clients see, and neither is a bug.

If you have ever had a client email "your report says 1,240 sessions but I see 1,180 in GA4", this post is for you. It covers what sampling and thresholding actually do, how to tell which one is affecting a report, the other reasons GA4 figures move between screens, and how to explain all of it to a client without a 40-minute call.

We see this from the reporting side every week. GA4 is the most-connected platform on ReportsMate - roughly 7 in 10 active clients on the platform have a GA4 property feeding their reports - so the "why doesn't this match" question lands on agencies more often for Google Analytics reports than for any other source.

Last updated: September 2026

Key takeaways

  • Thresholding removes data; sampling estimates data. Thresholding hides rows with too few users (usually when Google signals or demographic data is switched on). Sampling returns an estimate when an Exploration or API query exceeds Google's event limit.
  • Standard GA4 reports are never sampled. Sampling only applies to Explorations and some API requests that exceed 10 million events (1 billion on Analytics 360).
  • Thresholding cannot be switched off directly, but it can usually be avoided by changing the reporting identity to Device-based, widening the date range, or removing demographic dimensions.
  • The BigQuery export has no sampling and no thresholds, which is why it is the reference source when a client disputes a number.
  • Most "GA4 numbers do not match" complaints are not sampling at all - they are date ranges, time zones, attribution models, the (other) row, or comparing GA4 to a different platform.

Table of contents

  1. What is GA4 data thresholding?
  2. What is GA4 data sampling?
  3. Sampling vs thresholding: how do you tell them apart?
  4. Why do GA4 numbers not match between reports?
  5. How do you reduce thresholding and sampling in GA4?
  6. How do you explain GA4 data accuracy to clients?
  7. FAQs
  8. Final tips

What is GA4 data thresholding?

GA4 data thresholding is a privacy control that withholds rows from a report when they could be used to identify an individual user. When a row represents only a handful of users, Google removes it from the table rather than show it. The result is a report that looks complete but quietly totals less than the property actually recorded.

Thresholding kicks in under specific conditions. According to Google's data thresholds documentation, it is applied when a property has Google signals enabled and the reporting identity uses that signals data, or when a report includes demographic dimensions such as age, gender or interests. The thresholds themselves are system-defined. You cannot see the exact cut-off, and you cannot change it.

You know thresholding has been applied when the small data-quality icon at the top of a GA4 report turns into a warning triangle with the message "Thresholding applied". Hover on it and GA4 will tell you that some data has been withheld.

Two things catch agencies out here:

  1. Thresholding is date-range sensitive. A monthly report may show every landing page cleanly, while the weekly version of the same report hides a third of them because each row now has fewer users.
  2. Thresholding affects totals inconsistently. A totals row can show more users than the visible rows add up to, because the totals include the hidden rows. Clients notice this immediately and assume the maths is wrong.

In reporting vocabulary, this is a reporting identity problem. Reporting identity is the setting that tells GA4 how to stitch a user across devices (Blended, Observed, or Device-based). The two identity methods that use Google signals are the ones that trigger thresholding. Device-based does not.

What is GA4 data sampling?

GA4 data sampling is the practice of analysing a subset of your events and scaling the result up to estimate the full figure. Google does this when a query is too expensive to run against every event. A sampled report is an estimate, not a count, and the estimate gets rougher as the sample gets smaller.

The rule that matters most for agencies: standard reports in GA4 are never sampled. The Reports section (Acquisition, Engagement, Monetisation, and so on) is built from pre-aggregated tables and always returns unsampled data. Sampling only applies to Explorations and to some Google Analytics Data API requests when the query exceeds Google's quota. For standard properties that quota is 10 million events per query; for Analytics 360 properties it is 1 billion events.

In Explorations, you can see the sampling status in the same top-corner icon. A green tick means the data is unsampled; a yellow icon means it is sampled, and hovering shows the percentage of events used. You can also choose "More detailed results" for a larger sample, or "Faster results" for a smaller one.

Sampling is far less common than agencies fear. A client site doing 50,000 sessions a month will never come close to 10 million events in a single query unless someone builds a multi-year Exploration with a dozen dimensions. The properties that actually hit sampling are large e-commerce or publisher sites, and even then only in ad-hoc analysis, not in standard reporting. If you want the mechanics from Google directly, the Google Analytics Help Centre has a dedicated page on data sampling in GA4.

Sampling vs thresholding: how do you tell them apart?

Thresholding hides rows because of who is in them; sampling estimates rows because of how many events are in the query. The quickest way to tell them apart is the data-quality icon: a warning triangle that says "Thresholding applied" is thresholding, while a percentage-of-events figure on an Exploration is sampling.

ThresholdingSampling
What it doesWithholds rows with too few usersEstimates results from a subset of events
Why it existsPrivacy - stops identifying individualsPerformance - keeps big queries fast
Where it appearsStandard reports, Explorations, Data APIExplorations and Data API only (never standard reports)
TriggerGoogle signals in reporting identity, or demographic dimensionsQuery exceeds 10M events (1B on 360)
How to spot itWarning triangle, "Thresholding applied"Percentage icon showing share of events sampled
Direction of errorNumbers look lower than realityNumbers may be higher or lower than reality
Can you switch it off?Not directly; change reporting identity or date rangeNot directly; narrow the query or use BigQuery
In BigQuery export?NoNo

The direction-of-error row is the one to remember for client conversations. Thresholded reports only ever under-report the visible rows. Sampled reports can be off in either direction. If a client's figure is lower than yours, thresholding is the first suspect. If the two figures are just slightly different in a big Exploration, sampling is.

Why do GA4 numbers not match between reports?

GA4 numbers most often do not match because two views of the data were built with different settings, not because either one is wrong. Sampling and thresholding are two of about eight reasons, and they are rarely the biggest. Here is the checklist we run through before blaming anything.

  1. Different date ranges or comparison periods. Obvious, and still the number-one cause. A "last 30 days" report and a "last month" report overlap but are not the same.
  2. Time zone. GA4 reports in the property's time zone. A client checking a US property from Sydney can see a day's data shift by up to a full day.
  3. Data freshness. GA4 can take 24 to 48 hours to finish processing a day. A report pulled at 9am shows a different "yesterday" than one pulled at 6pm. This is why we recommend agencies avoid reporting on the current day at all.
  4. Thresholding. Covered above. Most common when the client has Google signals on and the report is broken down by page or landing page.
  5. The (other) row. When a dimension has more unique values than GA4's daily row limit (page paths on big sites, for example), the overflow is rolled into a single row labelled "(other)". The total is still right, but individual page figures are missing.
  6. Attribution model. GA4's default is data-driven attribution. Google Ads, Meta and Search Console each use their own model. A "conversions by channel" figure can legitimately differ across every platform you report on. Our guide to Google Ads vs GA4 conversions walks through the click-time versus conversion-time difference in detail.
  7. Users means active users. In GA4, "Users" in most standard reports is active users, not total users. Explorations can show total users. Same word, different metric.
  8. Consent mode and modelled data. If the property uses consent mode with behavioural modelling, some sessions and key events are modelled estimates that fill in for users who declined cookies. Those figures will not match raw counts anywhere.

Run this list before you spend an hour on sampling. In our experience, "why GA4 numbers do not match" is a date-range or time-zone question at least half the time, an attribution or (other)-row question most of the rest, and a genuine sampling issue only rarely.

How do you reduce thresholding and sampling in GA4?

You reduce thresholding by removing the conditions that trigger it, and you reduce sampling by making the query smaller or using the BigQuery export. Neither has an "off" switch, but both are controllable.

To reduce thresholding:

  • Change the reporting identity to Device-based. In Admin, under Reporting identity, choose Device-based. This stops GA4 using Google signals to stitch users, which removes the main thresholding trigger. Google explains the three options on its reporting identity help page. The trade-off is less accurate cross-device user counts.
  • Turn off Google signals for reporting. GA4 lets you keep Google signals collection on (for remarketing) but exclude it from reporting identity. This is often the best middle ground for agencies that also run Google Ads for the client.
  • Widen the date range. More users per row means fewer rows fall under the threshold. A monthly report is usually cleaner than a weekly one for smaller sites.
  • Remove demographic dimensions. Age, gender and interests dimensions apply thresholds on their own, regardless of identity setting. Keep them in a separate, clearly caveated section of the report.

To reduce sampling:

  • Narrow the Exploration. Fewer dimensions, shorter date range, fewer segments. Most sampling disappears once a query drops under 10 million events.
  • Use standard reports where you can. They are unsampled by design. If the metric exists in a standard report, take it from there.
  • Use the BigQuery export. The raw event export has no sampling, no thresholds and no (other) row. It is the source of truth when a client disputes a figure. Google describes the export on its BigQuery export help page, and we covered the agency workflow in our post on GA4 BigQuery export for client reporting.

One point that matters for any tool in your stack: the Google Analytics Data API, which Looker Studio, Supermetrics and ReportsMate all use to pull GA4 figures, respects the same thresholds as the GA4 interface and flags sampled responses in its metadata. No third-party tool can show you data that GA4 itself has withheld. If a dashboard shows more rows than GA4 does, it is caching an older, wider query - not bypassing the rule.

How do you explain GA4 data accuracy to clients?

Explain GA4 data accuracy to clients by stating the rule once, in one sentence, and then keeping the reporting settings fixed so the numbers stay comparable month to month. Clients do not need to understand reporting identity. They need to trust that the number in this month's report was produced the same way as last month's.

Three habits do most of the work:

1. Fix the settings and say so. Decide on a reporting identity, a time zone and a date-range convention per client, then note it in the report footer: "Figures from GA4, Device-based identity, previous calendar month, property time zone." That one line ends most "but my screen says" conversations, because the client can see why their ad-hoc view differs.

2. Report trends, not decimals. A client who reads "organic sessions up 12% on last month" does not care whether the base was 1,180 or 1,240. A client who reads "1,240 sessions" and then sees 1,180 in GA4 does. Lead with direction and magnitude; put the raw table below. Our post on GA4 metrics explained for clients has plain-English definitions you can lift straight into a report.

3. Deliver the report to them instead of pointing them at GA4. This is the part we feel strongly about. We built ReportsMate email-first because, after years around agency reporting, the dashboards clients were handed almost never got logged into - and when they did, the client changed the date range, saw a thresholded row, and rang the account manager. A white-labelled email report (branded as your agency, sent from your domain) with fixed settings puts one consistent number in front of the client on a predictable reporting cadence - weekly or monthly - and removes the temptation to freelance in the GA4 interface. You can see how the email-first workflow works if that sounds like your Monday morning.

The goal is not to hide GA4's quirks. It is to make sure the client only ever sees a number you have already explained.

FAQs

Q: Does GA4 data thresholding affect the Google Analytics Data API?

A: Yes. The Data API applies the same data thresholds as the GA4 interface, so any tool pulling GA4 figures through it (Looker Studio, Supermetrics, AgencyAnalytics, ReportsMate) receives the same withheld rows. The API response includes metadata indicating when thresholds or sampling were applied. No reporting tool can retrieve rows that GA4 has hidden for privacy reasons; the only route to unthresholded data is the BigQuery export. If your reporting tool shows a figure that GA4 does not, check whether the tool is caching an older query or using a different date range before assuming it has better access.

Q: Why is my GA4 total higher than the sum of the rows?

A: Because thresholding removes rows but leaves the totals row intact. When GA4 withholds a landing page with only a few users, that page's sessions still count toward the total, so the visible rows no longer add up. This is the most common way agencies first notice thresholding. The fix is to switch the property's reporting identity to Device-based or widen the date range so more users fall into each row. Our guide to Search Console vs GA4 organic traffic covers the related question of why organic figures differ between those two tools.

Q: Are GA4 standard reports sampled?

A: No. Standard reports in GA4 (the Reports section, including Acquisition, Engagement and Monetisation) are built from pre-aggregated tables and are never sampled. Sampling only applies to Explorations and to Data API requests that exceed Google's per-query event limit, which is 10 million events for standard properties and 1 billion for Analytics 360. For nearly every agency client, that means the figures in a standard report are exact counts rather than estimates, and any mismatch is coming from settings, date ranges or thresholding rather than sampling.

Q: How do I know if thresholding has been applied to a report?

A: Look at the data-quality icon in the top corner of the report or Exploration. If it shows a warning triangle and the tooltip reads "Thresholding applied", GA4 has withheld rows. In Explorations, the same icon shows a percentage when sampling has been applied instead. The icon is the only reliable signal; the table itself gives no indication of which rows are missing. If you are pulling data into an external tool, check whether that tool surfaces the API's data-quality metadata, because most do not display it in the client-facing report.

Q: Should I turn off Google signals to stop thresholding?

A: Usually you should exclude Google signals from reporting identity rather than turn it off entirely. GA4 lets you keep signals collection on, which preserves remarketing audiences and demographic data for Google Ads, while choosing a Device-based reporting identity that does not use signals to stitch users. That removes the main thresholding trigger without losing ad functionality. The trade-off is that cross-device user counts become less accurate. For most agency clients, consistent unthresholded reports are worth more than slightly better cross-device stitching.

Q: Does the BigQuery export fix both sampling and thresholding?

A: Yes. The GA4 BigQuery export contains raw event-level data with no sampling, no data thresholds and no (other) row. It is the reference source when a client disputes a figure or when you need a breakdown that GA4 keeps hiding. The cost is complexity: someone has to write SQL, maintain the tables, and reconcile the export's event-level counts with the interface's session and user logic, which do not always match one-for-one. For a small agency, the export is a tool for occasional deep dives rather than a replacement for standard reporting.

Q: Why does my client's GA4 show different numbers from the report I sent?

A: Nine times out of ten it is a settings difference: a different date range, the property's time zone versus the client's local time, data that had not finished processing when one of you looked, or a thresholded row. Sampling is rarely the cause for a typical client property. The practical fix is to lock the reporting settings, note them in the report footer, and deliver the report on a fixed schedule so the client is looking at one consistent number rather than a live interface that changes every time it is opened.

Final tips

GA4 data thresholding and sampling are two separate mechanisms with two separate fixes. Thresholding is about privacy and is controlled through reporting identity, date range and dimensions. Sampling is about query size and only touches Explorations and large API requests. Neither is a fault in the tool, and neither is something your client should have to think about.

What your client should see is one number, produced the same way every period, with a one-line note on how it was produced. Keep your settings fixed, report trends over decimals, and put the report in their inbox rather than sending them to a login page where the date picker can undo your work.

Stop losing your Sundays to client reports. Start your free 14-day trial - no credit card, no setup, cancel anytime. Your clients get branded reports in their inbox automatically.

Automate Your Marketing Reporting

Join agencies automating client reporting with ReportsMate.

14-day free trial - 2 min setup - no credit card required