Consent Mode v2 & CMP Sirdata
Le Consent Mode v2 est le langage commun entre votre CMP et les tags Google : il indique à chaque tag ce que l'utilisateur a accepté. Depuis mars 2024, les signaux ad_user_data et ad_personalization sont obligatoires pour la publicité dans l'EEE.
Les signaux du Consent Mode
| Signal | Contrôle | Obligatoire v2 |
|---|---|---|
ad_storage | Cookies publicitaires (ex. cookie de clic gclid) | — |
analytics_storage | Cookies analytics (GA4 : _ga) | — |
ad_user_data | Envoi de données utilisateur à Google Ads | ✅ |
ad_personalization | Publicité personnalisée / remarketing | ✅ |
functionality_storage | Cookies fonctionnels (langue, préférences) | — |
personalization_storage | Personnalisation de contenu (reco, vidéos) | — |
security_storage | Sécurité (anti-fraude, authentification) | — |
Étape 1 — Installer la CMP Sirdata (ABconsent)
Créer la configuration
Depuis votre console Sirdata CMP, créez la configuration du site : design de la bannière, finalités TCF v2.2, vendors, langues. La CMP est certifiée Google CMP Partner : le Consent Mode v2 est géré nativement, sans code supplémentaire.
Poser le script
Intégrez le script CMP le plus haut possible dans le <head>, avant GTM et tout autre tag :
<!-- CMP Sirdata / ABconsent : toujours AVANT GTM -->
<script type="text/javascript"
src="https://cache.consentframework.com/js/pa/12345/c/abcde/stub"
referrerpolicy="unsafe-url"
charset="utf-8"></script>
<!-- Puis le snippet GTM web habituel -->
Étape 2 — Consent default
Avant toute interaction utilisateur, un état par défaut doit être défini — denied pour tout ce qui est traceur dans l'EEE. La CMP Sirdata le fait automatiquement ; voici l'équivalent gtag pour comprendre ce qui se passe sous le capot :
window.dataLayer = window.dataLayer || [];
function gtag(){ dataLayer.push(arguments); }
gtag('consent', 'default', {
ad_storage: 'denied',
analytics_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
functionality_storage: 'denied',
personalization_storage: 'denied',
security_storage: 'granted',
wait_for_update: 500, // laisse 500 ms à la CMP pour restaurer un choix existant
region: ['FR', 'BE', 'DE', 'ES', 'IT'] // optionnel : cibler certains pays
});
// Recommandé avec le consent mode :
gtag('set', 'ads_data_redaction', true); // supprime les identifiants pubs si ad_storage=denied
gtag('set', 'url_passthrough', true); // fait suivre gclid/dclid via l'URL sans cookie
Étape 3 — Consent update
Quand l'utilisateur fait son choix dans la bannière, la CMP pousse un update :
gtag('consent', 'update', {
ad_storage: 'granted',
analytics_storage: 'granted',
ad_user_data: 'granted',
ad_personalization: 'granted',
functionality_storage: 'granted',
personalization_storage: 'granted'
});
gtag('consent', 'update', {
ad_storage: 'denied',
analytics_storage: 'granted',
ad_user_data: 'denied',
ad_personalization: 'denied'
});
🧪 À rejouer en démo : le playground affiche l'état des 7 signaux en temps réel et permet de simuler default, accept all, refuse all et choix partiels.
Ouvrir le playgroundÉtape 4 — Comportement des tags
Deux modes d'implémentation possibles :
| Mode | Fonctionnement | Effet si denied |
|---|---|---|
| Advanced (par défaut) | Les tags Google se chargent toujours et adaptent leur comportement aux signaux | Pings anonymes sans cookies (« cookieless pings »), permettant la modélisation des conversions |
| Basic | Les tags sont bloqués tant que le consentement n'est pas accordé (déclencheurs conditionnés) | Aucune donnée envoyée, pas de modélisation |
Pour les tags non-Google (Meta pixel, TikTok…), utilisez les paramètres de consentement supplémentaires de GTM (onglet Consentement du tag) ou des déclencheurs basés sur le TC string / les finalités exposées par la CMP Sirdata.
Étape 5 — Consentement côté serveur
Bonne nouvelle : les hits GA4 embarquent automatiquement l'état de consentement dans le paramètre gcs (et gcd). Votre conteneur serveur y a accès et peut conditionner ses tags :
gcs=G111→ ad_storage et analytics_storage accordés.gcs=G100→ tout refusé (ping cookieless).gcs=G101→ analytics accordé, ads refusé.
Lire le consentement dans sGTM
Créez une variable serveur de type Query Parameter sur gcs, ou utilisez les données de consentement de l'événement (champs x-ga-gcs exposés par le client GA4).
Conditionner les tags serveur
Exemple : le tag Meta CAPI ne se déclenche que si le consentement publicitaire est accordé. Ajoutez une condition de déclenchement : gcs se termine par 11 (ads + analytics) ou vérifiez la finalité TCF correspondante.
Étape 6 — Vérifier
- Avant choix : les requêtes
/g/collectcontiennentgcs=G100, aucun cookie_gan'est posé. - Après accept :
gcs=G111, cookies posés, événementconsent updatevisible dans le Preview GTM. - Tag Assistant : l'onglet « Consent » montre l'état de chaque signal au moment du déclenchement de chaque tag.
- CMP Sirdata : vérifiez le TC string avec
__tcfapi('getTCData', 2, console.log)dans la console.
__tcfapi('getTCData', 2, function (tcData, success) {
if (success) {
console.log('TC string :', tcData.tcString);
console.log('Finalités acceptées :', tcData.purpose.consents);
console.log('Google (vendor 755) :', tcData.vendor.consents[755]);
}
});