Google Analytics 4 and Cookie Consent: What Changed From Universal Analytics

Universal Analytics stopped processing data back in mid-2024, which means every site still running Google Analytics has, by now, migrated to GA4 — a migration that changed more about consent handling than most teams realized while doing it. A consent setup built around Universal Analytics' assumptions doesn't automatically carry over correctly.

Universal Analytics predates Google's formal Consent Mode framework. Most UA consent setups were bolted on afterward — a tag manager trigger that simply didn't fire the GA tag until consent was granted, a binary on/off. GA4 was built alongside Consent Mode from the start, and Google explicitly designed it to behave differently depending on which consent signals are present, not just whether GA fires at all.

Consent Mode recognizes several distinct signals, the two most relevant being analytics_storage and ad_storage. This matters because GA4 (and Google Ads) can receive partial signals:

  • Both granted — full tracking, as normal
  • analytics_storage denied, ad_storage granted — GA4 doesn't set its usual cookies, but can still send cookieless "conversion modeled" pings to Google for aggregate modeling, depending on configuration
  • Both denied — no cookies, no pings, full block

The key point that trips people up: "Consent Mode installed" doesn't mean "no data sent without consent." Google's own documentation describes cookieless pings and conversion modeling that can occur even when consent is denied, as part of how Consent Mode is designed to still provide aggregate signal to Google Ads. Whether that's acceptable under your specific DPA's guidance is a legal question worth checking directly — several EU regulators have published differing guidance on whether modeled/cookieless pings themselves require consent.

What actually needs checking on a GA4 setup

A site can have GA4 running without Consent Mode configured at all — in which case it behaves like old-style UA setups, either fully blocked or fully unblocked with no middle ground, and your CMP needs to gate the entire tag rather than relying on Consent Mode signals.

2. The default state before any interaction is "denied," not "granted"

Consent Mode requires an explicit default state set before the GA4 tag loads. If the default is misconfigured as "granted," GA4 behaves as if consent was given until told otherwise — meaning data can flow during the window before the visitor interacts with the banner at all.

This is a common and completely silent failure: a CMP is installed, a banner displays, a visitor rejects — but the CMP was never actually configured to call gtag('consent', 'update', ...) with the right parameters. The banner and the Consent Mode layer exist on the same page without being connected to each other.

4. Advanced/cookieless pings, if you want them disabled entirely

If your reading of applicable guidance is that cookieless modeling pings themselves require consent, that needs a specific additional configuration step — it isn't the default "denied" behavior.

How to check this on your own site

Open DevTools' Network tab filtered to google-analytics.com or analytics.google.com, load the page before interacting with the banner, and look at what — if anything — fires. Then click reject and check again: a correctly configured Consent Mode setup should show either nothing, or only Google's own cookieless ping format, never a standard tracking hit with cookies attached.

We cover the broader Consent Mode v2 mechanics — what it checks and what it doesn't — in a separate breakdown if you want the full picture beyond GA4 specifically.

Run a free scan of your site to see exactly what your GA4 setup sends before and after a visitor's consent choice.

Listed on SitePatent