┌── POST 05.05 · Google Consent Mode · 4 min read

GA4 With analytics_storage Denied: Cookieless Pings, Behavioral Modeling, and How to Verify It’s Working

When a user declines analytics cookies on your site, GA4 does not go completely dark. Instead, Consent Mode v2 shifts the property into a degraded-but-not-blind measurement state. Understanding exactly what survives a denial — and what Google reconstructs through modeling — is essential before you trust any number in your reports.

What Actually Fires When analytics_storage Is Denied

When analytics_storage: 'denied' is active, Google’s tags still send a minimal, cookieless ping to Google’s servers on each page interaction. These pings carry no user identifier, no session ID, and no cross-session information. They are sometimes called cookieless hits or consent-mode pings.

Specifically, the pings include:

  • A timestamp and the triggering event name (e.g., page_view, purchase).
  • Aggregated, non-identifiable contextual signals: country, device category, browser family, and referring channel.
  • A temporary, session-scoped random token — not persisted across sessions and not linkable to a user.

What is not sent: the _ga client ID, any first-party cookies, user properties, or event parameters that could identify an individual.

From Pings to Modeled Data: How GA4 Fills the Gap

Google uses the cookieless pings as inputs to a statistical model that estimates behavior for the non-consenting population. This process, called behavioral modeling, works by identifying patterns in the consenting cohort and extrapolating them onto the distribution of cookieless pings that share similar contextual signals.

The 1,000-User Threshold

Behavioral modeling is not on by default for every property. GA4 requires a sustained volume of consenting traffic before the model has enough data to generalize reliably. Google’s documented threshold is:

  • At least 1,000 daily users who send cookied (consented) hits over a rolling period — typically evaluated across the past 7 days.
  • The property must also have Consent Mode implemented consistently; partial or inconsistent signals degrade model quality.

Properties below this threshold will see gaps in their reports for non-consenting users rather than modeled fill-ins. Google may also silently suppress modeling if the ratio of denied-to-consented sessions is too high to produce statistically reliable estimates.

Modeled Conversions in GA4

Conversion modeling follows the same mechanism but focuses on the subset of cookieless pings that contain conversion events (e.g., purchase, generate_lead). GA4 estimates how many conversions would have been observed in the non-consenting population based on the consenting cohort’s conversion rate within similar contextual segments.

Key points practitioners often miss:

  1. Modeled conversions appear in standard conversion reports alongside observed conversions — they are not segregated into a separate column by default.
  2. The session_conversion_rate metric can therefore be higher than what raw, cookie-based measurement would show if your consented cohort has an atypically high or low conversion rate.
  3. Google Ads Smart Bidding can consume modeled conversion data when ad_storage is also denied, helping preserve campaign performance signals without accessing individual user data.

The Behavioral Modeling Report

GA4 exposes a dedicated view to inspect modeling coverage. To find it:

  1. Go to Admin → Property → Reporting Identity.
  2. Under Modeling contributions and consent-based modeling, GA4 shows a graph of observed versus modeled sessions over time.
  3. If the property qualifies, you will also see the Behavioral Modeling card in Reports → Acquisition → Traffic acquisition when you apply the secondary dimension Session default channel group.

The report breaks down what percentage of total sessions are observed (consented), modeled (non-consented but estimated), and unmodeled (below threshold or insufficient signal). A healthy Consent Mode implementation typically shows a modeled share that roughly mirrors your consent-decline rate in your CMP’s own logs.

Verifying the Setup in GA4 Admin

Do not assume cookieless pings are flowing just because your GTM tag is live. Use these three checkpoints:

1. Consent Mode Diagnostic in Admin

Navigate to Admin → Data collection and modification → Data streams → [your stream] → Configure tag settings → Consent mode. GA4 will show whether it is receiving Consent Mode signals and flag if the implementation looks inconsistent (e.g., signals firing after tag load).

2. DebugView

Enable gtm_debug or the GA4 DebugView in Tag Assistant. With analytics_storage: 'denied' active, you should still see events arriving in DebugView — but the _ga parameter should be absent from the hit payload. If you see a _ga value, consent is not being applied correctly.

3. Network Inspector

Open DevTools → Network and filter for google-analytics.com/g/collect. With denial active, the request should not contain a cid (client ID) parameter. If it does, your Consent Mode default or update call is misconfigured — the most common cause being the tag firing before the consent signal is sent.

What This Means for Your Reporting Expectations

Consent Mode v2 with analytics_storage: 'denied' is a pragmatic middle ground: you recover some signal from non-consenting users without identifying them, but the data is probabilistic, not observed. For properties above the 1,000 daily-user threshold, modeling typically recovers 60–80% of the sessions that would otherwise be invisible — but that figure varies significantly by industry, device mix, and consent-decline rate. Treat modeled numbers as directional, not as a 1:1 replacement for consented measurement.

C
About the author
Consent Mode HQ
Editorial team at Consent Mode HQ
Read more by author ↗