Caso real 04 · Privacidad · Consent Mode

El banner de cookies estaba, pero no bloqueaba nada

Una revisión rutinaria de una etiqueta nueva acabó mostrando que las herramientas de terceros se disparaban antes de que el visitante aceptara las cookies. La causa era una sola pieza que faltaba en la inicialización.

Caso real, cliente anonimizado. El nombre del cliente, las personas y los datos internos se omiten por confidencialidad. Las cifras salen de logs, Search Console, GA4 y del propio código. Si un dato de negocio no se midió, no aparece.
11etiquetas de terceros sin bloqueo
1causa raíz
4señales de consentimiento por defecto
0cambios en producción sin aprobación
Contexto

El punto de partida.

Contenedor de Google Tag Manager con analítica, publicidad, mapas de calor, píxeles sociales, CRM y una herramienta de identificación de empresas visitantes. Un gestor de consentimiento (CMP) mostraba el banner y Consent Mode figuraba como «configurado».

El encargo era revisar una etiqueta recién añadida. Técnicamente funcionaba, pero en una sesión limpia enviaba datos antes de que el visitante aceptara nada. Con tráfico europeo, eso es un problema de RGPD.

Síntomas observados

  • Beacon de la etiqueta nueva con respuesta 204 antes de interactuar con el banner.
  • Tag Assistant, con el banner sin aceptar: se disparaban todas las etiquetas.
  • Incluso las 8 etiquetas que ya había condicionado con «consentimiento adicional» se disparaban igual.
Diagnóstico

Hipótesis descartadas antes de tocar nada.

Lo que parecía obvio y no era. Descartar bien ahorra días de trabajo en la dirección equivocada.

Fallo de la etiqueta nueva

El comportamiento se repetía en todas las etiquetas de terceros, no solo en esa.

Cookies ya aceptadas en el navegador

Pruebas en incógnito y con almacenamiento limpio daban el mismo resultado.

Las etiquetas de Google

Traían el consentimiento integrado, pero sin estado por defecto también lo trataban como concedido.

Implementación

Qué hice, paso a paso.

Inventario por tipo de consentimiento

Vista de consentimiento del contenedor: Google con consentimiento integrado; terceros sin ninguna condición.

Prueba con el banner sin aceptar

Además de las 8 conocidas aparecieron 3 más: un píxel base social, un snippet de CRM y un tracker de empresas visitantes.

Causa raíz

En el evento Consent Initialization: «Default consent state has not been set». Sin estado por defecto, Consent Mode asume concedido y ninguna condición bloquea nada.

Corrección en un workspace aparte

Etiqueta de la CMP en Consent Initialization con valores por defecto denegados, soporte de Google Consent Mode activado en la CMP y condiciones en todas las etiquetas de terceros.

Coordinación antes de publicar

Publicar reduce la recogida de datos previa al consentimiento en todo el sitio, así que el cambio se documentó y se sometió a aprobación.

Mantenimiento

Tarea mensual para escanear y clasificar las cookies en la CMP cada vez que entra una integración nueva.

Bajo el capó

El código que importa.

Fragmentos simplificados y sin datos del cliente, para que se vea el enfoque técnico real.

Estado por defecto que faltaba (equivalente en gtag)javascript
gtag('consent', 'default', {
  ad_storage: 'denied',
  analytics_storage: 'denied',
  ad_user_data: 'denied',
  ad_personalization: 'denied',
  security_storage: 'granted',
  wait_for_update: 500
});
Prueba rápida en consola, con el banner sin aceptarjavascript
performance.getEntriesByType('resource')
  .map(r => new URL(r.name).hostname)
  .filter(h => /facebook|linkedin|hotjar|clarity|doubleclick/.test(h));
// Debe devolver [] hasta que el visitante acepte
Decisiones

Por qué así y no de otra forma.

No publicar sin aprobación

El cambio es correcto, pero afecta a métricas de negocio. Se prepara, se documenta y se publica coordinado.

Arreglar la inicialización, no etiqueta por etiqueta

Sin estado por defecto, condicionar etiquetas no sirve de nada.

Resultado

Qué cambió, con datos verificables.

IndicadorAntesDespuésContexto
Etiquetas de terceros sin consentimiento11Todas condicionadasen workspace
Estado por defectoNo definidoDenegado4 señales
Contenedor en producción—Intactohasta aprobación
Revisión de cookiesPuntualMensualtarea recurrente

Cómo lo validé

  • Tag Assistant: ninguna etiqueta de terceros antes de aceptar.
  • Red del navegador en incógnito: cero peticiones a terceros sin consentimiento.
  • Tras aceptar: todas las etiquetas se disparan correctamente.
Lo que me llevo

Condicionar etiquetas sin un estado por defecto denegado no sirve para nada. Es lo primero que miro en cualquier auditoría de consentimiento.

  • Google Tag Manager
  • GA4
  • Consent Mode v2
  • CMP de cookies
  • Tag Assistant
Para tu web

Checklist rápida: ¿te está pasando lo mismo?

  • ¿Aparece «Default consent state has not been set» en Tag Assistant?
  • ¿La etiqueta de la CMP se dispara en Consent Initialization?
  • ¿Las etiquetas de terceros exigen consentimiento adicional?
  • ¿Pruebas con el banner sin aceptar, en incógnito?
¿Te suena?

¿Tienes un problema parecido?

Preguntas frecuentes

Dudas habituales sobre este tipo de problema.

¿Tener banner de cookies significa cumplir el RGPD?

No. El banner tiene que bloquear de verdad las etiquetas hasta que haya consentimiento, y eso se comprueba sin aceptarlo.

¿Qué es el estado por defecto de Consent Mode?

El valor fijado antes de que el usuario decida. Si no es denegado, Google trata el consentimiento como concedido.

¿Bloquear reduce los datos de analítica?

Sí. Por eso se coordina y se activa el modelado de conversiones donde esté disponible.

WordPress · SEO técnico · IA

Cuéntame qué está frenando tu web.

Si ya tienes un WordPress en producción, reviso el contexto y te digo con honestidad si lo que necesitas es desarrollo, SEO técnico, rendimiento o automatización.