DataFirefly Cookie Consent — Guía completa
Instalación, configuración del banner, Google Consent Mode v2, auditoría de trackers y registro CNIL/Garante del plugin WordPress DataFirefly Cookie Consent.
Presentación
DataFirefly Cookie Consent es un plugin WordPress y WooCommerce de gestión del consentimiento de cookies. Combina tres bloques: un banner de consentimiento conforme RGPD/CNIL/Garante, la emisión nativa de las señales Google Consent Mode v2 antes de cualquier etiqueta de Google, y una auditoría que detecta los trackers realmente cargados en tu sitio con un registro de prueba exportable.
Requisitos
- WordPress 6.2 o superior
- PHP 8.0 o superior
- WooCommerce 8.0+ (opcional — el plugin funciona también en WordPress solo, compatibilidad HPOS declarada)
- GTM o GA4 ya instalado si quieres aprovechar el Consent Mode v2 (el plugin no instala las etiquetas de Google por ti)
Instalación
- Descarga el archivo
df-cookie-consent.zipdesde tu cuenta DataFirefly. - En el admin de WordPress, ve a Plugins → Añadir nuevo → Subir plugin, selecciona el ZIP y haz clic en Instalar ahora.
- Haz clic en Activar. Al activarse, el plugin crea la tabla de registro
wp_dfcc_consent_log, genera un salt aleatorio para el hash de las IPs y programa dos tareas cron (purga diaria del registro y escaneo de trackers). - Un nuevo menú Cookie Consent aparece en la barra lateral del admin con cuatro páginas: Panel, Ajustes, Auditoría y Registro.
El banner se muestra inmediatamente en el frontend con los ajustes por defecto (diseño de barra en la parte inferior, tema claro, modo opt-in, las 4 categorías activadas).
Configuración del banner
Todos los ajustes se encuentran en Cookie Consent → Ajustes.
Comportamiento general
- Activar el banner: interruptor global del plugin.
- Modo: opt-in (obligatorio en la UE — ningún cookie no esencial antes del consentimiento) u opt-out.
- Botón Rechazar todo en el primer nivel: activado por defecto, conforme a la recomendación CNIL del 17 de septiembre de 2020. No lo desactives si tu audiencia es europea.
- Duración del cookie de consentimiento: 180 días por defecto. La elección del usuario se guarda en el cookie
dfcc_consent(codificado, first-party). - Versión de la política: incrementa este número cuando tu política de cookies cambie de manera sustancial — el banner se volverá a presentar automáticamente a todos los visitantes y el registro guardará la nueva versión.
Apariencia
- Diseño: barra a todo ancho, tarjeta de esquina o modal centrada.
- Posición: parte superior o inferior de la página (para los diseños barra y tarjeta).
- Tema: claro, oscuro o auto (sigue la preferencia del sistema del visitante vía prefers-color-scheme).
- Color de acento: personaliza el color del botón principal.
En móvil (menos de 640 px), el banner pasa automáticamente a pantalla completa para seguir siendo legible. Las animaciones respetan prefers-reduced-motion.
Categorías de cookies
Cuatro categorías vienen preconfiguradas, cada una con etiqueta y descripción modificables:
- Necesarias (necessary) — siempre activas, no desactivables por el visitante: carrito, sesión, seguridad.
- Funcionales (functional) — preferencias, idioma, chat.
- Estadísticas (analytics) — Google Analytics, Matomo, etc.
- Marketing (marketing) — Google Ads, Meta Pixel, remarketing.
Textos y enlaces
El título del banner, el texto de introducción y las etiquetas de los cuatro botones (Aceptar todo, Rechazar todo, Personalizar, Guardar mis elecciones) son modificables en los ajustes. Rellena también las URLs de tu política de privacidad y de tu política de cookies — se muestran como enlaces discretos bajo los botones. Todos los textos pasan por las funciones de traducción de WordPress: el plugin se entrega con 5 catálogos (FR, EN, ES, DE, IT) y sigue siendo personalizable vía Loco Translate.
Google Consent Mode v2
Es el corazón técnico del plugin. Desde marzo de 2024, Google exige que los sitios europeos emitan las 7 señales Consent Mode v2 para seguir midiendo las conversiones de Google Ads y construyendo las audiencias GA4.
Funcionamiento
El plugin imprime un bloque gtag('consent', 'default', ...) en el head HTML con la prioridad 1 de wp_head — es decir, antes de cualquier contenedor GTM o etiqueta GA4 cargada de manera estándar. Las 7 señales emitidas:
ad_storage,ad_user_data,ad_personalization— controladas por la categoría Marketinganalytics_storage— controlada por la categoría Estadísticasfunctionality_storage,personalization_storage— controladas por la categoría Funcionalessecurity_storage— siempre granted (recomendación de Google)
El mapeo categorías → señales es automático: no se necesita ninguna configuración manual. Cuando el visitante hace su elección, se emite inmediatamente un gtag('consent', 'update', ...) y la elección se reaplica como estado por defecto en cada página siguiente.
Ajustes de Consent Mode
- Región EEA: por defecto, el deny estricto solo se aplica a los 31 países del EEE (más Reino Unido y Suiza) mediante el parámetro region de gtag — el resto del mundo permanece en granted. Detección nativa de Cloudflare vía la cabecera CF-IPCountry.
- url_passthrough: activado por defecto. Conserva los identificadores de clic gclid y dclid en las URLs incluso en caso de rechazo, permitiendo la medición de conversiones sin cookies.
- ads_data_redaction: activado por defecto. Censura los datos de usuario enviados a Google cuando ad_storage está en denied.
- wait_for_update: 500 ms por defecto. Retraso concedido a las etiquetas de Google para esperar la actualización del consentimiento.
Verificar que todo funciona
- Abre tu sitio en navegación privada, abre la consola del navegador y escribe
dataLayer: debes ver la entrada consent default antes de la entrada gtm.js. - En Google Tag Assistant o el modo Preview de GTM, la pestaña Consent debe mostrar las 7 señales con su estado.
- Acepta el banner y vuelve a escribir
dataLayer: debe aparecer una entrada consent update con los nuevos estados.
Auditoría de conformidad
La página Cookie Consent → Auditoría lanza un escaneo que busca tu página de inicio y analiza el HTML realmente servido.
Qué detecta el escaneo
- 23 trackers conocidos: 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 y otros — cada uno clasificado en su categoría de consentimiento esperada.
- 11 plugins WordPress en riesgo: MonsterInsights, Site Kit, PixelYourSite, Facebook/Pinterest/TikTok for WooCommerce, HubSpot, MC4WP y otros plugins que inyectan trackers por su cuenta.
- Cookies del lado servidor: snapshot con identificación automática del proveedor (_ga, _fbp, _gcl, etc.).
Puntuación y recomendaciones
El escaneo produce una puntuación de conformidad de 0 a 100 basada en la diferencia entre tus categorías declaradas y los trackers realmente detectados. Los problemas se clasifican en tres niveles — critical, warning, info — cada uno con una recomendación accionable (por ejemplo: un tracker de marketing detectado mientras la categoría está desactivada en el banner). Un escaneo automático también se ejecuta en segundo plano mediante el cron dfcc_cron_scan_trackers.
Registro de consentimiento
La página Cookie Consent → Registro lista cada evento de consentimiento guardado en la tabla dedicada wp_dfcc_consent_log.
Datos registrados
- Marca de tiempo UTC, UID anónimo persistente (trazabilidad multi-evento de un mismo visitante)
- Tipo de evento: accept_all, reject_all, custom, withdraw
- Estado completo por categoría, versión de la política y del banner
- IP doblemente protegida: hash SHA-256 con el salt aleatorio generado en la activación (irreversible), más IP truncada a /24 (IPv4) o /64 (IPv6) para análisis anónimo
- User agent, URL de la página, referer, región, idioma, user_id de WordPress si está conectado
Filtros y exportación
Filtra por período, tipo de evento o UID, y luego exporta a CSV (BOM UTF-8, separador punto y coma — se abre directamente en Excel francés) o a JSON pretty. Estas exportaciones constituyen tu prueba de consentimiento en caso de inspección de la CNIL o del Garante.
Retención
Por defecto, el registro se conserva 1825 días (5 años, duración recomendada por la CNIL). La purga automática se ejecuta cada noche mediante el cron dfcc_cron_purge_logs. La retención es ajustable en los ajustes. A tener en cuenta: la desactivación del plugin conserva los logs (prueba de consentimiento); solo la desinstalación completa vía Plugins → Eliminar purga la tabla, las opciones y los crons.
Enlace «Gestionar mis cookies» en el pie de página
La normativa exige que el visitante pueda modificar su elección en cualquier momento. Dos opciones:
- Shortcode: coloca
Gestionar mis cookiesen un widget o menú del pie de página — genera un enlace que reabre la modal de personalización. - API JavaScript: llama a
window.dfcc.open()desde cualquier elemento de tu tema.
API para desarrolladores
API JavaScript
El objeto global window.dfcc expone:
dfcc.open()— abre la modal de personalizacióndfcc.accept()— acepta todas las categoríasdfcc.reject()— rechaza todas las categorías opcionalesdfcc.withdraw()— retira el consentimiento (se registra un evento withdraw)dfcc.getConsent()— devuelve el estado completo del consentimientodfcc.hasConsent('analytics')— comprueba una categoría dada (útil para condicionar tus propios scripts)
Endpoint REST
Un endpoint POST está disponible en wp-json/dfcc/v1/consent para registrar un evento de consentimiento desde tu propio código (protegido por nonce).
Hooks de WordPress
dfcc_before_banner_render— acción disparada antes del renderizado del banner (para ocultarlo en ciertas páginas por ejemplo)dfcc_after_consent_logged— acción disparada después de cada escritura en el registro (para sincronizar un CRM por ejemplo)dfcc_consent_mode_defaults— filtro sobre los estados por defecto de las 7 señales Consent Modedfcc_scan_trackers_patterns— filtro para añadir tus propios patrones de detección al escáner
Solución de problemas
- Las señales Consent Mode no aparecen antes de GTM: comprueba que ningún plugin de rendimiento desplaza o difiere los scripts del head. El bloque dfcc-consent-mode-default debe permanecer inline y no diferido.
- El banner reaparece en cada visita: comprueba que un sistema de caché no está sirviendo una página congelada con un cookie antiguo, y que la duración del cookie no está a 0.
- El escaneo de auditoría falla: el servidor debe poder hacer una petición HTTP a su propia página de inicio. En algunos alojamientos con loopback bloqueado, autoriza las peticiones locales o comprueba el cortafuegos.
- Las IPs registradas son las de Cloudflare: el plugin lee CF-Connecting-IP con prioridad — si el problema persiste, comprueba que tu configuración de servidor transmite bien las cabeceras de Cloudflare.