Beaucoup d’équipes attendent de leur CMP (Axeptio, Didomi, OneTrust, Cookiebot…) qu’elle pousse un « dataLayer de consentement » unique que tous les tag managers comprendraient. Cet objet n’existe pas. Chaque bibliothèque d’analytics ou de publicité lit le consentement par sa propre API, et certaines savent aussi lire directement la chaîne IAB TCF. La bonne question n’est pas « mon tag manager lit-il le TCF ? » mais « que lit chaque tag, et qui le renseigne ? ».

1. Ce que fait une CMP

Une CMP affiche le bandeau, enregistre le choix du visiteur et l’expose. Selon la CMP et ses réglages, elle l’expose par :

Le TCF est une manière standardisée d’enregistrer et de partager des choix de consentement. L’utiliser ne rend pas un site conforme au RGPD à lui seul.

2. Tags Google : consent mode, ou TCF

Consent mode. La page définit une valeur par défaut avant qu’un tag Google n’envoie quoi que ce soit, puis la CMP la met à jour quand le visiteur choisit. Google le dit ainsi : « The order of the code here is vital. If your consent code is called out of order, consent defaults won’t work. »

// 1. Before any measurement command, on every page
gtag('consent', 'default', {
  'ad_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'analytics_storage': 'denied'
});

// 2. When the visitor makes a choice (usually done by the CMP)
gtag('consent', 'update', {
  'ad_storage': 'granted',
  'ad_user_data': 'granted',
  'ad_personalization': 'granted',
  'analytics_storage': 'granted'
});

Une valeur par défaut « denied » est le montage voulu, pas une erreur. ad_user_data et ad_personalization ont été ajoutés avec le consent mode v2. Dans Google Tag Manager, Google recommande de laisser une CMP gérer les mises à jour ; beaucoup de CMP publient un Community Template qui renseigne à la fois la valeur par défaut et la mise à jour.

TCF. Les tags Google savent aussi lire nativement la chaîne TC. On l’active avec window['gtag_enable_tcf_support'] = true sur le site, ou avec enableAdvertiserConsentMode: true dans le TCData de la CMP. Le tag Google traduit alors les finalités TCF en consent mode :

Finalité TCF refuséeEffet
Finalité 1ad_storage et ad_user_data refusés
Finalité 3 ou 4ad_personalization refusé
Finalité 7ad_user_data refusé
Finalité 9 ou 10Google signals désactivés dans GA4 (web)

Si la CMP ne répond pas en 500 millisecondes, le tag applique les réglages de consentement par défaut.

3. Adobe : deux chemins selon la bibliothèque

AppMeasurement historique et ECID : l’Opt-In Service. Les catégories sont figées :

adobe.OptInCategories = {
  "AAM": "aam",
  "ANALYTICS": "aa",
  "ECID": "ecid",
  "TARGET": "target"
}

adobe.optIn.approve(['aa', 'ecid']);
adobe.optIn.deny(['target']);

Attention : la catégorie analytics s’appelle aa, pas analytics. Si vous passez shouldWaitForComplete = true, rien n’est appliqué tant que vous n’appelez pas adobe.optIn.complete().

Web SDK (alloy) : setConsent. Il accepte le standard propre d’Adobe (1.0 ou 2.0) ou une chaîne IAB TCF :

alloy("setConsent", {
  consent: [{
    "standard": "IAB TCF",
    "version": "2.0",
    "value": tcString,       // from __tcfapi
    "gdprApplies": true
  }]
});

// or, with Adobe's standard 1.0
alloy("setConsent", {
  consent: [{ "standard": "Adobe", "version": "1.0", "value": { "general": "in" } }]
});

Le tag manager lui-même est Adobe Experience Platform Tags (anciennement Launch). Il déploie l’une ou l’autre bibliothèque ; le chemin de consentement dépend de celle que vous utilisez.

4. Matomo : une API, deux modes

Le guide de consentement de Matomo documente sa propre API _paq. Choisissez un mode et utilisez les appels qui lui correspondent :

ModeAvant consentementDonner / mémoriserRetirer
requireConsentAucune requête de tracking, aucun cookierememberConsentGivenforgetConsentGiven
requireCookieConsentRequêtes envoyées, aucun cookierememberCookieConsentGivenforgetCookieConsentGiven

5. Récapitulatif

BibliothèqueLit la chaîne TC ?API de consentement
Tag Google (GA4, Ads, Floodlight)Oui, une fois le support TCF activégtag('consent', 'default' / 'update', …)
Adobe AppMeasurement + ECIDNonadobe.optIn.approve / deny (aa, ecid, target, aam)
Adobe Web SDKOui, transmise à setConsentalloy("setConsent", …)
MatomoPas dans son guide de consentementAppels de consentement _paq

6. Quand il faut un script de mapping

Si votre CMP renseigne déjà le consent mode de Google (ou si vous avez activé le support TCF) et que vous utilisez le Web SDK d’Adobe avec la chaîne TC, il y a peut-être peu de choses à mapper. Pour l’Adobe historique et pour Matomo, il faut en général un petit script qui écoute la CMP et appelle la bonne API :

// cmpConsent: whatever your CMP exposes (callback, event, TCF purposes...)
function applyConsent(cmpConsent) {
  if (cmpConsent.analytics) {
    adobe.optIn.approve(['aa', 'ecid']);
    _paq.push(['rememberConsentGiven']);
  } else {
    adobe.optIn.deny(['aa', 'ecid']);
    _paq.push(['forgetConsentGiven']);
  }
}

Vérifiez toujours ce que votre CMP envoie réellement, dans Tag Assistant pour Google et dans la console du navigateur pour les autres, avant d’écrire le moindre mapping.

7. Erreurs courantes

Sources

Pour aller plus loin, lisez la version complète de l’article (en anglais) : Consent Signals by Tag Manager: What Google, Adobe and Matomo Actually Read.

Besoin d’aide sur ce sujet ? Consent Mode v2 et CMP.

Vous doutez de votre tracking ?

Réserver un appel Ou commencez par l’audit analytics gratuit →