01Two blocks, in this order
The first block sets Google Consent Mode to denied before anything loads — so if our tag ever cannot be fetched, your Google tags stay off rather than firing as if no banner existed.
It protects Google tags only. Meta, TikTok and other tags read no Consent Mode signal; our tag blocks those itself.
<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>
<script async src="https://cdn.cmpstack.io/cmpstack.js" data-site="YOUR-SITE-ID" data-api="https://api.cmpstack.io"></script>YOUR-SITE-IDstands for your domain’s Site ID. The panel shows this same snippet with the ID already filled in, under Domains → Install tag, so copy it from there rather than from here. The Site ID identifies the domain; it does not authenticate anything and is safe to publish.
The tag is the loader: 4,085 bytes gzipped, on every page view. The banner itself is fetched only when there is a question to ask.
02Then verify and publish
A tag on a page is not a banner yet. Nothing is shown until a banner has been published for the domain, and the tag shows nothing rather than a default banner in the meantime. Verifying the domain proves it is yours and is what lets us scan it. The last step of every route below is those two things.
03Choose your route
| Route | What you do |
|---|---|
| Paste the snippet | Paste this into the <head> of every page you want the banner on. |
| WordPress | Upload the plugin, then paste the Site ID into its settings. No code. |
| Google Tag Manager | Our Tag Manager template, with the Site ID, fired on Consent Initialization. No code. |
| Shopify | Paste this into theme.liquid, inside <head>, as high as you can. |
| Wix | Paste this under Settings → Custom Code, in the head, on all pages. |