Tutoriel
Mesurer le taux d'interaction bannière cookies dans GA4
Le taux d'acceptation CMP ignore les visiteurs sans réponse. Mesurez affichage, interaction, délai et acceptation dans GA4, avec les seuils 70 % et 85 %.
Dans ce tutoriel
Le taux d’acceptation affiché par votre CMP divise les acceptations par les seuls visiteurs qui ont répondu. Il ignore donc tous ceux qui ont navigué sans choisir, et ce sont eux qui manquent dans votre attribution. Pour savoir si votre bannière fait perdre de la donnée, il faut quatre indicateurs : taux d’affichage, taux d’interaction sur la page d’arrivée, délai médian de réponse et taux d’acceptation parmi les seules interactions. GA4 peut les calculer si la CMP lui transmet un événement, à condition de ne rien envoyer qui dépasse ce que le consentement autorise.
Pourquoi le taux d’acceptation ne suffit pas
Une CMP calcule en général acceptations ÷ réponses. Prenons un exemple fictif : 1 000 visiteurs voient la bannière, 400 répondent, 240 acceptent. Le taux affiché est de 60 %. Mais seuls 40 % de vos visiteurs ont répondu, et les 600 autres ont navigué sans choix. Le chiffre utile est l’acceptation rapportée à tous les affichages, soit 24 % dans cet exemple, puis la répartition de ceux qui n’ont pas répondu.
Si votre configuration de Consent Mode n’a pas été pensée pour ce cas, c’est le premier point que je reprends dans une mission Consent Mode.
| Indicateur | Calcul | Ce qu’il dit |
|---|---|---|
| Taux d’affichage | Sessions avec bannière affichée ÷ sessions sur la page d’arrivée | Vérifie que la bannière s’affiche là où elle doit |
| Taux d’interaction sur la landing | Réponses sur la page d’arrivée ÷ affichages | Sous 70 %, une part de l’attribution est perdue |
| Délai médian | Médiane de (choix − affichage) | Au-delà de 20 secondes, une partie du trafic a déjà navigué |
| Acceptation parmi les interactions | Acceptations ÷ (acceptations + refus) | Le chiffre de la CMP, à lire en second |
Mes seuils de lecture : un taux d’interaction sous 70 % sur la landing appelle une décision sur la bannière ; au-dessus de 85 %, une bannière discrète fonctionne.
Ce qui se mesure avant consentement
Trois cas à distinguer.
La mesure d’audience exemptée. La CNIL admet que la mesure d’audience ne soit pas soumise au consentement si la finalité reste strictement limitée au site, pour le compte exclusif de l’éditeur, avec des données anonymes, sans recoupement ni transmission à des tiers. Les conditions incluent l’information des utilisateurs, la possibilité de s’opposer, une adresse IP tronquée et une durée de vie des traceurs de 13 mois. Je n’ai pas pu confirmer que Google Analytics entre dans cette exemption dans les listes de la CNIL consultées. Ne la supposez pas : vérifiez l’outil d’auto-évaluation de la CNIL avant d’en faire votre base juridique.
Les pings sans cookie du Consent Mode Advanced. Quand le consentement est refusé, les balises Google envoient des mesures sans cookie, avec des informations fonctionnelles et des données non identifiantes. C’est un mécanisme documenté par Google, distinct de l’exemption CNIL.
Le cookie de la CMP. Celui qui conserve le choix de l’utilisateur est nécessaire au fonctionnement du dispositif.
Ce qui n’est pas permis : poser un cookie, un localStorage ou un identifiant avant toute réponse pour garder la source du clic. Je déconseille aussi d’envoyer les refus vers GA4 avant réponse : comptez-les côté CMP.
Implémentation : l’événement poussé par la CMP
Trois voies courantes. Cookiebot expose les événements CookiebotOnAccept et CookiebotOnDecline, mais ils se déclenchent aussi pour les visiteurs déjà consentis : sans filtre, vous comptez des réponses qui n’en sont pas. Didomi pousse dans le dataLayer didomi-consent-changed, qui ne se déclenche qu’à un changement, et didomi-consent, qui se déclenche au chargement et à chaque changement. Axeptio émet consent:saved et cookies:complete, et documente consent.display et consent.answer pour GTM. Vérifiez les noms sur votre version de SDK avant de les coder. Pour la grille publique par domaine et le scan de Cookiebot, voyez ma fiche Cookiebot.
Le code ci-dessous ne compte que la première réponse de la session, et seulement si la bannière a bien été affichée.
<script>
(function () {
function push(choice) {
var shownAt = sessionStorage.getItem('banner_shown_at');
if (!shownAt || sessionStorage.getItem('banner_answered')) return;
sessionStorage.setItem('banner_answered', '1');
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'banner_choice',
choice: choice,
delay_ms: Date.now() - Number(shownAt),
page_type: document.body.dataset.pageType || 'other'
});
}
window.addEventListener('CookiebotOnAccept', function () { push('accept'); });
window.addEventListener('CookiebotOnDecline', function () { push('refuse'); });
})();
</script>
La clé banner_shown_at doit être posée au moment de l’affichage, dans le hook d’affichage de votre CMP. Je ne l’ai pas vérifié pour chaque outil : c’est à confirmer sur votre installation.
L’autre voie est le comptage côté CMP. Les exports de votre tableau de bord donnent affichages, interactions, acceptations et refus. C’est la source la plus propre pour les refus, et elle sert de contrôle à GA4.
Côté GTM et GA4
- Créez trois variables de données :
choice,delay_msetpage_type. - Créez un déclencheur d’événement personnalisé nommé
banner_choice. - Créez une balise GA4 d’événement
consent_interactionavec ces trois paramètres. Ajoutez un événementbanner_shownà l’affichage : il sert de dénominateur au taux d’interaction. - Dans Administration, enregistrez
choiceetpage_typeen dimensions personnalisées de portée Événement, etdelay_msen métrique personnalisée. Une propriété est limitée à 50 dimensions de portée Événement.
Attention au mode Basic : la balise GA4 ne part pas avant la réponse, donc les refus n’apparaissent pas dans GA4. Dans ce cas, le comptage CMP devient la mesure de référence.
Lire le rapport dans GA4
Dans une exploration libre :
- filtre sur le nom d’événement
consent_interaction; - lignes :
choice; colonnes :page_type; valeurs : nombre d’événements ; - taux d’interaction : nombre de
consent_interaction÷ nombre debanner_shownsur la même période, parpage_type.
Les explorations GA4 proposent la moyenne de delay_ms, pas la médiane. Pour la médiane, exportez vers BigQuery et calculez-la avec APPROX_QUANTILES.
Décider : centrale ou discrète
- Interaction sur la landing sous 70 % et budget média significatif : passez à une bannière centrale, avec un refus de même visibilité, puis mesurez avant et après sur quatre semaines. Le raisonnement complet est dans bannière centrale ou discrète.
- Au-dessus de 85 % : gardez la bannière discrète, passez en Advanced si ce n’est pas fait, et surveillez la part de
(direct)sur les URL taguées. - Entre les deux : bannière centrale pour le trafic payant seulement, discrète pour le reste, puis un test A/B de bannière.
Un taux d’interaction élevé n’est pas une preuve de bonne bannière. Si le refus est peu visible, le taux monte pour de mauvaises raisons, et le risque est juridique. Lisez toujours l’acceptation avec la visibilité du refus.
Questions fréquentes
Faut-il une bannière centrale pour mesurer les interactions ?
Non. Le taux d’interaction se mesure avec n’importe quelle bannière, à condition de compter les affichages et les réponses. La centrale change le taux, pas la méthode.
Peut-on compter les refus dans GA4 en Basic Consent Mode ?
Non, car la balise GA4 ne part pas avant la réponse. Comptez les refus côté CMP, et utilisez GA4 pour les acceptations et le contexte de page.
Un taux d’interaction de 90 % est-il forcément bon ?
Pas forcément. Il peut venir d’un refus peu visible, ce qui pose un problème de conformité. Regardez la répartition des réponses avant de conclure.
Sources
- Google, Présentation du mode Consentement : comportement des balises en Basic et Advanced, pings sans cookie.
- CNIL, Cookies : solutions pour les outils de mesure d’audience : conditions de l’exemption de consentement.
- Cookiebot, Developer resources : événements et callbacks d’acceptation et de refus.