Skip to content
← Back to Blog

Google Consent Mode v2 Setup: Steps, GTM, and Testing (2026)

Published September 30, 2026
Ian Garland

Ian Garland

implement google consent mode v2
 

Quick Overview: Google Consent Mode v2 implementation tells Google tags how to behave before and after a visitor makes a consent choice. It sets default consent states before tags fire, updates those states after user action, and verifies the result in Tag Assistant. Enzuzo, a Google-certified CMP, can simplify that setup.

Google Consent Mode is used to set default consent states on a website and communicate visitors’ consent choices to Google tags. It was first released in 2020, with v2 becoming mandatory in 2024. This updated version doubled the number of advertising consent signals to four.

Google limits access to certain Ads and Analytics features if your site serves users in Switzerland, the United Kingdom, or the European Economic Area and doesn’t handle these new signals appropriately, so proper implementation is vital.

This guide explains how to set up Google Consent Mode v2 on your website using Enzuzo, a Google Consent Mode Gold Partner. The end result is a working, region-specific banner that works seamlessly alongside your GA4 setup, Google Ads tags, and GTM container.

Consent Mode does not replace the cookie consent banner. It passes the visitor's choice to Google tags, and the consent management platform is still what collects that choice. 

What Is Google Consent Mode v2 

Google Consent Mode v2 is an updated version of an API that communicates with Google tags, allowing them to adapt to the users’ consent choices.

Prior to 2023, Google Consent Mode handled two parameters: analytics_storage and ad_storage, which controlled whether Google could use storage for analytical and advertising purposes.

Consent Mode v2 added two more: ad_user_data and ad_personalization, governing whether Google can be sent user data for advertising purposes and whether the user has consented to Google’s personalized advertising.

There are basic and advanced implementation modes. Basic mode prevents Google tags from loading until the visitor interacts with the consent banner whereas Advanced mode defaults to denial but lets tags send cookieless pings, making it more useful for modeling. Both implementation modes allow tags to update and react accordingly if consent is granted later.

Basic vs. advanced implementation models

Basic vs. Advanced Consent Mode at a glance
Feature Basic Consent Mode Advanced Consent Mode
Tag loading Blocked until user interacts with consent banner Loads but denies consent by default
Data before consent None Consent state and cookieless pings
After consent Tags load and fire normally Tags dynamically adjust, writing cookies and sending measurement data if allowed
Modeling General, less detailed modeling More detailed, advertiser-specific model

 

How to implement Google Consent Mode v2: step-by-step

The following walkthrough explains how to implement Google Consent Mode v2 using Enzuzo, which is a Google-certified CMP. While it’s possible to use Consent Mode with a custom consent system, using a CMP such as Enzuzo helps with GDPR and CCPA-compliance while maintaining the flexibility afforded by your own banner and tag setup.

Before beginning, you should know:

  1. Whether you’re using Basic or Advanced mode
  2. What each region’s default consent state should be
  3. Which tags check for consent automatically and which have to be manually configured to do so. Google Tag Manager (GTM) includes a Consent Initialization trigger, Consent Overview page, and per-tag consent settings for this exact purpose.

You will also need:

  • A consent banner or CMP such as Enzuzo that explicitly asks for permission to store advertising cookies and analytics cookies, as well as to use user data for ads and personalized advertising.
  • A GTM container with permission to publish changes and edit tags and triggers.
  • GA4 or Google Ads tags installed so you can tie consent states to the relevant tags.
  • A region-specific consent policy with defaults that match your actual requirements.
  • A testing plan and Google Tag Assistant for verifying everything works as expected.

3-gcm-basic-vs-advanced@3x

Step 1: Using Enzuzo as your CMP

First, create a free Enzuzo account. This does not require a credit card.

 

Select Consent Banner in the left-hand menu. Enzuzo offers templates for compliant banners but behavior, text, and buttons can all be customized on the Configure page. We recommend keeping the Accept, Decline, and Preference Center buttons active to meet legal standards. Ensure you toggle Enable Google Consent Mode on in the General tab before proceeding.

 

Move to the Design tab. From here, you can customize your banner to match your brand, with separate variants for light and dark display modes.

 

Move to the Regions tab. For each region, set the banner you’d like to use and its display mode. Alternatively, check the TCF option to have your banner automatically adapt to meet IAB Europe’s Transparency and Consent Framework requirements.

 

