← Back to blog
GA4

GA4 Consent Mode v2: What You Actually Need to Know

Consent Mode v2 is not optional. Here's how to implement it correctly without losing your analytics data.

Consent Mode v2 became mandatory for EU advertisers using Google Ads in March 2024. If you haven’t implemented it, your Google Ads campaigns are already running blind — or close to it.

Consent Mode is Google’s mechanism for adjusting how Google tags behave based on a user’s consent choices. Version 2 added two new parameters:

These sit alongside the original analytics_storage and ad_storage parameters.

Why It Matters

Without Consent Mode v2, Google’s smart bidding and audience tools are working with incomplete data. For Google Ads specifically, conversion modelling (the process where Google fills in the gaps for users who declined cookies) requires Consent Mode to be properly implemented.

Get it wrong and your reported conversions may be inflated, deflated, or simply unreliable — and your bidding strategy is making decisions based on bad numbers.

Basic vs Advanced Mode

There are two flavours:

Basic Mode — tags don’t fire at all until the user consents. Simple, conservative, but you lose all data on non-consenting users including the modelled data Google would otherwise provide.

Advanced Mode — tags fire immediately in a “cookieless” state. If the user accepts, full measurement kicks in. If they decline, Google still receives a cookieless ping that allows conversion modelling. This is almost always the right choice.

How to Implement It

The correct implementation depends on your CMP (Consent Management Platform). Most modern CMPs — CookieYes, Cookiebot, OneTrust — have native Consent Mode v2 support.

The key is making sure the consent signal reaches Google before any Google tag fires. This means your CMP’s Consent Mode integration needs to run in the <head> before GTM.

// Default state — set before GTM loads
gtag('consent', 'default', {
  'analytics_storage': 'denied',
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'wait_for_update': 500
});

Then your CMP updates these when the user makes their choice.

Common Mistakes

  1. GTM loading before the consent default is set — the most common issue. Results in a brief window where tags fire without consent.
  2. Only implementing Basic Mode — you’re leaving modelled data on the table.
  3. Not testing with the Google Tag Assistant — always verify the consent signals are being sent correctly.
  4. Forgetting wait_for_update — without this, tags may fire before the CMP has loaded and sent the user’s stored preference.

If you need help auditing your Consent Mode setup, book a free 15-minute call and I’ll take a look.

Found this useful? Book a free 15-minute call to talk through your setup.

🍓 Book Free Call
🍓 Free 15-Minute Call