Qu’est-ce qu’un cookie de mesure d’audience exempté de consentement, exactement ? La question revient sur chaque projet où l’on installe Google Analytics, et la réponse tient en une poignée de critères précis que beaucoup de développeurs découvrent trop tard, une fois le tracking déjà en place.
La CNIL distingue les cookies strictement nécessaires au fonctionnement du site, exemptés de consentement, des cookies de mesure d’audience, qui peuvent l’être eux aussi mais seulement sous conditions strictes. Google Analytics, dans sa configuration par défaut, ne remplit pas ces conditions.
Les catégories de cookies concernées
Trois grandes familles de cookies coexistent sur un site WordPress classique : les cookies techniques (session, panier, préférences d’affichage), les cookies de mesure d’audience (Google Analytics, Matomo), et les cookies publicitaires ou de partage social (Facebook Pixel, boutons de partage tiers). Seule la première catégorie est systématiquement exemptée.
Pour qu’un outil de mesure d’audience échappe lui aussi au recueil de consentement, il doit répondre à des critères cumulatifs : finalité strictement limitée à la mesure d’audience, données exclusivement utilisées pour le compte de l’éditeur du site, absence de croisement avec d’autres traitements, et durée de conservation limitée dans le temps. Google Analytics, dans son fonctionnement standard, transmet des données à Google pour des finalités qui dépassent ce périmètre : il ne peut donc pas se contenter d’un simple bandeau informatif.
Le déclenchement conditionnel des scripts

Techniquement, la contrainte se résout en amont du chargement du script, pas après. Le piège classique consiste à charger gtag.js dans le <head> puis à masquer une bannière par-dessus : le cookie est déjà déposé au moment où le visiteur voit la question. Le bon réflexe est d’attacher le chargement du script à un événement de consentement explicite.
function chargerScriptSiConsentement() {
if ( getConsentement( 'mesure_audience' ) === true ) {
var script = document.createElement( 'script' );
script.src = 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX';
script.async = true;
document.head.appendChild( script );
}
}
document.addEventListener( 'consentementMisAJour', chargerScriptSiConsentement );
Ce découplage entre affichage de la bannière et exécution du script est le point que les audits techniques vérifient en premier, généralement via l’onglet réseau du navigateur ouvert avant tout clic.
Refus aussi simple que l’acceptation
La recommandation impose également une symétrie de traitement entre acceptation et refus. Un bouton « Tout accepter » bien visible accompagné d’un lien discret « Paramétrer » qui, lui, cache le refus global derrière trois clics, ne respecte pas cette exigence. Les deux actions doivent demander un effort équivalent à l’utilisateur.
- Un bouton de refus au même niveau visuel que le bouton d’acceptation.
- Aucune case pré-cochée pour une finalité qui n’est pas strictement nécessaire.
- Une possibilité de retirer son consentement aussi facilement qu’il a été donné, via un lien permanent en pied de page.
Durée de vie et preuve du consentement
Le consentement recueilli n’est pas éternel. Une durée de conservation raisonnable, généralement autour de treize mois, est recommandée avant de redemander l’accord du visiteur. Sur le plan technique, cela implique de stocker, en plus du choix lui-même, un horodatage exploitable par le script de gestion du consentement pour déclencher une nouvelle demande automatiquement.
Sur nos projets, on stocke systématiquement trois informations dans le cookie de préférence : la version des catégories proposées, le choix par catégorie, et la date du recueil. Cela évite de redemander un consentement à chaque changement mineur de texte du bandeau.
Notre verdict
La mise en conformité d’un tracking existant n’est pas qu’une question d’affichage : elle demande de repenser l’ordre d’exécution des scripts, pas seulement leur habillage visuel. Un développeur qui se contente d’ajouter une bannière par-dessus un gtag.js déjà chargé au premier rendu de page n’a rien résolu, il a seulement ajouté une couche cosmétique au-dessus d’un problème qui reste entier.