You run a GA4 Exploration report over a 6-month date range and see a small shield icon with a percentage — “This report is based on X% of sessions.” GA4 sampled your data, and your conversion rates may now be off by 10–20%. Sampling is one of the most underestimated data quality issues in GA4. This guide explains exactly when sampling kicks in, how bad it gets, and three methods to avoid it.

When GA4 Samples Data

Sampling only applies in GA4 Explorations — not standard reports. It kicks in when your query would process more than 10 million events for standard GA4 properties. GA4 360 raises this to 1 billion events. The sample rate appears as a shield percentage icon in the top right of Explorations. A 10% sample means your numbers could be off by up to 10x for low-frequency events.

Standard Reports vs Explorations

Standard GA4 reports (the pre-built ones under Reports) use aggregated data and are NOT sampled. When you need unsampled data, use standard reports with secondary dimensions instead of Explorations whenever possible. The tradeoff: standard reports have fewer customization options.

Method 1: Reduce Date Range

The simplest fix: shorten your date range. If a 6-month query samples at 10%, run it as six separate 1-month queries and aggregate manually. For trend analysis, compare month-over-month in separate unsampled queries rather than one long sampled query. Check if the shield icon disappears after shortening — if it does, you’re unsampled.

Method 2: Add More Filters

GA4 Sampling in Reports: When It Happens and How to Avoid It

Segment your query to reduce the event count below 10M. Add filters for a specific event type, single country, or device category. Each filter reduces data volume and lowers sampling probability. Adding a filter for event_name = ‘purchase’ cuts your dataset to conversion events only — usually a tiny fraction of total events.

Method 3: Use BigQuery for Unsampled Analysis

-- Unsampled conversion rate by channel (would sample in GA4 Explore)
SELECT
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key='source') AS source,
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key='medium') AS medium,
  COUNT(DISTINCT user_pseudo_id) AS users,
  COUNTIF(event_name='purchase') AS purchases,
  ROUND(COUNTIF(event_name='purchase')/COUNT(DISTINCT user_pseudo_id)*100,2) AS cvr
FROM `project.analytics_XXXXXXXXX.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260101' AND '20260630'
  AND event_name IN ('session_start','purchase')
GROUP BY 1,2 HAVING users > 100
ORDER BY purchases DESC;

Sampling Threshold Quick Reference

  • Standard GA4 Explorations: 10 million events per query
  • GA4 360 Explorations: 1 billion events per query
  • Standard pre-built reports: no sampling
  • BigQuery export: no sampling — 100% raw data always
  • Realtime report: no sampling

Related: GA4 Explorations Quota Limits, BigQuery Funnel Analysis.

Guide

Leave a Comment