How to Check Google Consent Mode v2 Is Working Correctly

Quick fix: Open Tag Assistant, connect to your site, and select the earliest Consent event. All four signals (ad_storage, analytics_storage, ad_user_data, ad_personalization) must have a default set before any tag fires. After you accept the banner, the latest Consent event should show them updated to granted.
Consent mode lets Google tags adjust what they collect based on the visitor's cookie choices. Version 2 added two signals that matter for advertising, and many sites that set up consent mode years ago only send the original two. Others send all four but in the wrong order, so tags fire before the defaults exist.
None of this shows up as an obvious error on your site. The banner appears, the visitor clicks, and everything looks fine. The only way to know is to check what Google tags actually received. This guide shows you how.
The four consent signals you need to check
Google's consent mode overview defines these signals. Consent mode v2 means sending all four:
| Signal | What it controls |
|---|---|
ad_storage | Storage such as cookies related to advertising |
analytics_storage | Storage such as cookies related to analytics, for example visit duration |
ad_user_data | Consent for sending user data to Google for online advertising purposes |
ad_personalization | Consent for personalized advertising |
There are also non-advertising types such as functionality_storage, personalization_storage and security_storage, but the four above are the ones Google Ads and Google Analytics depend on.
Basic vs advanced consent mode
Before you test, know which implementation you have, because the expected behavior is different.
| Basic | Advanced | |
|---|---|---|
| When Google tags load | Only after the visitor interacts with the banner | On page load, with defaults (usually denied) |
| Data sent before consent | None | Cookieless pings and the consent state |
| If the visitor declines | Google tags do not fire | Cookieless pings continue |
| Conversion modeling | General model | Advertiser-specific model |
In basic mode, seeing no Google requests before the banner click is correct. In advanced mode, seeing requests before the click is also correct, as long as the consent state on those requests is denied where your policy requires it.
Common problems, from most to least likely
1. The default is set too late
This is the most frequent failure. Google's consent setup guide says the default command must run before any command that sends measurement data, such as config or event, and warns that if consent code runs out of order, the defaults will not work.
For gtag.js, the default block has to sit above the Google tag snippet, and it must not be loaded asynchronously:
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied',
'wait_for_update': 500
});
</script>
<!-- Google tag (gtag.js) snippet goes after this -->
In Google Tag Manager, the tag or CMP template that sets defaults must fire on the Consent Initialization - All Pages trigger, which runs before other triggers. If it fires on a normal page view trigger, other tags can run first.
Tag Assistant flags this case with an error stating that a tag read consent state before a default was set.
2. Only two of the four signals are set
An older setup may set ad_storage and analytics_storage but not ad_user_data or ad_personalization. Tags still fire, so it looks fine, but Google treats the missing signals as not provided. Update your CMP to a version that supports consent mode v2, or add the two signals to both your default and update commands.
3. The update never reaches Google tags
The visitor accepts, the banner closes, and the consent state stays denied. This happens when the CMP is not actually integrated with consent mode, or its integration is switched off in the CMP's settings.
When consent changes, an update must be sent:
gtag('consent', 'update', {
'ad_storage': 'granted',
'ad_user_data': 'granted',
'ad_personalization': 'granted',
'analytics_storage': 'granted'
});
In GTM, CMP templates should use the Tag Manager consent APIs (setDefaultConsentState and updateConsentState). Google's guide notes that gtag('consent', 'update', ...) should not be used as a substitute for updateConsentState inside Tag Manager setups.
Also check the reverse direction. If a visitor later withdraws consent in your preferences center, an update should set the signals back to denied.
4. The CMP loads slower than the tags
Many CMPs load asynchronously. If a returning visitor already accepted, the CMP needs a moment to read the stored choice and send an update. The wait_for_update parameter in the default command tells Google tags how many milliseconds to wait for that update before sending data. Without it, the first hits on each page may go out as denied even for visitors who consented.
5. Regional defaults do not match your policy
You can set different defaults by region with the region parameter, for example denied in the European Economic Area and granted elsewhere. Mistakes here are easy to miss because you only see your own region's behavior when testing. Check that every signal is set in every regional default, not just one or two.
6. Non-Google tags ignore consent
Google tags read consent mode natively. Other tags, such as Meta or TikTok pixels, do not. In GTM, these need an additional consent check in the tag's consent settings, or a trigger condition based on your CMP's consent state. Otherwise they fire regardless of the banner. If you also run Meta, see our Meta Pixel troubleshooting guide for how consent can stop it from firing.
How to verify consent mode in Tag Assistant
Google documents this process in its consent mode debugging guide. Use a fresh incognito window so no earlier choice is stored.
- Go to tagassistant.google.com, add your site URL, and connect. The Tag Assistant Chrome extension gives the most reliable results.
- When your site opens, do not click the banner yet. Return to Tag Assistant.
- In the Summary on the left, select the earliest Consent event. In the API Call section, confirm all four signals are set with the defaults you expect.
- Alternatively, click a Google tag, open its Output section, select the Consent tab, and check the On-page Default column. In regions where you need opt-in consent, it should show Denied.
- Go back to your site and accept the banner.
- In Tag Assistant, select the most recent Consent event and confirm the signals updated. In the Consent tab, the On-page Update column should show Granted.
- Open the Tags view and click individual tags to see whether each one fired or was blocked as expected for the consent state.
- Repeat the test and decline instead of accepting. The signals should stay or return to denied.
If the Consent tab is empty, consent mode is not implemented on the page, or the Google tag itself was blocked from loading. If Tag Assistant will not connect at all, see why GTM Preview and Tag Assistant fail to connect.
If you use region-specific defaults, repeat the test with a simulated location in each region you configured. Your own location only shows one set of defaults.
Check the status in Google Ads and Google Analytics
After the setup works in Tag Assistant, confirm Google's products see it too:
- Google Ads: Go to Goals > Conversions > Summary, open a website conversion action, and check its Diagnostics tab. Google's verification article lists statuses such as "Consent mode is implemented" and "Consent mode is implemented and modeling is active". It can take 48 hours, and sometimes up to 2 weeks, to appear.
- Google Analytics: In Admin, under Data collection and modification, open Consent settings. It shows the status of advertising and behavior analytics consent signals. Google notes these notices can take 48 to 72 hours to update after you change your setup.
You can also use the Pixel Helper extension to see which pixels fire before and after you accept the banner, which is a quick way to spot non-Google tags that ignore consent.
FAQ
Do I need consent mode v2 if my visitors are not in Europe?
Requirements depend on your regions and Google's policies for the products you use. Many sites set denied defaults only for regions that require opt-in consent and granted defaults elsewhere using the region parameter. Check the current Google policies and your own legal advice for your situation.
Why do I see Google requests before the visitor accepts?
With advanced consent mode, that is expected. Google tags send cookieless pings while consent is denied. With basic consent mode, no Google requests should be sent before the visitor interacts with the banner.
Why is GA4 missing data after I set up consent mode?
Visitors who decline analytics consent are not measured with cookies, so some drop is expected. A large drop among visitors who accepted usually means the update is not being sent. Our guide to GA4 events not showing covers the other causes.
What does an empty Consent tab mean in Tag Assistant?
Either consent mode is not implemented on that page, or the Google tag was blocked from loading. Check your CMP integration and confirm the Google tag loads at all.


