Glossary

When Data Sampling Starts and How to Spot It in a Report

Taras Shynkarenko
Taras Shynkarenko
•Updated: •9 min read
When Data Sampling Starts and How to Spot It in a ReportWhen Data Sampling Starts and How to Spot It in a Report

TL;DR, Quick Answer

9 min read

Google 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.

SurfaceStandard propertyAnalytics 360
Default events read per query10 million100 million
Highest available limit10 million1 billion, via "More detailed results" in Explore
Unsampled explorationsNot availableAvailable, 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.

An analyst studies a data table on a monitor, similar to checking a data quality icon for a sampling percentage.

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:

ConstraintDocumented value
EligibilityOnly if the query would return more than 1 billion events
Daily token quota20,000 tokens per property, shared across all users and API requests
Cost ceiling per query5,000 tokens
Quota resetMidnight Pacific time
Typical processing timeUnder 30 minutes
Result lifetime50 days after the request
Export sizeUp to 10,000,000 cells for TSV and CSV
Permission requiredAnalyst or higher
Unsupported techniqueUser 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.

Two colleagues compare printed reports side by side, reflecting how different analytics platforms handle the same traffic differently.

Escalating out of GA4 sampling on Analytics 360
Query exceeds the 100 million event quota
Faster results only (default sample)
Switch to More detailed results (up to 1 billion events)
Any change reverts to Faster results
Unsampled exploration request (only above 1 billion events)
Each escape hatch holds only until the next change to the query, except the offline unsampled request.

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
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.

PlatformWhat it limitsWhere the loss shows up
Google Analytics 4Events read per queryEvery metric in the report, as an estimate
Adobe AnalyticsUnique dimension values per monthA single "Low-Traffic" row absorbing the long tail
MatomoRows archived per reportA 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
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

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

Related Articles