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:

  1. The site’s daily totals, with no query dimension.
  2. 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.