Step 2: Configuring default consent states

Default consent states govern the ways Google tags behave before any user banner interaction. The default state must load before any Google tags evaluate so that nothing happens without the appropriate consent being given. In GTM, this usually means firing your consent-related tag on the Consent Initialization trigger.

To set the baseline status for each consent type, use the following command:

gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied',

'wait_for_update': 500
});

 

In most GDPR-focused setups, the default status is denied, which tells Google tags that consent has not yet been granted. The wait_for_update parameter specifies how long (in milliseconds) Google will wait for the banner or CMP to forward the user’s consent choice before continuing.

Step 3: Deploying via Google Tag Manager

 

 

This step requires you to follow along with our guide to configuring cookie consent with GTM. It reveals exactly how to implement Enzuzo’s cookie consent banner, set up tags, test your setup, and avoid common mistakes. Deploying Google Consent Mode v2 via GTM is the recommended approach as it allows you to manage all of your tags and consent settings in one place. Remember to click Save, Submit, and Publish to push your changes live.

Step 4: Configuring GA4 and Google Ads tags for consent mode

Once the Enzuzo Cookie Manager tag and enzuzo_consent_update trigger are live in GTM, it’s time to connect your GA4 and Google Ads tags so that they only fire once the user has interacted with the Enzuzo banner. This is consistent with Basic mode. Follow these steps:

  1. Navigate to Tags and click on your GA4 Configuration tag.


  2. Remove any existing triggers in the Triggering section.




  3. Click the plus icon (+), select the enzuzo_consent_update trigger, and click Save.



  4. Return to the Tags page.

  5. Edit each Google Ads conversion tracking tag, replacing existing triggers with the enzuzo_consent_update custom event trigger.



  6. After confirming your Conversion ID and Conversion Label are correct, click Save.

  7. Apply the same enzuzo_consent_update trigger to any other GA4 event tags (for button clicks, form submissions, etc). This ensures consistent handling and respect for user consent choices across all GA4 tags.

The setup above runs Consent Mode in Basic mode. The GA4 and Google Ads tags wait for the enzuzo_consent_update event, so nothing reaches Google until the visitor interacts with the banner. The trade-off is that Google has no denied-state signals to model from, so conversions from visitors who decline go unmeasured.

To run Advanced mode instead, keep the Enzuzo tag on the Consent Initialization trigger so the denied defaults load first. Then return the GA4 and Google Ads tags to their standard triggers, such as All Pages, in place of enzuzo_consent_update. Google tags have built-in consent checks, so they load immediately, respect the denied state, and send cookieless pings until the visitor makes a choice. Do not layer extra consent checks on top, since that recreates the blocking problem described in the mistakes section below.

Basic is the stricter option because nothing is sent before a choice is registered. Advanced keeps modeling but does send cookieless pings before consent.

2-gcm-default-command@3x

How to test your Google Consent Mode v2 implementation

Finally, verify that your implementation functions correctly. This quick audit will confirm that:

  • Consent states default to ‘denied’.
  • The Enzuzo banner triggers an update when interacted with.
  • Google tags only fire after the user has interacted with your banner.

Test in Google Tag Manager preview mode

We’ll start by confirming that consent values for ad_storage, analytics_storage, ad_user_data, and ad_personalization are denied by default and update correctly when consent is granted.

 

  1. Open GTM and click Preview.
  2. Enter your website URL in Tag Assistant and click Connect.
  3. Your site will open in a new tab. Interact with the cookie consent banner by accepting, declining, or saving customized choices.
  4. Return to the Tag Assistant tab. Verify the default consent state was correctly assigned by checking the oldest Consent event in the left sidebar.
  5. Open the post-interaction consent event and check that settings updated as expected.
  6. Move to the Consent tab. Make sure the default values show as denied, and that the updated values show as granted after the user accepts each consent category.

Perform a quick data layer inspection (browser console check)

 

 

You can also manually verify that consent states change using your browser’s console. Open your website in an incognito window to ensure existing session data doesn’t cause problems, then either press F12 or right-click the page and select Inspect, then open the Console tab. When you type “dataLayer” and press Enter, two consent entries should appear:

