TL;DR, Quick Answer
9 min readGoogle Analytics 4 answers a query from aggregate tables when it can, and falls back to the event-level tables when it cannot, which is where sampling begins. The documented quota is 10 million events per query on standard properties and 100 million on Analytics 360, with 360 able to push a single exploration to 1 billion. The only on-screen signal is the data quality icon, which shows the percentage of events actually read, and the Data API exposes the same thing as samplesReadCount over samplingSpaceSize. Adobe Analytics documents no report-time sampling and instead buckets dimension items past 2,000,000 unique values into Low-Traffic. Matomo states that it does not sample at all, but archives only the top few hundred rows per report by default and sums the rest into Others.
What is data sampling in analytics?
In an analytics report, data sampling means the numbers you are reading were calculated from a subset of your events and then scaled up, rather than counted from every event you collected. The platform picks a portion of the available data, runs the query against that portion, and multiplies the result back out to estimate the full figure. Nothing is deleted. The raw events are still there. What changed is that the report in front of you is an estimate presented in the same typeface as a count.
That distinction matters most at the tails. A headline metric like total sessions survives sampling well, because the estimate has a large base. A segment worth 0.3% of traffic, a long-tail landing page, or a four-step conversion path can swing wildly, because the sample may hold only a handful of the relevant events. This is a different failure from the one in how GA4 withholds rows to protect identity, where rows are removed entirely rather than estimated.
When does Google Analytics 4 apply sampling?
Google documents a specific trigger: sampling occurs "when the number of events used to create a report, exploration, or request exceeds the quota limit for your property." The quota depends on the property tier.
| Surface | Standard property | Analytics 360 |
|---|---|---|
| Default events read per query | 10 million | 100 million |
| Highest available limit | 10 million | 1 billion, via "More detailed results" in Explore |
| Unsampled explorations | Not available | Available, and only when a query would return more than 1 billion events |
A 10 million event quota does not sample most reports, because GA4 does not answer most queries from event-level data at all. Google describes two groups of tables: "One group of tables aggregates your data to provide fast, unsampled results to the most common requests. The other group of tables stores more granular event and user-level data to provide the flexibility for one-off, advanced investigations." Standard reports with standard dimensions hit the aggregate tables and come back unsampled regardless of traffic volume. Sampling appears when a query cannot be served from the pre-aggregated tables: a custom date range, a comparison, an ad hoc segment, an unusual dimension pairing, most of Explore.
This is why two people on the same property can disagree about whether GA4 samples. One lives in the standard reports and has never seen it. The other builds explorations and sees it weekly.

How do you tell a sampled report from an unsampled one?
Look at the data quality icon at the top of the report or exploration. Google states that "when your results use sampling, it is indicated in the data quality icon with the percentage of data used to create the results." That percentage is the whole signal. A report built from 4% of events and one built from 96% look identical apart from that number, and deserve very different levels of trust.
In the Data API the same information arrives as structured fields. ResponseMetaData carries a samplingMetadatas array, and Google is precise about when it appears: "If this report results is sampled, this describes the percentage of events used in this report. One samplingMetadatas is populated for each date range. However if the results are not sampled, this field will not be defined." Each entry holds two int64 strings:
samplesReadCount, "the total number of events read in this sampled report for a date range"samplingSpaceSize, "the total number of events present in this property's data that could have been analyzed in this report for a date range"
Divide the first by the second and you have the percentage the icon would show. For a reporting pipeline, the important detail is that the absence of samplingMetadatas is the unsampled case, so code that only checks for a low percentage will treat every clean response as suspicious.
How do Standard and Analytics 360 differ on sampling?
The difference is the size of the query 360 can afford to run, not a different method. Both tiers sample the same way when they sample. Analytics 360 starts at 100 million events per query rather than 10 million, and adds two escape hatches.
The first is a toggle inside Explore. The default is "Faster results," and choosing "More detailed results" raises the sample size toward 1 billion events, which Google says is enough to produce unsampled results in most cases. There is a sharp edge here that catches people mid-analysis: "Any change you make that requires the query to run again will revert back to the default Faster results option." Change a date, add a segment, swap a dimension, and you are back on the small sample with no dialog box telling you so.
The second is the unsampled exploration request, which runs the query offline and emails you when it is ready. Google's documented constraints on it are unusually specific:
| Constraint | Documented value |
|---|---|
| Eligibility | Only if the query would return more than 1 billion events |
| Daily token quota | 20,000 tokens per property, shared across all users and API requests |
| Cost ceiling per query | 5,000 tokens |
| Quota reset | Midnight Pacific time |
| Typical processing time | Under 30 minutes |
| Result lifetime | 50 days after the request |
| Export size | Up to 10,000,000 cells for TSV and CSV |
| Permission required | Analyst or higher |
| Unsupported technique | User lifetime |
The eligibility rule is the one that surprises teams. An unsampled exploration is not a general "give me exact numbers" button; it only exists above the point where 360's own 1 billion event ceiling has already been exceeded.

