Back to blogMarketing data

Thresholds and missing data in GA4: when numbers vanish

Data thresholds, sampling and the (other) row make GA4 numbers vanish or change. Learn to tell them apart and what to do, with official sources.

Time Relator Digital7 min read
Grid of cyan and orange dots with a few dashed purple circles where dots have disappeared
Contents

When a number vanishes or changes in GA4, the cause is almost always one of three: a data threshold (GA4 withholds rows to protect user identity), sampling (the report uses only part of the events) or the "(other)" row (rare values grouped together). Each has a different sign on screen and a different way out. Knowing which one is at work saves you from reworking filters for nothing, and from explaining to a client an "error" that does not exist.

Three different mechanisms, one similar symptom

For the analyst the symptom is the same: the number is not what you expected. But the three mechanisms have nothing else in common.

Three cards: data threshold withholds rows with few users, sampling uses part of the events, the (other) row groups rare values
Three different causes for a number that vanishes or changes

In a table, the difference is in what happens to the data:

  • Data threshold

    What happens
    Rows withheld because of few users
    Where you see it
    Threshold notice on report cards
    Main way out
    Widen the date range
  • Sampling

    What happens
    Estimate from part of the events
    Where you see it
    Quality icon with the percentage used
    Main way out
    Reduce the query's events or use 360
  • (other) row

    What happens
    Rare values grouped together
    Where you see it
    A row named "(other)"
    Main way out
    Fewer high-cardinality dimensions
MechanismWhat happensWhere you see itMain way out
Data thresholdRows withheld because of few usersThreshold notice on report cardsWiden the date range
SamplingEstimate from part of the eventsQuality icon with the percentage usedReduce the query's events or use 360
(other) rowRare values grouped togetherA row named "(other)"Fewer high-cardinality dimensions

Data threshold: GA4 withholds rows to protect people

The Google Analytics Help explains that thresholds exist to stop anyone viewing a report from inferring the identity of users or sensitive information from signals such as demographics and interests. Thresholds are system-defined and cannot be adjusted. The page gives no minimum number of users, so any value quoted elsewhere as "the limit" does not come from the official documentation.

The Help describes two situations where data may be withheld:

  • Demographic data. A report, exploration or API call that includes demographic data, or an audience defined by demographics, may have data withheld.
  • Search queries. A row of search query information may be withheld when there are not enough total users.

When a threshold applies, the data quality indicator shows a message that GA4 applied thresholding to one or more cards in the report. That is the first place to look before assuming collection broke.

What lowers the chance of a threshold

The Help says you cannot adjust the threshold, but you can reduce the chance of it appearing. The documented action is to widen the date range: short ranges with few users or events are more likely to have data withheld, and a longer period may gather enough users.

In practice, this changes how you build reports for small clients. A daily report with age and gender crossed with a campaign is more likely to lose rows than the same report by month. If the client's question is about the audience profile, answer with the month or the quarter, not the day.

Why BigQuery shows different numbers

The Help also warns that GA4 does not export Google signals data to BigQuery, so event counts per user may differ between the two. That is not a defect in your report: they are different datasets. When comparing the two sources, record where each number came from.

Sampling: the report uses part of the events

The Help defines sampling as analyzing a subset of data to estimate results for a larger dataset, which lets you retrieve data faster with minimal impact on quality. It can occur in standard reports and explorations when the number of events used in the query exceeds the property's quota.

The same page gives the quota numbers:

  • Standard properties: 10 million events per query.
  • Google Analytics 360: up to 1 billion events, with an initial default of 100 million events per query.

When results are sampled, the data quality icon shows the percentage of data used. A larger sample generally means more accurate results. The page also notes that filtering a large dataset by country can cause sampling.

Unsampled data is available only in Google Analytics 360, according to the Help on explorations. On a standard property, the way out is to reduce the number of events in the query, for example with a shorter period.

Unique counts are estimates too

Even without sampling, the Help says reports use the HyperLogLog++ algorithm to estimate distinct counts such as users and sessions. The difference is usually under 1%, but it can be higher, especially when combining several metrics that use this algorithm.

A hypothetical example to give the scale: in a report with 10,000 users, 1% is 100 users. A difference of that order between two reports of the same property does not indicate a collection error. Much larger differences deserve investigation.

The "(other)" row: when the table has too many rows

The Help explains that the "(other)" row appears when a table goes over the row limit: GA4 shows the most common values of the dimension and condenses the less common ones into the "(other)" row.

The number of rows grows with cardinality, the number of values a dimension can take. In tables with several dimensions, the total rows can reach the product of each one's values. The Help's own example: device with 3 values combined with age with 6 values can produce up to 18 rows.

A hypothetical example with the same math: add city, with 40 values, and the table can reach 3 × 6 × 40 = 720 rows. The more dimensions you cross, the easier it is to land in "(other)".

The page does not set an exact row limit. It guides that a dimension with more than 500 values should be considered high-cardinality, and makes clear that this number is guidance, not a limit. It also says that reports with secondary dimensions, filters or comparisons are more likely to have an "(other)" row, and that 360 properties have higher limits.

How to avoid it

The official recommendations are:

  • Use existing dimensions before creating custom dimensions.
  • Do not use high-cardinality dimensions unless necessary.
  • Do not create a custom dimension to get a distinct identifier per user. Use User-ID.
  • Use standard reports whenever possible, because they have aggregate tables. A standard report with one dimension is rarely affected.
  • For high-cardinality data, send it through event parameters and user properties instead of registering custom dimensions. You can still use it in BigQuery and in audiences.

How the API tells you what happened

If you pull GA4 data through the Data API, the response carries metadata saying which of the three cases occurred. In the ResponseMetaData reference:

  • subjectToThresholding: if true, the report is subject to thresholding and only returns data that meets the minimum aggregation thresholds.
  • samplingMetadatas: if the report was sampled, describes the percentage of events used.
  • dataLossFromOtherRow: if true, some buckets of dimension combinations were rolled into the "(other)" row.

Anyone building automated reports should read these fields and show the warning next to the number. A dashboard that shows the table without saying it came with a threshold or "(other)" conveys a precision the data does not have.

How to apply

  1. 1.Before investigating tracking, check the report's data quality indicator. It says whether there is a threshold or sampling.
  2. 2.If there is a threshold, widen the date range and reduce crossing with demographic data. If the client needs daily granularity, warn them that some rows may not appear.
  3. 3.If there is sampling, shorten the period or reduce the query's event volume, and note the percentage shown in the icon when reporting the number.
  4. 4.If "(other)" appears, remove high-cardinality dimensions from the table and prefer standard reports.
  5. 5.In API integrations, read subjectToThresholding, samplingMetadatas and dataLossFromOtherRow in every response and show the warning with the number.
  6. 6.When comparing with BigQuery, remember that Google signals data is not exported and counts may differ.
  7. 7.Record in the client's metrics dictionary that GA4 numbers may have a threshold, a sample or "(other)", and which reports to use for the official number.

Sources

Checked on October 23, 2026.

This article is also available as Markdown, for agents and LLMs: view .md version

Want to apply this in your operation?

Connect Meta, Google, GA4 and the client's CRM and build the monthly report without spreadsheets.

Your next month-end close can be the last one done in a spreadsheet.

Try it free for 7 days: connect your sources today and send the first report this week.

No cardCancel anytime