Instructions for Loading Consent Management Platform (CMP)
Cookienovo uses a two-part installation to ensure Google Consent Mode v2 defaults are set before any Google tags fire. This follows the same industry-standard approach as Cookiebot, CookieHub, and other leading CMPs.
Part 1: Inline Consent Defaults (Required)
The first script sets Google Consent Mode v2 defaults synchronously before any Google tags can fire. This small inline script (~300 bytes) ensures all consent types default to 'denied' (except security_storage).
<!-- CookieNovo: Step 1 - Set Google Consent Mode v2 defaults -->
<script>
window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}
gtag('consent','default',{'ad_storage':'denied','ad_personalization':'denied','ad_user_data':'denied','analytics_storage':'denied','functionality_storage':'denied','personalization_storage':'denied','security_storage':'granted','wait_for_update':500});
gtag('set','ads_data_redaction',true);
</script>
Part 2: Cookienovo Banner Script (Supports defer/async)
The second script loads the Cookienovo banner. This script can safely use the defer or async attribute for better performance without compromising compliance.
<!-- CookieNovo: Step 2 - Load banner -->
<script site-token="YOUR_TOKEN" src="https://cookienovo.com/assets/client.js" defer></script>
⚠️ Critical: Script Order
Both Cookienovo scripts must be placed in the <head> section BEFORE any Google tags (Google Analytics, Google Tag Manager, Google Ads, etc.). The inline consent defaults script ensures that even if Google tags load asynchronously, consent defaults are already set.
- Delay Google Tags Until Consent is Processed: Ensure Google tags (e.g., Google Analytics, Ads, or Tag Manager) are configured to wait for the CMP’s consent signals. This can be achieved by: Setting up Google Tag Manager to trigger only after receiving consent status or Using Google’s tag settings to defer loading until the CMP signals are available.
- Test and Verify Implementation: After implementation, test your setup to confirm that CMP and consent commands/stubs load before any Google tags. Also test Google tags respect user consent preferences and only fire accordingly.
Website builders (Creativesites and similar platforms)
On hosted website builders such as Creativesites you usually cannot edit the page <head> directly. Instead, paste both snippets above (Step 1 and Step 2) into the platform's custom code in the header / <head> field. Place this custom code before the builder's built-in Google Analytics or Google Tag Manager integration — the header field renders at the top of <head>, so the consent defaults run first automatically.
Tags loaded through the builder's native Google integration (Analytics, Ads, Tag Manager) need no extra work: once the consent defaults load first, those tags respect Consent Mode on their own.
For custom marketing tags that Google does not manage (for example the Facebook / Meta Pixel), gate them behind the CookienovoUserConsentChanged event so they only fire after the visitor accepts. Match the category by name (not by array position) so it keeps working even if categories are reordered, and also read the consent cookie so it covers returning visitors who already chose on a previous visit:
<script>
(function () {
var loaded = false;
function cnAllowed(category) {
return ("; " + document.cookie).indexOf("; cn-category-" + category + "=1") > -1;
}
function loadMarketing() {
if (loaded || !cnAllowed("marketing")) return;
loaded = true;
// load your Facebook / Meta Pixel here
}
["CookienovoUserConsentChanged", "DOMContentLoaded"].forEach(function (evt) {
document.addEventListener(evt, loadMarketing);
});
})();
</script>
For further assistance, contact us [email protected]