FR EN

Google Consent Mode v2 et GTM

Principe : refus par défaut

Dès que le chargeur Agreely s'exécute, il installe Consent Mode v2 en refus par défaut de façon synchrone, avant que le module de la bannière soit téléchargé et avant que GTM charge la moindre balise :

// ce que le chargeur installe immédiatement (aucune action requise de votre part)
gtag('consent', 'default', {
  ad_storage:          'denied',
  analytics_storage:   'denied',
  ad_user_data:        'denied',
  ad_personalization:  'denied',
  functionality_storage: 'denied',
  security_storage:    'granted',
});

Le signal security_storage: 'granted' couvre le témoin agreely_consent lui-même, classé strictement nécessaire (art. 14 : le témoin de consentement est nécessaire au fonctionnement du mécanisme).

Ordre de chargement

Le tag Agreely doit se trouver avant le tag GTM dans votre <head> :

<head>
  <!-- 1. Agreely en premier - installe le refus par défaut -->
  <script async
    src="https://cdn.agreely.ca/e/v1/loader.js"
    data-agreely="agr_pub_VOTRE_CLE"></script>

  <!-- 2. GTM ensuite - Google Tag Manager -->
  <script async src="https://www.googletagmanager.com/gtm.js?id=GTM-XXXXX"></script>

  <!-- ... reste du head ... -->
</head>

Si GTM se charge avant Agreely, les balises s'exécutent sans signal de consentement et l'application du zéro-clic n'est pas garantie.

Correspondance des signaux

Lorsque le visiteur prend une décision, la bannière envoie le signal de mise à jour gtag('consent', 'update', ...) avec la correspondance suivante :

Catégorie Agreely Signaux Consent Mode v2 mis à jour
Marketing ad_storage, ad_user_data, ad_personalization
Analytique analytics_storage
Fonctionnel functionality_storage
Strictement nécessaire (pas de signal - toujours accordé)

Les catégories dont le visiteur n'a pas accordé l'autorisation restent à denied jusqu'à une mise à jour. Un retrait du consentement repasse tous les signaux à denied (sauf security_storage).

Si vous utilisez gtag.js directement (sans GTM), le flux est identique : Agreely installe le default, votre code amont peut appeler gtag('config', ...) et l'événement agrConsent sur window vous signale chaque changement de décision si vous en avez besoin :

window.addEventListener('agrConsent', (e) => {
  console.log(e.detail); // { action, decisions, consentId }
});

Vérifier que le signal par défaut s'applique

Ouvrez votre navigateur en navigation privée (aucun témoin préexistant), accédez à votre site, et dans la console DevTools :

// avant toute interaction avec la bannière :
window.google_tag_data?.ics?.entries ?? 'pas encore chargé'

Tous les signaux non essentiels doivent être à denied. Si vous voyez granted, le tag GTM se charge probablement avant le tag Agreely.