Sampling, thresholds and row caps
How Search Console and GA4 limit the data MeasureScale reads, how much each analysis pulls, and how a result tells you it is partial.
Google does not always return every row of your data. Search Console hides some queries and caps the rows it returns. GA4 can sample a report, withhold small rows and cap its rows. MeasureScale also limits how many rows each analysis reads. This page explains each limit and how a result reports it.
MeasureScale can measure one of these limits directly: the share of Search Console traffic that has no query text.
How to read the answer
- A high share of traffic with no query means query reports miss part of your traffic.
- A result that reached its row cap covers only the top rows. A missing query or page ranks lower. It did not necessarily earn nothing.
- A GA4 sampling or threshold flag means the numbers are approximate.
- When the large Search Console pull is full, the anonymized share reads too high.
- Ask your assistant whether a result covers all the data before you treat it as site-wide.
What it answers
- What share of the site’s clicks and impressions has no query attached?
- Does a result cover all the data, or only the top rows?
- Did GA4 sample or threshold the report behind a result?
Anonymized queries in Search Console
Search Console hides some rare queries to protect user privacy. It still counts their clicks and impressions in the site’s totals. These are anonymized queries.
Inputs
MeasureScale makes two Search Console pulls for the same window:
- The site’s daily totals, with no query dimension.
- The daily rows for each query, up to 100,000 rows.
With no dates, the window is the last 28 settled days. A settled day is a day whose data Google has finished processing.
How it works
For each day, MeasureScale compares the site’s total with the sum of its query rows. The difference is the traffic with no query row. It reports that difference as a share of the total, for clicks and for impressions.
- Only days that appear in both pulls are compared.
- A day with a total of 0 has no share.
- On some days, the query rows sum to more than the total. The result counts such days, and their share is 0.
The remainder includes more than privacy filtering. It also holds queries that Search Console dropped because of its own row limit, described below.
Row caps
A row cap is the most rows a pull can return. A query or page missing from a capped pull ranks below the cap. It did not necessarily earn nothing.
Search Console
Search Console returns at most 50,000 rows per day and search type, sorted by clicks. Data windows and freshness explains this limit.
MeasureScale also reads a fixed number of rows for each analysis. A full pull means the pull returned as many rows as it can hold. More rows may exist. Every result says when its pull was full.
| Analysis | Rows read |
|---|---|
| Striking distance, opportunity scoring and the CTR curve | Top 1,000 queries by clicks |
| Position distribution and long-tail tiers | Top 1,000 queries by clicks |
| Query shapes | Top 1,000 queries by clicks |
| Branded and non-branded split | Top 100 queries by clicks |
| Cannibalization | Top 5,000 query and page pairs by clicks |
| Ranking changes | Top 1,000 queries or pages in each window |
| Content decay | Top 1,000 pages in each window |
| Breakdown by path | Top 1,000 pages by clicks |
| Sitemap performance | Top 100 pages by clicks |
| Anonymized share | Up to 100,000 date and query rows |
| Query shape trend | Up to 200,000 date and query rows |
| Experiments and migrations | Up to 200,000 date and page rows for each batch of listed pages. A full pull also gives no estimate. |
Blending has its own limits. Blending Search Console and GA4 lists them.
GA4
GA4 returns at most 10,000 rows for a report that sets no row limit. Several analyses read such a whole report. Their results say when GA4 reports more rows than it returned:
- AI assistant referrals
- Error pages
- Breakdown by path and content decay, when they read GA4
GA4 sampling and thresholds
GA4 can change a report before it returns it:
- Sampling. GA4 computes the report from part of the data and extrapolates the totals.
- Thresholding. GA4 withholds rows with few users, so a person cannot be identified.
- The (other) row. GA4 groups rare values into one row named (other) when a report has too many distinct values.
GA4 states these changes in each report’s metadata. MeasureScale copies them into every result that reads GA4 reports. GA4 experiment results are the exception. A result says:
- whether GA4 sampled at least one report behind it
- what share of the data GA4 read, as a percent. With several reports, it gives the lowest share.
- whether GA4 withheld rows in at least one report
- whether a report has an (other) row, or GA4 reported data lost to it
MeasureScale cannot undo these changes. A flag tells you to read the numbers as approximate.
Limits
- A full pull overstates the share. When the 100,000-row pull is full, some query rows are missing. The anonymized share is then too high. The result says so.
- Two causes in one number. The share mixes privacy filtering and Search Console’s row limit. MeasureScale cannot separate them.
- No complete export. Only the Search Console bulk export to BigQuery holds every row. MeasureScale does not read that export.
- GA4 changes stay in the data. Sampling, thresholding and the (other) row change GA4’s numbers before MeasureScale sees them.