Default: gtag('consent', 'default', { ad_storage: 'denied', analytics_storage: 'denied', … })

Post-interaction: gtag('consent', 'update', { ad_storage: 'granted', … })

If you don’t see these or if they didn’t update as expected, return to steps two and four of the configuration guide above and verify you’re following the steps exactly.

Use Google’s official Consent Mode checker (Google Tag Assistant)

Google suggests using its Tag Assistant to audit Google Consent Mode implementations. Here’s how:

  1. Open Google Tag Assistant.
  2. Enter your website URL and click Connect.
  3. Interact with the Enzuzo banner on your site. Accept all so the update event has a granted state to report.
  4. Move to the Consent tab. The On-page Default should be Denied for all four categories and On-page Update should be Granted.



  5. If your results do not match the expected values, there’s usually a simple solution. You can resolve “Consent not configured” errors by ensuring your Enzuzo tag uses the Consent Initialization trigger, and defaults being “Not set” can be fixed by double-checking that your tag is using the correct Enzuzo Script URL.

Google Consent Mode v2 implementation mistakes

Consent Mode implementations can fail during the handoff between the banner, Google Tag Manager, and the tags themselves. You might notice defaults loading too late, updates refusing to fire, or Consent Mode conflicting with older blocking logic. The result is either a compliance problem, inaccurate measurement, or both. Let’s examine some of the most common errors:

Default consent status is only set after other tags’ evaluation

Problem: When tags fire before a default consent is established, you risk unintended data collection, incorrect consent handling, and unreliable measurement.

Solution: In GTM, consent settings should run on the Consent Initialization trigger. This ensures defaults are set before other tags and triggers execute.

Consent states aren’t updated after user interaction

Problem: Misconfigurations can prevent the user’s consent status from being updated even after they’ve interacted with your banner. This limits analytics and ad measurement capabilities.

Solution: Consent Mode requires both a default state and an updated state for after user interaction. Open Tag Assistant and verify that you've configured a default consent event and a later update event.

Consent Mode v2 parameters are ignored

Problem: Google Consent Mode v2 introduced two new parameters: ad_user_data and ad_personalization. If your implementation only accounts for legacy parameters (ad_storage and analytics_storage), it will appear complete but won’t actually send the consent signals required to take advantage of Google Ads measurement and personalization features.

Solution: Confirm that all four consent signals have default consent states set and that they update correctly when the user makes a decision.

Old exception triggers or consent checks interfere with Google Tags

Problem: Failing to remove old exception triggers and consent checks can prevent Google tags from working correctly. This may mean tags remain blocked even after consent is granted, leading to lost measurement data and complicating the debugging process.

Solution: Google tags already have built-in consent checks so it’s important to delete any with overlapping logic or functionality.

Confusing Basic and Advanced consent modes

Problem: Basic Consent Mode blocks Google tags before the user interacts with your banner. If you’ve inadvertently used this instead of Advanced mode, you won’t have access to Advanced mode’s denied-state signaling or modeling benefits.

Solution: If you wanted Basic mode, change your implementation to ensure Google tags are prevented from loading before the user gives consent. Otherwise, allow Google tags to load with ‘denied’ being the default.

The banner doesn’t update consent before tags evaluate

Problem: If your CMP loads asynchronously, it may not update consent before Google tags evaluate. As such, the tags may process incorrect or incomplete consent states, even when the user has specified their preference.

Solution: In this situation, Google recommends using wait_for_update to introduce a short delay to consent state processing. 500 ms is Google’s suggested starting point.

 

4-gcm-mistakes@3x

Consent Mode was implemented but not confirmed

Problem: Setting up Consent Mode without verifying it works properly across the entire site is a major oversight. You may have compliance issues, broken defaults, or page-specific problems unnoticed and undocumented for long periods of time, greatly increasing organizational risk.

Solution: Use Tag Assistant to verify the default consent state is correctly set, user interaction triggers the appropriate update, and that the correct tags fire or are blocked as needed.

Region-specific defaults aren’t configured properly

Problem: Google supports region-specific default consent behavior but if this is misconfigured, visitors from one jurisdiction may experience behavior intended for users in another location. Alternatively, a broad fallback rule may apply instead of a more-specific regional rule.

Solution: Pay close attention to regional behavior and verify that users in each location actually encounter the behavior they’re supposed to. It’s crucial that your consent management system complies with all regional privacy legislation.

