WP WordPress Débutant

DataFirefly Cookie Consent — Guide complet

Installation, configuration du bandeau, Google Consent Mode v2, audit des trackers et journal CNIL/Garante du plugin WordPress DataFirefly Cookie Consent.

Mis à jour Version du module 1.0.0

Présentation

DataFirefly Cookie Consent est un plugin WordPress et WooCommerce de gestion du consentement aux cookies. Il combine trois briques : un bandeau de consentement conforme RGPD/CNIL/Garante, l’émission native des signaux Google Consent Mode v2 avant tout tag Google, et un audit qui détecte les trackers réellement chargés sur votre site avec journal de preuve exportable.

Prérequis

  • WordPress 6.2 ou supérieur
  • PHP 8.0 ou supérieur
  • WooCommerce 8.0+ (optionnel — le plugin fonctionne aussi sur WordPress seul, compatibilité HPOS déclarée)
  • GTM ou GA4 déjà installé si vous voulez profiter du Consent Mode v2 (le plugin n’installe pas les tags Google à votre place)

Installation

  1. Téléchargez le fichier df-cookie-consent.zip depuis votre compte DataFirefly.
  2. Dans l’admin WordPress, allez dans Extensions → Ajouter → Téléverser une extension, sélectionnez le ZIP puis cliquez sur Installer maintenant.
  3. Cliquez sur Activer. À l’activation, le plugin crée la table de journal wp_dfcc_consent_log, génère un salt aléatoire pour le hash des IPs et programme deux tâches cron (purge quotidienne du journal et scan des trackers).
  4. Un nouveau menu Cookie Consent apparaît dans la barre latérale de l’admin avec quatre pages : Tableau de bord, Réglages, Audit et Journal.

Le bandeau s’affiche immédiatement sur le frontend avec les réglages par défaut (layout barre en bas de page, thème clair, mode opt-in, les 4 catégories activées).

Configuration du bandeau

Tous les réglages se trouvent dans Cookie Consent → Réglages.

Comportement général

  • Activer le bandeau : interrupteur global du plugin.
  • Mode : opt-in (obligatoire en UE — aucun cookie non essentiel avant consentement) ou opt-out.
  • Bouton Tout refuser au premier niveau : activé par défaut, conformément à la recommandation CNIL du 17 septembre 2020. Ne le désactivez pas si votre audience est européenne.
  • Durée de vie du cookie de consentement : 180 jours par défaut. Le choix de l’utilisateur est stocké dans le cookie dfcc_consent (encodé, first-party).
  • Version de la politique : incrémentez ce numéro quand votre politique cookies change de manière substantielle — le bandeau sera automatiquement re-présenté à tous les visiteurs et le journal enregistrera la nouvelle version.

Apparence

  • Layout : barre pleine largeur, carte d’angle ou modal centrée.
  • Position : haut ou bas de page (pour les layouts barre et carte).
  • Thème : clair, sombre ou auto (suit la préférence système du visiteur via prefers-color-scheme).
  • Couleur d’accent : personnalise la couleur du bouton principal.

Sur mobile (moins de 640 px), le bandeau passe automatiquement en plein écran pour rester lisible. Les animations respectent prefers-reduced-motion.

Catégories de cookies

Quatre catégories sont préconfigurées, chacune avec un libellé et une description modifiables :

  • Nécessaires (necessary) — toujours actifs, non désactivables par le visiteur : panier, session, sécurité.
  • Fonctionnels (functional) — préférences, langue, chat.
  • Mesure d’audience (analytics) — Google Analytics, Matomo, etc.
  • Publicité ciblée (marketing) — Google Ads, Meta Pixel, remarketing.

Textes et liens

Le titre du bandeau, le texte d’introduction et les libellés des quatre boutons (Tout accepter, Tout refuser, Personnaliser, Enregistrer mes choix) sont modifiables dans les réglages. Renseignez également les URLs de votre politique de confidentialité et de votre politique cookies — elles s’affichent en liens discrets sous les boutons. Tous les textes passent par les fonctions de traduction WordPress : le plugin est livré avec 5 catalogues (FR, EN, ES, DE, IT) et reste surchargeable via Loco Translate.

C’est le cœur technique du plugin. Depuis mars 2024, Google exige que les sites européens émettent les 7 signaux Consent Mode v2 pour continuer à mesurer les conversions Google Ads et construire les audiences GA4.

Fonctionnement

Le plugin imprime un bloc gtag('consent', 'default', ...) dans le head HTML avec la priorité 1 de wp_head — c’est-à-dire avant tout container GTM ou tag GA4 chargé de manière standard. Les 7 signaux émis :

  • ad_storage, ad_user_data, ad_personalization — pilotés par la catégorie Publicité ciblée
  • analytics_storage — piloté par la catégorie Mesure d’audience
  • functionality_storage, personalization_storage — pilotés par la catégorie Fonctionnels
  • security_storage — toujours granted (recommandation Google)

Le mapping catégories → signaux est automatique : aucun paramétrage manuel n’est nécessaire. Quand le visiteur fait son choix, un gtag('consent', 'update', ...) est émis immédiatement et le choix est réappliqué comme état par défaut à chaque page suivante.

  • Région EEA : par défaut, le deny strict ne s’applique qu’aux 31 pays de l’EEE (plus Royaume-Uni et Suisse) via le paramètre region de gtag — le reste du monde reste en granted. Détection Cloudflare native via l’en-tête CF-IPCountry.
  • url_passthrough : activé par défaut. Conserve les identifiants de clic gclid et dclid dans les URLs même en cas de refus, ce qui permet la mesure de conversions sans cookies.
  • ads_data_redaction : activé par défaut. Censure les données utilisateur envoyées à Google quand ad_storage est denied.
  • wait_for_update : 500 ms par défaut. Délai laissé aux tags Google pour attendre la mise à jour du consentement.

