This article is for you if you integrated Axeptio via a hardcoded snippet. Using a different method? Check the guide for: GTM integration · CMS integration — Learn more about integration methods
Google Consent Mode v2 is a mechanism offered by Google that allows you to adjust the behavior of their tags (Google Analytics 4, Google Ads, etc.) based on your visitors' consent choices. Without it, your Google services cannot adapt their behavior to your visitors' choices, which results in degraded measurements in Google Analytics and Google Ads.
Specifically:
If the visitor accepts: tags work normally, cookies are placed, complete data is sent to Google.
If the visitor refuses: tags do not place cookies, but send pings to Google — minimalist signals (consent status, user agent, timestamp) without individual visitor identification. These pings allow Google to model unobserved conversions.
To learn more about the concepts: Consent Mode — official Google documentation 💉 Need a refresher? Check out our blog article
Consent Mode signals
Consent Mode v2 is based on 4 required signals:
Signal | Role |
analytics_storage | Authorizes Google Analytics to measure visitor behavior on the site |
ad_storage | Authorizes Google to save advertising information on the visitor's device |
ad_user_data | Authorizes sending the visitor's activity data to Google for targeted advertising |
ad_personalization | Authorizes personalization of Google ads displayed to the visitor |
Google also defines 3 optional signals (functionality_storage, personalization_storage, security_storage) that you can configure if your use case requires it. For most sites, the 4 signals above are sufficient.
Configuration takes place in 2 steps — both are mandatory: 1. Define the default signals (in your GTM tag or code snippet) These values are transmitted to Google when the page opens, before any visitor interaction with the banner. For European visitors subject to GDPR, the 4 signals must be set to denied by default. 2. Enable the Consent Mode v2 screen in your Axeptio banner This screen allows for the updating of signals after the visitor has made their choice. Without it, signals remain locked on their default values — even if the visitor accepts everything, Google will continue to receive denied. The Axeptio registry will be correct, but Google tags will never receive the granted signal.
⚠️ These 2 steps are inseparable. One without the other produces an invalid implementation.
Basic mode or advanced mode: which one to choose?
Before configuring anything, choose your mode — it directly determines how your Google tags should be triggered.
Basic mode | Advanced mode | |
Loading Google tags | Blocked until banner interaction | Immediate when page opens |
Data sent to Google before consent | None — not even a ping | Pings without cookies (consent status, user agent, timestamp) |
Google modeling | Generic model (less precise) | Advertiser-specific model (more precise) |
Conditioning logic | Google tags blocked until consent | Google tags triggered systematically |
Depending on the mode you choose, you will need to adapt your conditioning logic (in GTM or in your code).
Basic mode: Google services (GA4, Google Ads) must be present in your Axeptio banner — they are what control the blocking/unblocking of tags. Advanced mode: only the Consent Mode v2 screen is needed in the banner — no need to add Google services.
Basic mode
Google tags do not load until the visitor has interacted with the banner. No data is transmitted to Google before this interaction — not even a consent ping. If the visitor refuses or ignores the banner, Google receives nothing.
In return, Google modeling relies on a generic model (global population, less precise than in advanced mode).
For the conditioning logic, refer to our documentation:
With Google Tag Manager: Google Tag Manager Interface
With Gtag.js: Integration / custom synchronization
Advanced mode
Google tags load when the page opens, before any interaction with the banner. From that moment on, they send cookieless pings to Google — minimalist signals (consent status, user agent, timestamp) that do not allow individual visitor identification, but allow Google to build a modeling model specific to your site (more precise than in basic mode).
When the visitor accepts: cookies placed, complete data transmitted.
When the visitor refuses: cookieless pings only, no individual targeting.
For the conditioning logic:
In Google Tag Manager: load your Google tags with the "All Pages" trigger
With Gtag.js: load the script directly, without conditions
Note — Google modeling requires sufficient traffic volume to activate. Thresholds vary by product: for GA4, you need at least 1,000 consenting visitors per day over 7 consecutive days; for Google Ads, 700 ad clicks over a 7-day rolling period. Below these thresholds, advanced mode remains valid but without modeling benefits. For details: Behavioral modeling — GA4 · Conversion modeling — Google Ads.
Enable the dedicated screen in your banner
With Axeptio, you control the Consent Mode signals directly from your cookies banner. In just a few clicks, you can activate a dedicated screen for managing Consent Mode v2.
To do this, go to your widget configuration.
Below the "classic" screens, you will find the "Enable Consent Mode v2 (step)" option:
By checking this option, a new screen will be added to your widget with the 4 parameters of Google's Consent Mode:
Once the option is checked, don't forget to republish your project!
Without this screen, signals are never updated. Default values (e.g. denied) remain in place for all visitors, including those who accept. Google never receives the granted signal.
Compliance with Google requirements
For a CMP to be recognized as compatible by Google, your banner must meet three requirements:
Inform visitors that data is being collected for personalization and advertising effectiveness measurement purposes
Include a link to Google's privacy policy: https://business.safety.google/privacy/
Provide an explicit acceptance button ("Accept" button or equivalent clearly visible)
When you add Google Analytics 4 or Google Ads to your Axeptio banner, the dedicated Consent Mode v2 screen is automatically activated. This screen presents the 4 Consent Mode parameters with the information and link required by Google — the three requirements above are thus satisfied without additional action.
Set the default Consent Mode parameters
Here you will set the default values of the Consent Mode, that is, for each parameter, whether it will be accepted or rejected before any user choice.
This configuration should be done in the same place where you load Axeptio.
For example, if you load Axeptio via our WordPress module, the configuration will be done in this module. If you load Axeptio directly via our hardcoded script, then the modification will be done directly in the script. And if you load Axeptio via GTM, it will be done in GTM.
Denied or granted by default: choosing the signals The default signals you must define depend on the regulations governing your visitors' region. For example, for visitors from European Union countries (and therefore subject to GDPR), you must set the 4 parameters to denied by default.
Loading order — The Axeptio snippet must be placed before any Google script (gtag.js, gtm.js) in your <head>. Otherwise, Google tags may execute before the default consent signals are set.
We will add a googleConsentMode object to the axeptioSettings object, which will contain the default Consent Mode parameters.
We will also pass a wait_for_update parameter which tells Google services to wait for consent for a defined time (in milliseconds) before executing. The standard value is 500ms.
An optional region parameter allows you to specify default parameters specific to a given region, in ISO 3166-2 format (e.g. "FR" for France).
Here is an example in which the 4 parameters are refused by default, for all regions, with the correct loading order:
<!-- Axeptio first in the <head> -->
<script>
window.axeptioSettings = {
clientId: "yourProjectID",
googleConsentMode: {
default: {
analytics_storage: 'denied',
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
wait_for_update: 500,
}
}
};
(function(d, s) {
var t = d.getElementsByTagName(s)[0], e = d.createElement(s);
e.async = true; e.src = "//static.axept.io/sdk.js";
t.parentNode.insertBefore(e, t);
})(document, "script");
</script>
<!-- Google scripts after -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX"></script>
Once your parameters are properly configured, Consent Mode is now active on your site. Congratulations!
Verify Consent Mode v2 implementation
You can verify the correct implementation of Consent Mode v2 by following one of the following tutorials:
About the old Axeptio Consent Mode v2 tag model
About the old Axeptio Consent Mode v2 tag model
🚧 If you followed the old documentation for implementing Consent Mode v2 via the "Axeptio Consent Mode v2" model in Google Tag Manager, you do not need to update your current implementation.
Additionally, you do not need to enable the special Consent Mode screen in your cookies widget, as the Axeptio Consent Mode v2 model is based on the acceptance of Google Analytics and Google Ads directly. Make sure you have these two services configured in your cookies widget.
The Axeptio Consent Mode v2 model will continue to work, but may not be maintained if Consent Mode updates are released. If you wish, you can update your implementation to the new method starting today, but it is not required.
Official Google documentation
To learn more about Consent Mode parameters and functionality, consult Google's official resources:
Consent Mode concepts — understand how it works and types of consent
Manage consent settings — gtag implementation — guide for sites that load Google Tag directly (gtag.js)
Create a GTM tag template for Consent Mode — guide for Google Tag Manager implementations
Need help?
If you detect issues related to missing Consent Mode or TCF signals on Google tags, contact Axeptio first.