Looking for a plug-and-play solution? Enzuzo’s consent management platform can help you deploy banners, connect the consent flow to GTM, and view logs all in one place. Try Enzuzo for free.

 

Or if you'd rather it done for you, book a call with a consent mode expert. 

 

FAQs

Is Google Tag Manager GDPR-compliant?

 GTM can support GDPR-compliant setups but focuses more on sending consent signals and honoring those choices via Consent Mode. While GTM can be a helpful tool in implementing robust consent-management systems, its usage doesn’t automatically mean your site is compliant with GDPR.

Does Consent Mode work with non-Google tags?

Google Consent Mode only accounts for Google tags. You can, however, use your CMP or GTM to control when third-party tags fire based on the visitor’s consent choices.

Will Google Consent Mode slow down my website?

 Consent Mode has no noticeable impact on your website’s loading time. The default snippet is extremely brief, and even if you’re in Advanced mode, sending cookieless pings barely adds any additional network overhead.

How do I check if Google Consent Mode v2 is working?

Use Google Tag Assistant, which shows the consent state at each step. Open tagassistant.google.com, connect it to the site, and accept the banner. Then select the earliest Consent event and confirm the On-page Default column reads Denied for ad_storage, analytics_storage, ad_user_data, and ad_personalization. Select the most recent Consent event and confirm On-page Update reads Granted. An empty Consent tab means Consent Mode isn't implemented at all.

How do I set up Consent Mode v2 in Google Tag Manager?

Fire the CMP tag on the Consent Initialization - All Pages trigger, so the default consent state loads before any other tag. Google Ads and Analytics tags have built-in consent checks (under Advanced Settings, then Consent Settings), so they adjust on their own once the signals arrive. Extra consent checks are only needed for tags without that built-in behavior. The walkthrough above covers the full Enzuzo setup.

What is the difference between Basic and Advanced Consent Mode, and which should I use?

Basic blocks Google tags until the visitor makes a choice, so nothing reaches Google beforehand. Advanced loads the tags with consent denied by default and sends cookieless pings (the consent state plus measurement without cookies), which gives Google more to model from. Google's advanced mode uses an advertiser-specific model, while basic mode relies on a general one. Basic is the stricter choice when nothing may be sent before a decision, and Advanced gives better conversion modeling, so the right pick depends on whether the legal requirements in each region allow those pings.

What does "Consent mode is implemented and modeling is active" mean in Google Ads?

It is one of two statuses in the Conversions Diagnostics tab, and it means Google Ads has met the modeling threshold and is actively modeling. "Consent mode is implemented" means the setup was detected but the threshold hasn't been reached yet. Google sets that threshold at 700 ad clicks over 7 days for a domain and country grouping. The active status can take 48 hours to appear and up to 2 weeks in some cases.

Is Google Consent Mode v2 mandatory?

Yes, it is for sites with visitors in the European Economic Area, the UK, or Switzerland that use Google's ad or measurement products. Google's EU user consent policy covers those regions, and Google began enforcing it in March 2024, which puts measurement, ad personalization, and remarketing at risk for sites that don't share consent signals. Sites with no traffic from those regions fall outside the policy, though U.S. state laws can still require their own consent controls.

Does my CMP support Consent Mode v2?

Check that it passes all four signals (ad_storage, analytics_storage, ad_user_data, and ad_personalization) and that it is a Google-certified CMP partner or has a Tag Manager Template Gallery integration. Enzuzo is a Google Consent Mode Gold Partner and supports v2. To confirm any CMP, open Tag Assistant's Consent tab and check that all four parameters appear in both the default and the update.

 

Ian Garland

Ian Garland

Ian Garland is a distinguished author and privacy expert, with several years of experience writing for cybersecurity publications. He has a keen interest in data security, VPN testing, and internet privacy issues. Ian holds a first-class Bachelor's degree in Computing from the University of the Highlands and Islands.

logo_Constellation1_Light
logo_Mate_Light
logo_PCC_Light
logo_Aspen_Light
logo_Yale_Light
logo_BrightStar_Light

Start managing consent
the easy way.

Free forever plan available. No credit card required.

★ 4.6/5 on G2 | Trusted by 30,000+ businesses worldwide