💡 Already implemented the Privacy Controls and Cookie Solution but having trouble with Google Consent Mode? Check here to troubleshoot the most common issues.
With an ever-growing interest in data protection, user consent and privacy are not just buzzwords, but essential components of any activity online. Google Consent Mode for Google Ads helps advertisers respect user privacy while running effective ad campaigns.
But what is Google Consent Mode? And why do you need to use it?
In this guide, we explain what Google Consent Mode is, why it’s important for Google Ads, and how it could benefit your marketing efforts. Let’s dive right in!
In Google Ads, Consent Mode is a framework that helps website owners gain more accurate insights into conversion data while honoring user consent preferences as legally required. Google Consent Mode allows you to adjust how your Google Tags behave based on your users’ consent status and helps you to gather data for non-consented users, at an aggregate level. Through conversion modeling, Google Consent Mode is able to recover up to 70% of reported conversion losses due to user consent choices.
Google Consent Mode adds two new tag settings that help manage advertising and analytics cookies: ad_storage
and analytics_storage
. These tags control the behavior of Google products based on the user consent choices, adjusting the conversion measurement accordingly:
This ensures that the website offers a higher level of data protection without completely losing the ability to track user interactions and campaign performance.
So far, the Google products which support Google Consent Mode are:
As Google specifies, Google Consent Mode isn’t suitable for all advertisers.
Google Ads Consent Mode is specifically designed for advertisers who serve ads to users in the European Economic Area or the UK, and who:
If this is your situation, then enabling Google Consent Mode may be beneficial for you and your business.
But please note: you need to meet a certain threshold for Consent Mode modeling to work. Google defines this threshold as follows:
The click threshold for conversion modeling is 700 ad clicks over 7 days for a domain x country grouping.
Absolutely. Under regulations like the GDPR, users must opt in to the use of non-essential cookies, which include those used for advertising purposes. Google Ads consent is critical as it directly impacts the effectiveness of your advertising efforts. Without proper consent, your ability to track conversions, retarget visitors, and personalize ads is significantly reduced.
Google Ads Consent Mode can help you recover conversion losses, but it doesn’t make your website compliant with privacy laws! You still need to add a cookie consent banner and implement the prior blocking of cookie scripts, as required by privacy laws.
Moreover, Google Consent Mode does not work with scripts that don’t belong to Google. For example, if you’re using the Facebook Pixel, you would need to block it before users give their consent.
There are many ways of prior-blocking cookies and other trackers. For example, you could do it manually. This method requires you to identify the scripts that are subjected to the requirement of prior consent. Then, the scripts must be manually modified, so they can be recognized, stopped, and then released depending on what the user chooses.
A much simpler way is to rely on solutions that allow you to automatically block cookie scripts, without coding. That’s what iubenda’s Autoblocking feature is for!
iubenda is a Google CMP Partner that helps you with cookie consent requirements: create your cookie consent banner, add a cookie policy and automatically block cookie scripts from running before consent. All this from a single dashboard!
iubenda’s CMP is Google-certified and comes with Google Consent Mode support, to help you maximize your ad revenue.
In order for the Google Consent Mode to work properly, you need to implement the correct Google consent setting. This will allow the Google services to behave based on the consent given by the user.
Google Consent Mode requires gtag.js or Google Tag Manager to run. Find out how to set up Google Tag Manager here.
"denied"
. If the consent is granted, the tags will be updated.You can learn more about Google’s consent setting in this guide by Google.
Google Consent Mode can be implemented both manually or through a Consent Management Platform (CMP).
A Consent Management Platform (CMP) is a platform designed to handle users’ consent preferences in a transparent and documented manner. To simplify the implementation of its Consent Mode, Google is partnering closely with a few Google-certified CMPs that are already integrated with Google Consent Mode. iubenda is one of them!
Let’s take a look at how to implement Google Consent Mode with iubenda’s CMP.
By selecting the autoblocking of cookie scripts in the Privacy Controls and Cookie Solution, Google Consent Mode will be automatically enabled and it will run on Google services-related scripts. That’s it!
As a CMP Partner, iubenda is making the support for Google Consent Mode easier for our users. Our Google Tag Manager template is part of this process.
The template is a straightforward way to implement Google Consent Mode on your website, as it requires way less coding than the manual implementation. You just need to add it to your GTM installation, configure the tags, and embed it.
If you’re using the old iubenda Cookie Solution script and relying on manual tagging for prior blocking, you need some extra coding to enable Google Consent Mode.
Let’s use the old Google Analytics script as an example.
The code needs to go from this:
<ol class="linenums"> <li class="L0"><code><span class="com"><!-- Global site tag (gtag.js) - Google Analytics --></span></code></li> <li class="L1"><code><span class="tag"><script><span class="pln"> </span><span class="atn">async</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"</span><span class="tag">></script></span></code></li> <li class="L2"><code><span class="tag"><script></script></span></code></li> <li class="L3"><code><span class="pln"> window</span><span class="pun">.</span><span class="pln">dataLayer </span><span class="pun">=</span><span class="pln"> window</span><span class="pun">.</span><span class="pln">dataLayer </span><span class="pun">||</span><span class="pln"> </span><span class="pun">[];</span></code></li> <li class="L4"><code><span class="pln"> </span><span class="kwd">function</span><span class="pln"> gtag</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span></code></li> <li class="L5"><code><span class="pln"> dataLayer</span><span class="pun">.</span><span class="pln">push</span><span class="pun">(</span><span class="pln">arguments</span><span class="pun">);</span></code></li> <li class="L6"><code><span class="pln"> </span><span class="pun">}</span></code></li> <li class="L7"><code><span class="pln"> gtag</span><span class="pun">(</span><span class="str">'js'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Date</span><span class="pun">());</span></code></li> <li class="L8"><code><span class="pln"> gtag</span><span class="pun">(</span><span class="str">'config'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'GA_MEASUREMENT_ID'</span><span class="pun">);</span></code></li> <li class="L9"><code><span class="tag"></span></code></li> </ol>
To this:
<ol class="linenums"> <li class="L0"><code><span class="tag"><script></script></span></code></li> <li class="L1"><code><span class="pln"> </span><span class="com">// Initialize the data layer for Google Tag Manager (this should mandatorily be done before the Privacy Controls and Cookie Solution is loaded)</span></code></li> <li class="L2"><code><span class="pln"> window</span><span class="pun">.</span><span class="pln">dataLayer </span><span class="pun">=</span><span class="pln"> window</span><span class="pun">.</span><span class="pln">dataLayer </span><span class="pun">||</span><span class="pln"> </span><span class="pun">[];</span></code></li> <li class="L3"><code></code></li> <li class="L4"><code><span class="pln"> </span><span class="kwd">function</span><span class="pln"> gtag</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span></code></li> <li class="L5"><code><span class="pln"> dataLayer</span><span class="pun">.</span><span class="pln">push</span><span class="pun">(</span><span class="pln">arguments</span><span class="pun">);</span></code></li> <li class="L6"><code><span class="pln"> </span><span class="pun">}</span></code></li> <li class="L7"><code></code></li> <li class="L8"><code><span class="pln"> </span><span class="com">// Default consent mode is "denied" for both ads and analytics as well as the optional types, but delay for 2 seconds until the Privacy Controls and Cookie Solution is loaded</span></code></li> <li class="L9"><code><span class="pln"> gtag</span><span class="pun">(</span><span class="str">"consent"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"default"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span></code></li> <li class="L0"><code><span class="pln"> ad_storage</span><span class="pun">:</span><span class="pln"> </span><span class="str">"denied"</span><span class="pun">,</span></code></li> <li class="L1"><code><span class="pln"> analytics_storage</span><span class="pun">:</span><span class="pln"> </span><span class="str">"denied"</span><span class="pun">,</span></code></li> <li class="L2"><code><span class="pln"> functionality_storage</span><span class="pun">:</span><span class="pln"> </span><span class="str">"denied"</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span></code></li> <li class="L3"><code><span class="pln"> personalization_storage</span><span class="pun">:</span><span class="pln"> </span><span class="str">"denied"</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span></code></li> <li class="L4"><code><span class="pln"> security_storage</span><span class="pun">:</span><span class="pln"> </span><span class="str">"denied"</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span></code></li> <li class="L5"><code><span class="pln"> wait_for_update</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2000</span><span class="pln"> </span><span class="com">// milliseconds</span></code></li> <li class="L6"><code><span class="pln"> </span><span class="pun">});</span></code></li> <li class="L7"><code></code></li> <li class="L8"><code><span class="pln"> </span><span class="com">// Improve ad click measurement quality (optional)</span></code></li> <li class="L9"><code><span class="pln"> gtag</span><span class="pun">(</span><span class="str">'set'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'url_passthrough'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span></code></li> <li class="L0"><code></code></li> <li class="L1"><code><span class="pln"> </span><span class="com">// Further redact your ads data (optional)</span></code></li> <li class="L2"><code><span class="pln"> gtag</span><span class="pun">(</span><span class="str">"set"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"ads_data_redaction"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span></code></li> <li class="L3"><code><span class="tag"></span></code></li> <li class="L4"><code></code></li> <li class="L5"><code><span class="pln">// Global site tag (gtag.js) - Google Analytics </span></code></li> <li class="L6"><code><span class="tag"><script><span class="pln"> </span><span class="atn">async</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"</span><span class="tag">></script></span></code></li> <li class="L7"><code><span class="tag"><script></script></span></code></li> <li class="L8"><code><span class="pln"> window</span><span class="pun">.</span><span class="pln">dataLayer </span><span class="pun">=</span><span class="pln"> window</span><span class="pun">.</span><span class="pln">dataLayer </span><span class="pun">||</span><span class="pln"> </span><span class="pun">[];</span></code></li> <li class="L9"><code><span class="pln"> </span><span class="kwd">function</span><span class="pln"> gtag</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span></code></li> <li class="L0"><code><span class="pln"> dataLayer</span><span class="pun">.</span><span class="pln">push</span><span class="pun">(</span><span class="pln">arguments</span><span class="pun">);</span></code></li> <li class="L1"><code><span class="pln"> </span><span class="pun">}</span></code></li> <li class="L2"><code><span class="pln"> gtag</span><span class="pun">(</span><span class="str">'js'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Date</span><span class="pun">());</span></code></li> <li class="L3"><code><span class="pln"> gtag</span><span class="pun">(</span><span class="str">'config'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'GA_MEASUREMENT_ID'</span><span class="pun">);</span><span class="pln"> </span><span class="com">//replace GA_MEASUREMENT_ID with the ID of your Google Analytics property</span></code></li> <li class="L4"><code><span class="tag"></span></code></li> </ol>
Basically, the data layer that forces ad_storage
, analytics_storage
and the other tags to denied needs to be added to your page before the Google service-related script is loaded.
Then you need to add the Privacy Controls and Cookie Solution snippet to the same code:
<ol class="linenums"> <li class="L0"><code><span class="com"><!-- Global site tag (gtag.js) - Google Analytics --></span></code></li> <li class="L1"><code><span class="tag"><script></script></span></code></li> <li class="L2"><code><span class="pln"> </span><span class="com">// Initialize the data layer for Google Tag Manager (this should mandatorily be done before the Privacy Controls and Cookie Solution is loaded)</span></code></li> <li class="L3"><code><span class="pln"> window</span><span class="pun">.</span><span class="pln">dataLayer </span><span class="pun">=</span><span class="pln"> window</span><span class="pun">.</span><span class="pln">dataLayer </span><span class="pun">||</span><span class="pln"> </span><span class="pun">[];</span></code></li> <li class="L4"><code></code></li> <li class="L5"><code><span class="pln"> </span><span class="kwd">function</span><span class="pln"> gtag</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span></code></li> <li class="L6"><code><span class="pln"> dataLayer</span><span class="pun">.</span><span class="pln">push</span><span class="pun">(</span><span class="pln">arguments</span><span class="pun">);</span></code></li> <li class="L7"><code><span class="pln"> </span><span class="pun">}</span></code></li> <li class="L8"><code></code></li> <li class="L9"><code><span class="pln"> </span><span class="com">// Default consent mode is "denied" for both ads and analytics as well as the optional types, but delay for 2 seconds until the Privacy Controls and Cookie Solution is loaded</span></code></li> <li class="L0"><code><span class="pln"> gtag</span><span class="pun">(</span><span class="str">"consent"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"default"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span></code></li> <li class="L1"><code><span class="pln"> ad_storage</span><span class="pun">:</span><span class="pln"> </span><span class="str">"denied"</span><span class="pun">,</span></code></li> <li class="L2"><code><span class="pln"> analytics_storage</span><span class="pun">:</span><span class="pln"> </span><span class="str">"denied"</span><span class="pun">,</span></code></li> <li class="L3"><code><span class="pln"> functionality_storage</span><span class="pun">:</span><span class="pln"> </span><span class="str">"denied"</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span></code></li> <li class="L4"><code><span class="pln"> personalization_storage</span><span class="pun">:</span><span class="pln"> </span><span class="str">"denied"</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span></code></li> <li class="L5"><code><span class="pln"> security_storage</span><span class="pun">:</span><span class="pln"> </span><span class="str">"denied"</span><span class="pun">,</span><span class="pln"> </span><span class="com">// optional</span></code></li> <li class="L6"><code><span class="pln"> wait_for_update</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2000</span><span class="pln"> </span><span class="com">// milliseconds</span></code></li> <li class="L7"><code><span class="pln"> </span><span class="pun">});</span></code></li> <li class="L8"><code></code></li> <li class="L9"><code><span class="pln"> </span><span class="com">// Improve ad click measurement quality (optional)</span></code></li> <li class="L0"><code><span class="pln"> gtag</span><span class="pun">(</span><span class="str">'set'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'url_passthrough'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span></code></li> <li class="L1"><code></code></li> <li class="L2"><code><span class="pln"> </span><span class="com">// Further redact your ads data (optional)</span></code></li> <li class="L3"><code><span class="pln"> gtag</span><span class="pun">(</span><span class="str">"set"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"ads_data_redaction"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span></code></li> <li class="L4"><code><span class="pln"> </span></code></li> <li class="L5"><code><span class="pln"> </span><span class="com">// Google Tag Manager</span></code></li> <li class="L6"><code><span class="pln"> </span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">w</span><span class="pun">,</span><span class="pln"> d</span><span class="pun">,</span><span class="pln"> s</span><span class="pun">,</span><span class="pln"> l</span><span class="pun">,</span><span class="pln"> i</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span></code></li> <li class="L7"><code><span class="pln"> w</span><span class="pun">[</span><span class="pln">l</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> w</span><span class="pun">[</span><span class="pln">l</span><span class="pun">]</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> </span><span class="pun">[];</span></code></li> <li class="L8"><code><span class="pln"> w</span><span class="pun">[</span><span class="pln">l</span><span class="pun">].</span><span class="pln">push</span><span class="pun">({</span></code></li> <li class="L9"><code><span class="pln"> </span><span class="str">'gtm.start'</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Date</span><span class="pun">().</span><span class="pln">getTime</span><span class="pun">(),</span></code></li> <li class="L0"><code><span class="pln"> event</span><span class="pun">:</span><span class="pln"> </span><span class="str">'gtm.js'</span></code></li> <li class="L1"><code><span class="pln"> </span><span class="pun">});</span></code></li> <li class="L2"><code><span class="pln"> </span><span class="kwd">var</span><span class="pln"> f </span><span class="pun">=</span><span class="pln"> d</span><span class="pun">.</span><span class="pln">getElementsByTagName</span><span class="pun">(</span><span class="pln">s</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">],</span></code></li> <li class="L3"><code><span class="pln"> j </span><span class="pun">=</span><span class="pln"> d</span><span class="pun">.</span><span class="pln">createElement</span><span class="pun">(</span><span class="pln">s</span><span class="pun">),</span></code></li> <li class="L4"><code><span class="pln"> dl </span><span class="pun">=</span><span class="pln"> l </span><span class="pun">!=</span><span class="pln"> </span><span class="str">'dataLayer'</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">'&l='</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> l </span><span class="pun">:</span><span class="pln"> </span><span class="str">''</span><span class="pun">;</span></code></li> <li class="L5"><code><span class="pln"> j</span><span class="pun">.</span><span class="kwd">async</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span></code></li> <li class="L6"><code><span class="pln"> j</span><span class="pun">.</span><span class="pln">src </span><span class="pun">=</span></code></li> <li class="L7"><code><span class="pln"> </span><span class="str">'https://www.googletagmanager.com/gtm.js?id='</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> i </span><span class="pun">+</span><span class="pln"> dl</span><span class="pun">;</span></code></li> <li class="L8"><code><span class="pln"> f</span><span class="pun">.</span><span class="pln">parentNode</span><span class="pun">.</span><span class="pln">insertBefore</span><span class="pun">(</span><span class="pln">j</span><span class="pun">,</span><span class="pln"> f</span><span class="pun">);</span></code></li> <li class="L9"><code><span class="pln"> </span><span class="pun">})(</span><span class="pln">window</span><span class="pun">,</span><span class="pln"> document</span><span class="pun">,</span><span class="pln"> </span><span class="str">'script'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'dataLayer'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'GTM-XXXXXX'</span><span class="pun">);</span><span class="pln"> </span><span class="com">//replace GTM-XXXXXX with the ID of your Google Analytics property</span></code></li> <li class="L0"><code><span class="tag"></span></code></li> <li class="L1"><code></code></li> <li class="L2"><code><span class="com"><!-- iubenda Privacy Controls and Cookie Solution --></span></code></li> <li class="L3"><code><span class="tag"><script></script></span><span class="pln"> </span></code></li> <li class="L4"><code><span class="pln"> </span><span class="kwd">var</span><span class="pln"> _iub </span><span class="pun">=</span><span class="pln"> _iub </span><span class="pun">||</span><span class="pln"> </span><span class="pun">[];</span></code></li> <li class="L5"><code><span class="pln"> </span></code></li> <li class="L6"><code><span class="pln"> _iub</span><span class="pun">.</span><span class="pln">csConfiguration </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span></code></li> <li class="L7"><code><span class="pln"> lang</span><span class="pun">:</span><span class="pln"> </span><span class="str">"en"</span><span class="pun">,</span></code></li> <li class="L8"><code><span class="pln"> siteId</span><span class="pun">:</span><span class="pln"> </span><span class="lit">12345678</span><span class="pun">,</span><span class="pln"> </span><span class="com">//use your siteId</span></code></li> <li class="L9"><code><span class="pln"> cookiePolicyId</span><span class="pun">:</span><span class="pln"> </span><span class="lit">12345678</span><span class="pun">,</span><span class="pln"> </span><span class="com">//use your cookiePolicyId</span></code></li> <li class="L0"><code><span class="pln"> countryDetection</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span></code></li> <li class="L1"><code><span class="pln"> perPurposeConsent</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span></code></li> <li class="L2"><code><span class="pln"> purposes</span><span class="pun">:</span><span class="pln"> </span><span class="str">"1,4,5"</span><span class="pun">,</span></code></li> <li class="L3"><code><span class="pln"> consentOnContinuedBrowsing</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span></code></li> <li class="L4"><code><span class="pln"> banner</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span></code></li> <li class="L5"><code><span class="pln"> position</span><span class="pun">:</span><span class="pln"> </span><span class="str">"float-top-center"</span><span class="pun">,</span></code></li> <li class="L6"><code><span class="pln"> acceptButtonDisplay</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span></code></li> <li class="L7"><code><span class="pln"> customizeButtonDisplay</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span></code></li> <li class="L8"><code><span class="pln"> rejectButtonDisplay</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span></code></li> <li class="L9"><code><span class="pln"> </span><span class="pun">}</span></code></li> <li class="L0"><code><span class="pln"> </span><span class="pun">};</span></code></li> <li class="L1"><code><span class="tag"></span></code></li> <li class="L2"><code><span class="tag"><script><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.iubenda.com/cs/iubenda_cs.js"</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"UTF-8"</span><span class="pln"> </span><span class="atn">async</span><span class="tag">></script></span></code></li> </ol>
Find more detailed instructions in our step-by-step guide.
If your Site Scanner shows an “Attention Required” alert, or you encounter issues with Google Consent Mode, a misconfiguration likely needs fixing. Here are some common reasons why:
Problem:
Your website is using an old version of the iubenda snippet. This outdated snippet doesn’t support important features like autoblocking or managing user consent with Google Consent Mode. Your website might also be missing the required dataLayer
configuration. (The dataLayer
sends user consent choices to Google, and without it, your tags may not work correctly.)
💡 How to fix it:
Re-embed the updated code snippet on your site to ensure proper functionality.
Problem:
The iubenda snippet might be placed incorrectly, such as after Google’s script, causing Google Consent Mode to not function as expected.
💡 How to fix it:
Ensure the Iubenda snippet is positioned correctly in the code—ideally, for example, before any Google-related scripts.
Correct placement:
- <!-- iubenda snippet placed before Google script -->
- <script src="https://embeds.iubenda.com/widgets/[site-code].js"></script>
- <!-- Google script -->
- <script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXX-X"></script>
This ensures that the iubenda Consent Mode activates first and properly manages user consent before other scripts load.
According to Google, from January 2024, if you do not use a Google-certified CMP integrated with the Transparency and Consent Framework, your ads will not be served to EEA and UK traffic.
Are you looking for a trusted ally in your digital advertising journey? iubenda’s got your back!
Our Google-certified CMP simplifies the consent practices, offering a simple integration with both Google Ads Consent Mode and IAB’s Transparency and Consent Framework. Our CMP empowers you to stay on the right side of the law while maximizing your ad performance.