What do Adobe and Matomo do instead?
They solve the same performance problem with a different compromise, and it shows up in a different place in your reports.
Flowsery
Start Your 14-Day Free Trial
Real-time dashboard
Goal tracking
Cookie-free tracking
Adobe Analytics documents no report-time sampling mechanism for Analysis Workspace, and offers no equivalent of the GA4 data quality percentage. What Adobe caps is cardinality rather than rows read. A threshold of 2,000,000 unique values is set per dimension, per report suite, per calendar month. Dimension items collected after that threshold is crossed are grouped into a single item labelled "Low-Traffic," with a second, more aggressive threshold set to 2,100,000 unique values by default. The counter resets globally at the end of each calendar month.
Adobe's version is invisible in the same way sampling is, but it distorts a different axis. Your totals stay correct. Your dimension breakdowns stop being complete partway through a month, and Adobe warns that the Page dimension is especially exposed because several backend columns all count against the same threshold, so Low-Traffic can apply well before the visible page count looks near 2 million.
Matomo takes the opposite position and states it directly: Matomo does not sample data, and its data quality documentation lists "No data sampling" as a property of the platform. Reports are processed from all tracked data. That claim is genuine, but it is not the same as saying Matomo reports are unabridged, and Matomo documents the other half itself: to keep archiving fast, it stores a limited number of rows per report by default, roughly the top 500 pages and top 1,000 keywords and websites, and sums everything below into an "Others" row. On-premise installations can raise the ceiling with [General] settings in config/config.ini.php such as datatable_archiving_maximum_rows_actions and datatable_archiving_maximum_rows_referrers, at a documented cost to archiving performance.
| Platform | What it limits | Where the loss shows up |
|---|---|---|
| Google Analytics 4 | Events read per query | Every metric in the report, as an estimate |
| Adobe Analytics | Unique dimension values per month | A single "Low-Traffic" row absorbing the long tail |
| Matomo | Rows archived per report | A single "Others" row absorbing the long tail |
Read that table as three answers to one question. GA4 keeps every dimension value and approximates the metrics. Adobe and Matomo keep the metrics exact and collapse the dimension values. If your work lives in totals and trends, GA4's trade is the cheaper one; if it lives in long-tail breakdowns, it is the expensive one, and it is one of the structural reasons behind why two tools report different numbers for the same week.
How do you work around sampling without upgrading?
Shrink the query before you doubt the answer, since sampling is a function of how many events one query must read.
- Split a long date range into several shorter queries; the quota applies per query and per date range.
- Prefer standard reports for anything a standard report can answer, because those come from the aggregate tables.
- Move a recurring segment into an audience or custom dimension so the filtering happens at collection time.
- Query the raw events in BigQuery, which sidesteps the reporting quota entirely and is the most reliable of the routes covered in getting your data out of Google Analytics.
The habit worth building is checking the icon first and the metric second, because a number read from 3% of events looks exactly as authoritative as one read from all of them. That habit also catches the neighbouring problem of events that never reached the property at all, which sampling cannot explain and does not fix.
Frequently asked questions
What is the exact event threshold for sampling in GA4?
Google documents 10 million events per query for standard properties and 100 million for Analytics 360 properties as the default sampling settings. Analytics 360 can raise a single exploration to 1 billion events by selecting "More detailed results." Below those limits a query returns unsampled results; above them, a sample is read and the result is scaled.
Does sampling mean Google threw away my data?
No. The events remain in the property and in the BigQuery export if one is configured. Sampling is a query-time decision about how many events to read within the quota, not a collection or storage decision. Running the same question over a shorter date range, or against BigQuery, can return an exact answer from the same data.
Why does my exploration go back to being sampled after I change a filter?
Because Analytics 360 reverts the sample size setting whenever the query has to run again. Google states that "any change you make that requires the query to run again will revert back to the default Faster results option." Reselect "More detailed results" after each change, and check the data quality icon rather than assuming the setting held.
Can I detect sampling from the Google Analytics Data API?
Yes, through the samplingMetadatas array on ResponseMetaData. It is populated once per date range when the result is sampled and is not defined at all when the result is unsampled. Each entry gives samplesReadCount and samplingSpaceSize as int64 strings, and their ratio is the percentage of events read.
Does Adobe Analytics sample data the way GA4 does?
Adobe's own Analysis Workspace documentation describes no report-time sampling control and offers no sample-size percentage in the interface. The limit Adobe does document is on dimension cardinality: past 2,000,000 unique values per dimension, per report suite, per calendar month, new items are grouped under a "Low-Traffic" label, with the counter resetting at the end of each month.
If Matomo does not sample, why do my Matomo totals differ from a full log count?
Because Matomo limits rows archived per report rather than events read. Matomo processes all tracked data and states that it does not sample, but by default it archives only the top few hundred rows of many reports and sums the remainder into an "Others" row. A self-hosted installation can raise that ceiling through the datatable_archiving_maximum_rows_* settings in config/config.ini.php, which Matomo notes can significantly affect archiving performance.
Does GA4 sampling affect every metric in a report the same way?
Sampling does not spread evenly across a report. A headline metric like total sessions survives it well because the estimate draws on a large base, while a segment worth 0.3% of traffic, a long-tail landing page, or a four-step conversion path can swing wildly because the sample might hold only a handful of the relevant events. The report shows both figures in the same typeface, so nothing on the page flags which one is more fragile.
Do standard GA4 reports ever get sampled?
Rarely, because most standard reports are answered from the aggregate tables Google built for fast, unsampled results on common requests. Sampling shows up when a query cannot be served from those tables, such as a custom date range, a comparison, an ad hoc segment, an unusual dimension pairing, or most of Explore. That split is why two people on the same property can disagree about whether GA4 samples at all: one lives in standard reports and never sees it, the other builds explorations and sees it weekly.
How long do unsampled exploration results in Analytics 360 stay available once requested?
Google documents a 50 day result lifetime after the request, with typical processing under 30 minutes. The export can carry up to 10,000,000 cells for TSV and CSV, and the request only qualifies when the query would return more than 1 billion events in the first place.
Flowsery
Start Your 14-Day Free Trial
Real-time dashboard
Goal tracking
Cookie-free tracking
Does Adobe's Low-Traffic threshold apply evenly across all dimensions?
Not evenly. The 2,000,000 unique value threshold is set per dimension, per report suite, per calendar month, but Adobe warns the Page dimension is especially exposed because several backend columns all count against the same limit. That means Low-Traffic can start absorbing items well before the visible page count looks close to 2 million, with a second, more aggressive threshold set to 2,100,000 by default.
Was This Article Helpful?
Let us know what you think!
See us more often in Google
One click marks Flowsery as a preferred source, so our articles sit higher in your Top Stories, AI Mode, and AI Overviews.
Before you go...
Flowsery
Revenue-first analytics for your website
Track every visitor, source, and conversion in real time. Simple, powerful, and cookie-free.
Real-time dashboard
Goal tracking
Cookie-free tracking
Related Glossary Terms