Vérifier que tout fonctionne

  1. Ouvrez votre site en navigation privée, ouvrez la console du navigateur et tapez dataLayer : vous devez voir l’entrée consent default avant l’entrée gtm.js.
  2. Dans Google Tag Assistant ou le mode Preview de GTM, l’onglet Consent doit afficher les 7 signaux avec leur état.
  3. Acceptez le bandeau puis retapez dataLayer : une entrée consent update doit apparaître avec les nouveaux états.

Audit de conformité

La page Cookie Consent → Audit lance un scan qui va chercher votre page d’accueil et analyse le HTML réellement servi.

Ce que détecte le scan

  • 23 trackers connus : Google Analytics 4, GTM, Meta Pixel, TikTok, LinkedIn, Pinterest, Snapchat, Twitter/X, Bing UET, Matomo, Microsoft Clarity, Hotjar, Mixpanel, Plausible, HubSpot, Intercom, Crisp, Tawk, YouTube, Vimeo, Stripe et autres — chacun classé dans sa catégorie de consentement attendue.
  • 11 plugins WordPress à risque : MonsterInsights, Site Kit, PixelYourSite, Facebook/Pinterest/TikTok for WooCommerce, HubSpot, MC4WP et autres plugins qui injectent des trackers de leur côté.
  • Cookies posés côté serveur : snapshot avec identification automatique du vendor (_ga, _fbp, _gcl, etc.).

Score et recommandations

Le scan produit un score de conformité de 0 à 100 basé sur l’écart entre vos catégories déclarées et les trackers réellement détectés. Les problèmes sont classés en trois niveaux — critical, warning, info — chacun avec une recommandation actionnable (par exemple : un tracker marketing détecté alors que la catégorie est désactivée dans le bandeau). Un scan automatique tourne aussi en tâche de fond via le cron dfcc_cron_scan_trackers.

Journal de consentement

La page Cookie Consent → Journal liste chaque événement de consentement enregistré dans la table dédiée wp_dfcc_consent_log.

Données enregistrées

  • Horodatage UTC, UID anonyme persistant (traçabilité multi-événements d’un même visiteur)
  • Type d’événement : accept_all, reject_all, custom, withdraw
  • État complet par catégorie, version de la politique et du bandeau
  • IP doublement protégée : hash SHA-256 avec le salt aléatoire généré à l’activation (irréversible), plus IP tronquée à /24 (IPv4) ou /64 (IPv6) pour analyse anonyme
  • User agent, URL de la page, referer, région, langue, user_id WordPress si connecté

Filtres et export

Filtrez par période, type d’événement ou UID, puis exportez en CSV (BOM UTF-8, séparateur point-virgule — s’ouvre directement dans Excel français) ou en JSON pretty. Ces exports constituent votre preuve de consentement en cas de contrôle CNIL ou Garante.

Rétention

Par défaut, le journal est conservé 1825 jours (5 ans, durée recommandée par la CNIL). La purge automatique tourne chaque nuit via le cron dfcc_cron_purge_logs. La rétention est ajustable dans les réglages. À noter : la désactivation du plugin conserve les logs (preuve de consentement) ; seule la désinstallation complète via Extensions → Supprimer purge la table, les options et les crons.

La réglementation impose que le visiteur puisse modifier son choix à tout moment. Deux options :

  • Shortcode : placez Gérer mes cookies dans un widget ou un menu de footer — il génère un lien qui rouvre la modal de personnalisation.
  • API JavaScript : appelez window.dfcc.open() depuis n’importe quel élément de votre thème.

API pour les développeurs

API JavaScript

L’objet global window.dfcc expose :

  • dfcc.open() — ouvre la modal de personnalisation
  • dfcc.accept() — accepte toutes les catégories
  • dfcc.reject() — refuse toutes les catégories optionnelles
  • dfcc.withdraw() — retire le consentement (événement withdraw journalisé)
  • dfcc.getConsent() — retourne l’état complet du consentement
  • dfcc.hasConsent('analytics') — vérifie une catégorie donnée (utile pour conditionner vos propres scripts)

Endpoint REST

Un endpoint POST est disponible sur wp-json/dfcc/v1/consent pour enregistrer un événement de consentement depuis votre propre code (protégé par nonce).

Hooks WordPress

  • dfcc_before_banner_render — action déclenchée avant le rendu du bandeau (pour le masquer sur certaines pages par exemple)
  • dfcc_after_consent_logged — action déclenchée après chaque écriture dans le journal (pour synchroniser un CRM par exemple)
  • dfcc_consent_mode_defaults — filtre sur les états par défaut des 7 signaux Consent Mode
  • dfcc_scan_trackers_patterns — filtre pour ajouter vos propres patterns de détection au scanner

Dépannage

  • Les signaux Consent Mode n’apparaissent pas avant GTM : vérifiez qu’aucun plugin de performance ne déplace ou diffère les scripts du head. Le bloc dfcc-consent-mode-default doit rester inline et non différé.
  • Le bandeau réapparaît à chaque visite : vérifiez qu’un système de cache ne sert pas une page figée avec un ancien cookie, et que la durée de vie du cookie n’est pas à 0.
  • Le scan d’audit échoue : le serveur doit pouvoir faire une requête HTTP vers sa propre page d’accueil. Sur certains hébergements avec loopback bloqué, autorisez les requêtes locales ou vérifiez le pare-feu.
  • Les IPs journalisées sont celles de Cloudflare : le plugin lit CF-Connecting-IP en priorité — si le problème persiste, vérifiez que votre configuration serveur transmet bien les en-têtes Cloudflare.
Cette page vous a-t-elle été utile ?

Toujours bloqué ? Contactez le support