Cookiebot CMP
Guide technique complet : Consent Management Platform. Configuration dashboard, bridge Shopify Privacy API, Consent Mode v2, cookie declaration, verification RGPD.
1Role / Objectif
Ce setup permet :
- Conformite RGPD / ePrivacy pour les visiteurs EU
- Consent Mode v2 avec defaults Denied
- Controle granulaire par categorie (analytics, marketing, preferences)
- Synchronisation consent vers toutes les destinations (GTM, Shopify Privacy API)
- Aucun tracking marketing sans consentement explicite
Le consentement est gere entierement par Cookiebot dans GTM. Le theme Shopify n'a aucun role dans le consent tracking GTM.
2Architecture Consent
Flux complet du consentement
Addingwell injecte GTM
↓
GTM charge Cookiebot (Consent Initialization)
↓
Cookiebot affiche la banniere
↓
Utilisateur donne / refuse son consent
↓
Consent Mode v2 update (ad_storage, analytics_storage...)
↓
Tags GTM fires selon le consent
↓
Bridge → Shopify Privacy API (web/custom pixels)Chaine d'integration
- 1Addingwell injecte GTM sur toutes les pages du store
- 2GTM charge le tag Cookiebot CMP sur le trigger Consent Initialization (avant tout tracking)
- 3Cookiebot affiche le banner, collecte le consent, et active le Consent Mode v2
- 4GTM autorise ou bloque les tags (GA4, Meta, Google Ads, etc.) selon le consent
Principes fondamentaux
- Cookiebot est le seul CMP — pas de double banniere
- Consent defaults a Denied pour toutes les categories
- Les tags GTM attendent le consent update avant de fire
- Le bridge synchronise le consent vers Shopify pour les pixels
- La banniere Shopify native doit etre desactivee
- Cookiebot est charge via GTM (Addingwell) — pas de script dans le theme
- Pas besoin de l'app Shopify Cookiebot ni de l'integration Shopify dans le dashboard Cookiebot
3Configuration Dashboard
Creer le compte Cookiebot
- 1S'inscrire sur cookiebot.com
- 2Ajouter le domaine du store
- 3Recuperer le Domain Group ID (CBID) : Cookiebot > Settings > Domain Group
- 4Noter le CBID — il sera utilise dans le tag GTM
Cookiebot sera charge via GTM client-side (Addingwell). Pas besoin de l'app Shopify Cookiebot ni de l'integration Shopify dans le dashboard Cookiebot.
Configuration dashboard (cookiebot.com)
| Parametre | Configuration |
|---|---|
| Domaines | Ajouter le domaine principal du store (mon-store.com). Pas besoin du .myshopify.com. Aucune configuration DNS requise. |
| Scan automatique | Activer dans Cookiebot > Domains > Scan. Frequence : mensuel. Le premier scan detecte automatiquement tous les cookies. |
| Langue | Regler la langue principale sur Francais dans Settings > Languages. Si store international, ajouter les langues secondaires. |
| Categories | 4 categories standard (Necessaire, Statistiques, Marketing, Preferences). Classement automatique apres le scan. |
Configuration banner (Cookiebot > Banner)
Le banner consent s'affiche sur toutes les pages a la premiere visite. Il est charge par GTM via le tag Cookiebot CMP — pas de script dans le theme.
| Parametre | Valeur |
|---|---|
| Banner Layout | Dialog |
| Style effect | Overlay |
| Button styles | Solid |
| Logo | Display logo on banner |
| Couleurs | Adapter a la charte graphique du store |
| Default language | French |
| Texte du banner | Valeur |
|---|---|
| Dialog heading | Ce site web utilise des cookies. |
| Decline button | Refuser |
| Accept button | Tout autoriser |
| Customize button | Personnaliser |
| Allow selection | Autoriser la selection |
| Show details | Afficher les details |
| Hide details | Masquer les details |
RGPD — Refuser aussi simple qu'accepter
Le RGPD exige que refuser soit aussi simple qu'accepter — meme taille, meme niveau de bouton (Solid). Les textes des categories (Necessaires, Statistiques, Preferences, Marketing) sont pre-remplis en francais par Cookiebot.
Privacy Trigger
Le Privacy Trigger est le petit bouton flottant permettant de modifier son consent. Le desactiver (OFF) car la gestion du consent est accessible via la page /pages/politique-de-cookies et le lien dans le footer.
Important
Si le Privacy Trigger est OFF, la page Politique de cookies avec le script CookieDeclaration et le lien dans le footer sont obligatoires pour rester conforme.
Declaration
| Parametre | Valeur |
|---|---|
| Template | Default |
| Show dialog text on cookie declaration | ON |
4Bridge Consent (Shopify Privacy API)
Obligatoire
Ce bridge synchronise Cookiebot → Shopify Customer Privacy API. Il controle quels web pixels et custom pixels Shopify sont autorises a fire selon le consent. Sans ce bridge, les apps tierces (Klaviyo, etc.) qui utilisent les web pixels Shopify ne respectent pas le consentement RGPD.
Il n'affecte pas le tracking GTM (GA4, Meta, Google Ads, etc.) — celui-ci est gere par le Consent Mode v2. Il ne modifie pas non plus le comptage de sessions/visiteurs du dashboard Shopify (first-party, independant du consent).
Pourquoi un bridge ?
Cookiebot gere le consent pour GTM. Mais les web pixels et custom pixels Shopify utilisent la Shopify Customer Privacy API. Le bridge synchronise les deux.
Fonctionnement
Cookiebot consent update
↓
Event CookiebotOnConsentReady
↓
Bridge lit Cookiebot.consent.marketing
↓
Shopify.customerPrivacy.setTrackingConsent({
marketing: true/false
})
↓
Web pixels Shopify fires / bloquesEtape 1 — Creer le snippet
Creer un snippet cookie-consent_boostecom.liquid et coller le code suivant :
<script>
/**
* Cookiebot → Shopify Customer Privacy Sync (EU/US, Prod)
*
* - Charge l'API Shopify "consent-tracking-api"
* - Deny-by-default tant que Cookiebot n'a pas fourni le consentement
* - Sync Cookiebot → Shopify sur chaque événement (ready/accept/decline)
* - Retry loop pour gérer le chargement asynchrone
*/
(function () {
"use strict";
var CONSENT_PROFILE = "EU"; // "EU" or "US"
var CFG = {
defaultConsent: {
analytics: false,
marketing: false,
preferences: false,
sale_of_data: false
},
retry: { intervalMs: 1000, maxTries: 60 }
};
function hasCookiebot() {
return !!(window.Cookiebot && Cookiebot.consent);
}
function safeSetShopifyConsent(consentObj) {
try {
if (!window.Shopify || !Shopify.customerPrivacy) return false;
Shopify.customerPrivacy.setTrackingConsent(consentObj);
return true;
} catch (e) { return false; }
}
function mapCookiebotToShopify() {
var C = Cookiebot.consent;
return {
analytics: !!C.statistics,
marketing: !!C.marketing,
preferences: !!C.preferences,
sale_of_data: false
};
}
function initShopifyConsentApi() {
try {
if (!window.Shopify || typeof Shopify.loadFeatures !== "function") return;
Shopify.loadFeatures(
[{ name: "consent-tracking-api", version: "0.1" }],
function () { safeSetShopifyConsent(CFG.defaultConsent); }
);
} catch (e) {}
}
function syncFromCookiebot() {
try {
if (!hasCookiebot()) return false;
if (!window.Shopify || !Shopify.customerPrivacy) return false;
return safeSetShopifyConsent(mapCookiebotToShopify());
} catch (e) { return false; }
}
function attachCookiebotListeners() {
try {
window.addEventListener("CookiebotOnConsentReady", syncFromCookiebot);
window.addEventListener("CookiebotOnAccept", syncFromCookiebot);
window.addEventListener("CookiebotOnDecline", syncFromCookiebot);
} catch (e) {}
}
function startRetryLoop() {
var tries = 0;
var t = setInterval(function () {
tries += 1;
var ok = syncFromCookiebot();
if (ok || tries >= CFG.retry.maxTries) clearInterval(t);
}, CFG.retry.intervalMs);
}
initShopifyConsentApi();
attachCookiebotListeners();
startRetryLoop();
void CONSENT_PROFILE;
})();
</script>Etape 2 — Render dans theme.liquid
Dans theme.liquid, ajouter apres {{ content_for_header }} :
{% render 'cookie-consent_boostecom' %}Details techniques
- Utilise Shopify.loadFeatures([{ name: "consent-tracking-api", version: "0.1" }])
- Ecoute CookiebotOnConsentReady, CookiebotOnAccept, CookiebotOnDecline
- Mappe Cookiebot.consent.statistics → analytics, Cookiebot.consent.marketing → marketing
- sale_of_data toujours a false (pas de vente de donnees)
- Retry loop 1000ms, max 60 tentatives pour gerer le chargement async
- Defaults a deny-by-default tant que Cookiebot n'a pas fourni le consentement
Ne pas ajouter dans le theme
Ne pas coller le script Cookiebot dans le theme — il est charge via GTM (Addingwell). Ne pas coller le script GTM dans le theme — il est injecte automatiquement par Addingwell.
5Cookie Declaration Page
Le RGPD exige une page dediee "Politique de cookies" listant les cookies utilises. Cette page est separee de la politique de confidentialite — ce sont deux obligations legales distinctes (traitement des donnees vs stockage de traceurs).
Etape 1 — Creer la page dans Shopify
- Contenu > Pages > Ajouter une page
- Titre : Politique de cookies
- URL handle : /pages/politique-de-cookies
Etape 2 — Coller le contenu (texte + script)
Dans l'editeur Shopify, passer en mode HTML (</>) et coller le contenu suivant. Le texte est conforme CNIL, le script Cookiebot en bas affiche automatiquement la liste des cookies :
<p>La présente politique de cookies explique comment notre site utilise des cookies et autres traceurs lorsque vous le consultez.</p> <h2>1. Qu'est-ce qu'un cookie ?</h2> <p>Un cookie est un petit fichier texte déposé et lu lors de la consultation d'un site internet, quel que soit le type de terminal utilisé (ordinateur, smartphone, tablette). Les cookies permettent notamment d'assurer le bon fonctionnement du site, d'améliorer votre expérience utilisateur, de mesurer l'audience et, avec votre consentement, de vous proposer des contenus et publicités personnalisés.</p> <h2>2. Quels types de cookies utilisons-nous ?</h2> <h3>Cookies strictement nécessaires</h3> <p>Ces cookies sont indispensables au bon fonctionnement du site et ne peuvent pas être désactivés. Ils permettent par exemple de mémoriser le contenu de votre panier ou d'assurer la sécurité du site.</p> <h3>Cookies de mesure d'audience</h3> <p>Ces cookies nous permettent d'analyser la fréquentation et l'utilisation du site afin d'en améliorer les performances.</p> <h3>Cookies marketing</h3> <p>Ces cookies peuvent être utilisés pour vous proposer des publicités adaptées à vos centres d'intérêt sur notre site ou sur des sites tiers.</p> <h3>Cookies de personnalisation</h3> <p>Ces cookies permettent d'améliorer et de personnaliser les fonctionnalités du site.</p> <h2>3. Base légale</h2> <p>Les cookies strictement nécessaires sont déposés sur la base de notre intérêt légitime à assurer le bon fonctionnement du site. Les autres cookies (mesure d'audience, marketing, personnalisation) sont déposés uniquement après obtention de votre consentement.</p> <h2>4. Gestion de vos préférences</h2> <p>Lors de votre première visite sur notre site, un bandeau vous informe de l'utilisation de cookies et vous permet d'accepter, de refuser ou de paramétrer leur utilisation.</p> <p>Vous pouvez modifier ou retirer votre consentement à tout moment en cliquant sur le lien prévu à cet effet ou en reconfigurant vos préférences via notre outil de gestion des cookies.</p> <h2>5. Durée de conservation</h2> <p>Les cookies sont conservés pour une durée maximale de 13 mois conformément aux recommandations de la CNIL.</p> <h2>6. Cookies déposés sur le site</h2> <p>La liste détaillée et mise à jour des cookies utilisés sur notre site figure ci-dessous :</p> <!-- Cookiebot Declaration --> <script id="CookieDeclaration" src="https://consent.cookiebot.com/VOTRE-CBID/cd.js" type="text/javascript" async></script>
Remplacer VOTRE-CBID par votre Domain Group ID Cookiebot dans l'URL du script CookieDeclaration.
Etape 3 — Ajouter le lien dans le footer
La page doit etre accessible depuis le footer (a cote des autres politiques legales) et depuis le lien dans le banner consent Cookiebot. Sans lien visible = non conforme CNIL.
Ne pas fusionner
Ne pas fusionner avec la politique de confidentialite. Ne pas publier une page vide (script seul sans texte). Ne pas mettre dans la page Shopify "Data sharing".
6Categories de Consent
Categories de consent Google
| Signal Google | Default | Description |
|---|---|---|
| ad_storage | Denied | Cookies publicitaires (Google Ads, Meta, etc.) |
| analytics_storage | Denied | Cookies analytics (GA4) |
| ad_user_data | Denied | Envoi de donnees utilisateur aux plateformes ads |
| ad_personalization | Denied | Personalisation des annonces (remarketing) |
| functionality_storage | Denied | Preferences utilisateur |
| personalization_storage | Denied | Preferences utilisateur |
Mapping Cookiebot → Consent Mode
| Cookiebot | Consent Mode | Impact |
|---|---|---|
| Marketing | ad_storage + ad_user_data + ad_personalization | Meta, Google Ads |
| Statistics | analytics_storage | GA4 full tracking |
| Preferences | functionality_storage + personalization_storage | Preferences utilisateur |
| Necessary | Toujours granted | Cookies techniques essentiels |
Consent par destination
| Destination | Signals requis | Categorie Cookiebot |
|---|---|---|
| GA4 | analytics_storage | Statistics |
| Meta CAPI | ad_storage, ad_user_data | Marketing |
| Google Ads | ad_storage, ad_user_data | Marketing |
| Klaviyo | ad_storage | Marketing |
| Cookiebot CMP | Aucun (doit fire sans consent) | Necessary |
Advanced Consent Mode
Google utilise le Advanced Consent Mode : meme sans consent, GA4 envoie des pings anonymises (sans cookies). Cela alimente les conversions modelisees Google Ads.
7Regions Shopify
Shopify propose une banniere cookies native (Settings > Customer Privacy). Elle doit etre desactivee car le consent est gere par Cookiebot via GTM.
Configuration des regions
| Parametre | Valeur |
|---|---|
| Custom banner regions | EEA + UK |
| Banniere native Shopify | OFF (aucune region cochee) |
| Page "data sale opt-out" | OFF |
Le toggle EEA + UK dans Cookiebot (Add Geo Regions) garantit que la banniere s'affiche uniquement pour les visiteurs europeens et britanniques. Les visiteurs hors de ces zones ne voient pas de banniere (consent implicite).
Obligatoire — Desactiver la banniere Shopify
La banniere cookies et la page d'opposition Shopify doivent etre desactivees (aucune region cochee) pour eviter les conflits avec Cookiebot.
Comment desactiver
- 1Admin Shopify → Settings → Customer Privacy
- 2Section "Banniere concernant les cookies" → decocher toutes les regions, "Utiliser les parametres automatises" OFF
- 3Section "Page d'opposition au partage de donnees" → decocher toutes les regions, "Utiliser les parametres automatises" OFF
- 4Sauvegarder
Autres parametres Shopify
- Politique de confidentialite — peut rester "Automatisee". C'est du contenu legal, pas du tracking. Elle n'interfere pas avec Cookiebot.
- Hebergement des donnees — verifier que "Union europeenne" est selectionne (coherent avec CDS Region .eu dans Cookiebot).
Impact de la desactivation
| Element | Impact |
|---|---|
| Sessions / visiteurs dashboard | Aucun impact (first-party _shopify_y / _shopify_s) |
| Commandes / revenus | Aucun impact (server-side Shopify) |
| Web / custom pixels | Controles par le bridge Cookiebot → Privacy API |
| _tracking_consent | Deprecie depuis sept 2025 |
| _landing_page / _orig_referrer | Deprecies depuis sept 2025 |
8Consent Mode v2
Le Consent Mode v2 (default denied) est configure dans le tag Cookiebot CMP - Declaration de GTM. Le CBID est renseigne directement dans le champ Cookiebot ID du tag (pas dans une variable separee). Ce tag est deja inclus dans le container BoostEcom importe.
Configuration du tag Cookiebot CMP
| Parametre | Valeur |
|---|---|
| Cookiebot ID | Votre CBID |
| Language | Default (auto-detect) |
| CDS Region | .eu (donnees dans l'UE — RGPD) |
| Add Geo Region(s) | EEA + UK (banniere uniquement pour ces regions) |
| Enable Google Consent Mode | ON |
| Enable IAB TCF | OFF |
Consent Mode Settings
| Parametre | Valeur |
|---|---|
| Wait for update | 2000 ms |
| Redact ads data | Dynamic (match ad_storage) |
| Enable URL passthrough | OFF |
| Advertiser Consent Mode | ON |
Default Consent State (tous a Denied)
| Consent type | Default |
|---|---|
| Preferences (functionality_storage + personalization_storage) | Denied |
| Statistics (analytics_storage) | Denied |
| Marketing (ad_storage) | Denied |
| Marketing (ad_user_data) | Denied |
| Marketing (ad_personalization) | Denied |
Consent requis par les tags
Chaque tag du container est configure avec les consent types requis. GTM bloque automatiquement le tag tant que le visiteur n'a pas consenti :
| Tag | Consent requis |
|---|---|
| GA4 - Config + Events | ad_storage, analytics_storage, ad_personalization |
| Facebook Pixel | ad_storage, ad_personalization |
| Cookiebot CMP | Aucun (doit fire sans consent) |
| Google Ads, autres destinations | Configures selon la destination |
Ne pas ajouter ces scripts
Ne pas ajouter le script Consent Mode (gtag('consent', 'default', ...)) dans le theme — le tag Cookiebot CMP dans GTM le gere.
Ne pas ajouter le script banner (uc.js) dans le theme — le banner est charge via GTM (Addingwell). Un double chargement cause des conflits.
9Configuration dans GTM
Tag Cookiebot CMP
- Template officiel Cookiebot depuis la Community Gallery GTM
- Trigger : Consent Initialization — All Pages
- Cookiebot Banner ID (CBID) configure dans le champ Cookiebot ID du tag
- Mode : Auto-blocking activee
Ordre de chargement
1. Consent Initialization (priorite max) └── Cookiebot CMP → defaults Denied 2. Consent Update (utilisateur accepte/refuse) └── Cookiebot envoie consent_update 3. Tags marketing (attendent ad_storage = Granted) └── Meta, Google Ads, etc. 4. Tags analytics (attendent analytics_storage = Granted) └── GA4 full tracking
Declenchement
Le trigger Consent Initialization - All Pages s'execute avant tous les autres triggers GTM, garantissant que les defaults Denied sont en place avant tout tracking.
Important
Le tag Cookiebot doit etre en Consent Initialization, pas en All Pages. Sinon les defaults Denied ne sont pas actifs avant le premier tag.
10Verification
Verifier Consent Mode v2
- 1Ouvrir la console navigateur
- 2Taper dataLayer et chercher consent_default
- 3Verifier que tous les signaux sont "denied" par defaut
- 4Accepter le consent via la banniere Cookiebot
- 5Verifier consent_update avec les signaux "granted"
Verifier le bridge Shopify
- 1Ouvrir la console navigateur
- 2Taper Shopify.customerPrivacy.getTrackingConsent()
- 3Avant consent : marketing doit etre "no_interaction"
- 4Apres acceptation : marketing doit etre "yes"
- 5Apres refus : marketing doit etre "no"
Verifier les tags GTM
- Utiliser GTM Preview Mode
- Avant consent : seul Cookiebot et GA4 Config fires
- Apres consent marketing : Meta, Google Ads fires
- Apres consent analytics : GA4 full tracking fires
Test pre-consent (navigation privee)
- 1Ouvrir le site en navigation privee
- 2Cliquer "Tout refuser" dans la banniere Cookiebot
- 3GTM Preview : verifier que seuls les tags Necessary se declenchent
- 4Network : aucune requete vers GA4, Meta, Google Ads
Test post-consent
- 1Ouvrir le site en navigation privee
- 2Cliquer "Tout accepter" dans la banniere
- 3GTM Preview : tags analytics et marketing doivent se declencher
- 4GA4 DebugView : events visibles en temps reel
Phase 2 — Fondations GTM + Consent
Cette checklist correspond a la Phase 2 du setup complet. Verifier chaque point apres l'import des containers GTM :
- GTM Web container charge via Addingwell (non via snippet direct)
- Tag Cookiebot CMP actif dans GTM avec defaults a Denied
- Cookiebot CMP se declenche sur Consent Initialization (avant les autres tags)
- Option "Tout refuser" disponible dans la banniere
- Bridge Cookiebot → Shopify Privacy API installe (cookie-consent_boostecom.liquid) — obligatoire
- DataLayer Monitor custom pixel actif dans Customer Events (?awdebug=1 pour debug)
- Regions Shopify : banniere native OFF, custom banner regions EEA + UK
11Troubleshooting
Verifier :
- 1CBID correct dans le tag Cookiebot CMP (GTM)
- 2Tag Cookiebot en Consent Initialization (pas All Pages)
- 3GTM bien injecte par Addingwell
- 4Pas de conflit avec banniere Shopify native
- 5Geo Regions correctement configurees (EEA + UK)
Verifier :
- Consent defaults bien configures dans le tag Cookiebot
- Tags marketing conditionnes au Built-in Consent (pas juste un trigger)
- Pas de tag avec "No additional consent required"
- Wait for update regle a 2000 ms
Verifier :
- Snippet cookie-consent_boostecom.liquid present dans theme.liquid
- Shopify.customerPrivacy disponible (loadFeatures ok)
- Event CookiebotOnConsentReady fire apres le consent
- Console pour erreurs JS
- Retry loop active (max 60 tentatives, 1s intervalle)
Verifier :
- Banniere Shopify native encore activee (Settings → Customer Privacy)
- Autre app consent installee en parallele
- Decocher toutes les regions dans la banniere Shopify
- Script banner Cookiebot (uc.js) ajoute manuellement dans le theme en plus de GTM
Verifier :
- CBID correct dans l'URL du script CookieDeclaration
- Page creee en mode HTML (pas en editeur visuel)
- Script id="CookieDeclaration" present en bas du contenu
- Scan Cookiebot effectue au moins une fois
12Checklist Consent
Verifier apres chaque mise en production :