Under GDPR and similar privacy regulations, you must obtain user consent before setting analytics and advertising cookies.

If users decline consent, standard GA4 tags do not fire - which means no data for those users. In some markets (EU, UK, EEA), consent decline rates can be 30 - 60% of users. Losing that data creates a significant blind spot.

Consent Mode v2 is Google’s framework for handling this gap.


Consent Mode v2 is a protocol that tells Google tags how to behave based on user consent status.

It works through two primary consent types:

And two additional types introduced in v2:

All four must be addressed in a v2-compliant implementation.


Tags are blocked entirely until consent is granted.

Simple to implement, but offers no data recovery for non-consenting users.

Tags fire in a limited, cookieless mode even without consent.

Advanced Consent Mode is the recommended implementation. It retains some signal even from non-consenting users, which GA4 uses to model estimated conversions and sessions.


How Behavioural Modelling Works

When Consent Mode is active and users decline consent, GA4 receives limited cookieless pings.

GA4 uses these pings - along with patterns from consenting users - to statistically model the behaviour of non-consenting users.

This modelled data appears in GA4 reports alongside observed data. Reports show combined totals.

Important: Modelling is not perfect. It is an estimate. The quality of modelled data depends on:

Modelling helps but does not fully replace the lost signal from declined consent.


The default consent state must be set before any other tags fire. This tells Google tags what to assume before the user has made a choice.

In GTM, create a Custom HTML tag with an Initialization - All Pages trigger (this fires before all other tags):

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}

  gtag('consent', 'default', {
    'analytics_storage': 'denied',
    'ad_storage': 'denied',
    'ad_user_data': 'denied',
    'ad_personalization': 'denied',
    'wait_for_update': 500
  });
</script>

Setting all to denied by default is the correct approach for GDPR markets. Users are assumed to have declined until they explicitly consent.

wait_for_update: 500 gives the Consent Management Platform (CMP) 500ms to update consent before tags fire.

Your CMP (e.g. Cookiebot, OneTrust, Usercentrics, Complianz) handles the consent banner and stores the user’s choice.

When the user accepts or declines, the CMP should push a consent update to the data layer. Most major CMPs have built-in GTM integrations that handle this automatically.

The update looks like this (for a user who accepts all):

gtag('consent', 'update', {
  'analytics_storage': 'granted',
  'ad_storage': 'granted',
  'ad_user_data': 'granted',
  'ad_personalization': 'granted'
});

For a user who declines advertising but accepts analytics:

gtag('consent', 'update', {
  'analytics_storage': 'granted',
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied'
});

In your Google Tag (base configuration) in GTM:

  1. Open the tag configuration
  2. Expand Advanced Settings
  3. Under Consent Settings, ensure the tag respects consent requirements - this is usually automatic with the Google Tag type

You do not need to manually configure this if you are using the Google Tag tag type in GTM. It reads the consent state automatically.


CMP Integration

The major CMPs have native GTM integrations that push consent updates automatically. You typically just need to:

  1. Install the CMP tag or script
  2. Connect the CMP to GTM (usually via a template in the GTM Template Gallery)
  3. Verify the consent update is being pushed to the data layer after the user makes a choice

Check that the CMP fires its consent update before your GA4 tag fires. Use GTM Preview mode to verify the firing order.


In GTM Preview Mode

  1. Open your site in Preview mode
  2. Decline consent on the banner
  3. In Tag Assistant → check the GA4 tag
  4. The tag should show as “Fired” but in a limited state - this confirms Advanced Consent Mode is active

In GA4 DebugView

With Consent Mode active and after declining consent, GA4 should still receive page_view pings - but without a client ID. These appear as anonymous pings in DebugView.

GTM has a built-in Consent Overview:

  1. GTM → Preview → open a page
  2. In Tag Assistant, click the Consent tab
  3. This shows the current state of each consent type and which tags are affected

Consent Mode modelling recovers estimated session and conversion data - but some things are genuinely lost for non-consenting users:

These are real limitations. The goal of Consent Mode is to preserve aggregate signal - not to circumvent consent requirements.


Common Implementation Mistakes

Not setting a default state before tags fire. If the Google Tag fires before gtag('consent', 'default', ...) runs, Consent Mode is not applied. Use the Initialization trigger to prevent this.

Setting default to “granted.” In GDPR markets, defaulting to “granted” is not compliant. Default must be “denied” for EU/EEA users. Some implementations use geo-based logic to apply denied defaults only in regulated markets.

Using Basic Consent Mode when Advanced is available. Basic Consent Mode blocks all pings. Advanced Consent Mode allows cookieless pings. Use Advanced unless you have a specific reason not to.

Not including all four consent types. Consent Mode v2 requires ad_user_data and ad_personalization in addition to the original two. Missing these causes issues with Google Ads data matching and remarketing.


Final Thoughts

Consent Mode v2 is not optional in regulated markets. It is also not magic - it cannot recover all lost data, but it significantly improves the signal available for modelling.

Implement it correctly from the start. The alternative - running without consent compliance - carries regulatory and reputational risk that no analytics setup is worth.

In the next article of this series, we will cover:

GA4 Explorations - how to build custom reports that actually answer business questions.

Related Posts

How Consent Mode Impacts Your Tracking: What Changes When Users Decline

12 min read

Consent ModeTrackingPrivacyGoogle AnalyticsGoogle AdsConsent Mode Series

GA4 Enhanced Ecommerce Tracking - What the Data Layer Needs to Look Like

10 min read

GA4EcommerceData LayerGTMTrackingGA4 Intro Series

How to Implement Consent Mode v2 with Google Tag Manager

14 min read

Consent ModeGoogle Tag ManagerPrivacyGDPRConversion TrackingConsent Mode Series
Adnan Agic

Adnan Agic

Google Ads Strategist & Technical Marketing Expert with 5+ years experience managing $10M+ in ad spend across 100+ accounts.

Need Help With Your Google Ads?

I help e-commerce brands scale profitably with data-driven PPC strategies.

Get In Touch
Back to Blog