Reading Entry Page vs Landing Page in GA4 and Adobe
The entry page vs landing page split matters because GA4 ships only a Landing page dimension and Adobe ships only Entry page, computed from different fields.


What Counts as Referral Traffic, and What Quietly Does Not
Referral traffic is decided by two different rules. GA4 reads the medium, Matomo reads the referrer host, and the Referer header drops most of the URL.


Why Unique Visitors Meaning Changes From Tool to Tool
The unique visitors meaning depends on the tool: GA4 estimates it, Matomo refuses to compute it on long ranges, Adobe dedupes it across the whole report.


How to Build GA4 Calculated Metrics Inside a Five-Slot Quota
Google caps GA4 calculated metrics at 5 per standard property. Learn the formula syntax, the units, where they appear and what a formula can't use.


Setting Up GA4 Content Grouping With One Parameter
Set up GA4 content grouping with the content_group parameter in gtag or Tag Manager, read the Content group dimension and keep (not set) rows out.


What Unassigned Traffic GA4 Reports Actually Means
A channel with no matching rule, unassigned traffic ga4 shows is not a missing value like (not set). Google's own rules explain the difference.
Related Articles


How GA4 Channel Rules Settle utm_source vs utm_medium
Google defines utm_source vs utm_medium in one line each. GA4's channel rules decide which parameter actually sorts your traffic. Both, quoted exactly.


Google Lists Seven Separate Causes of not set in GA4
Google's docs give not set in GA4 a different cause per dimension, from a missing session_start to an empty content_group. Here is each cause and its fix.


What the Numbers Say About Average Bounce Rate by Industry
Nine tracked industries return a documented average bounce rate by industry ranging from 35.76% to 48.38%, sourced from Databox data dated September 2024.

