El banner de cookies dice "Rechazado", pero el seguimiento sigue cargando: cómo comprobarlo y corregirlo

El banner de cookies dice "Rechazado", pero el seguimiento sigue cargando: cómo comprobarlo y corregirlo

Actualizado: 27 de octubre de 2026
16 min de lectura
Guía
Auditor de seguridad
Estratega de marketing

El 22 de octubre de 2026 el dueño de una tienda Shopify preguntó en r/shopify cómo resuelven otros los scripts que siguen cargando después de que el visitante pulse Rechazar. El banner decía una cosa y el navegador hacía otra. Es el problema de cookies más habitual en cualquier plataforma: el banner guarda la elección, pero nada en la página está conectado para obedecerla. WooCommerce, Shopify, una tienda headless en Next.js o Astro y un WordPress normal fallan igual, porque las fugas vienen de vídeos insertados, fuentes, código del tema y configuración de etiquetas, no del plugin del banner.

Esta guía muestra cómo comprobar, solo con el navegador, qué envía tu web después de Rechazar, qué peticiones se escapan con más frecuencia, qué transmite a propósito el modo de consentimiento avanzado de Google y cómo bloquear cada una. Cada punto remite a la norma, la sentencia o la documentación del proveedor. Es una guía práctica de pruebas, no asesoramiento jurídico.

#Por qué siguen cargando scripts después de rechazar las cookies

La publicación que abrió el hilo lo resumía así:

Los píxeles de las apps son fáciles. Shopify se encarga de ellos. ¿Todo lo demás? Vídeos de YouTube, Google Fonts, widgets de chat, scripts de SEO y analítica: nada. En enero de 2022, un tribunal de Múnich concedió 100 euros a un visitante porque una web pasó su dirección IP a Google a través de Google Fonts, sin consentimiento.

(u/Plus_Cell394, r/shopify, 22 de octubre de 2026, traducción propia)

Un banner solo controla lo que está registrado en él. El código fijo en el tema, pegado en un campo del pie, añadido por un bloque de inserción o cargado por un plugin que ignora la interfaz del banner se ejecuta al cargar la página, sea cual sea la respuesta. El banner muestra “Rechazado” y acierta sobre su propio estado. La página simplemente nunca le preguntó.

#Artículo 22.2 de la LSSI y la guía de cookies de la AEPD

En España la regla está en el artículo 22.2 de la LSSI: los prestadores pueden usar dispositivos de almacenamiento y recuperación de datos en los equipos de los usuarios siempre que estos hayan dado su consentimiento tras recibir información clara y completa sobre su uso.

La Guía sobre el uso de las cookies de la AEPD, actualizada en mayo de 2024, concreta el banner: la opción de rechazar debe ofrecerse en la misma capa y al mismo nivel que la de aceptar, con un mecanismo similar; si se usa un botón para aceptar, debe usarse un botón para rechazar. Un banner que cumple eso en pantalla y luego no bloquea nada es justo el caso de este artículo.

A nivel europeo, el TJUE declaró en Planet49 (C-673/17) que una casilla premarcada no es consentimiento válido y que el artículo 5.3 de la Directiva ePrivacy se aplica sea o no dato personal la información. Las Directrices 2/2023 del CEPD sobre el alcance técnico de ese artículo (versión 2.0, adoptada el 7 de octubre de 2024) incluyen el JavaScript con el que una entidad ordena al navegador enviar peticiones asíncronas con información, y dedican apartados a los píxeles de seguimiento y al seguimiento solo por dirección IP. “No usamos cookies” no cierra la cuestión. Si encaja una excepción es una pregunta jurídica. Si la petición ocurre, lo puedes comprobar tú.

#Qué diseños de banner han cuestionado ya las autoridades europeas

El informe de la Cookie Banner Taskforce del CEPD, adoptado el 17 de enero de 2023, recoge prácticas que las autoridades nacionales examinaron en reclamaciones coordinadas. Encaja con lo que pide la guía de la AEPD y se comprueba en la misma sesión que la prueba de red:

  • Sin botón de rechazar en la primera capa. Una amplia mayoría de autoridades consideró infracción un banner con botón de aceptar y sin opción de rechazo en esa misma capa.
  • Casillas premarcadas en la segunda capa. El grupo confirmó que no dan un consentimiento válido.
  • Un enlace en lugar de un botón para rechazar, y colores o contraste que destacan “aceptar todo”. El informe dice que el contraste se valora caso por caso, sin un estándar fijo.
  • Cookies etiquetadas como esenciales que no lo son. El informe recuerda que el titular de la web debe mantener la lista de cookies al día y poder demostrar por qué cada una es esencial.
  • Ninguna forma sencilla de retirar el consentimiento. Se espera un enlace o un pequeño icono siempre visible que vuelva a abrir la configuración de privacidad. En Shopify, privacyBanner.showPreferences() abre el panel de preferencias; en Cloudflare Zaraz, zaraz.showConsentModal() reabre la ventana de consentimiento.

#Cómo comprobar el banner de cookies con las herramientas para desarrolladores

Chrome, Brave, Firefox y Edge funcionan igual aquí.

  1. Abre un perfil nuevo o una ventana privada sin extensiones. Los bloqueadores de anuncios ocultan justo las peticiones que buscas.
  2. Abre las herramientas para desarrolladores antes de cargar la página. En la pestaña Network marca “Preserve log” y “Disable cache”.
  3. Carga la portada sin tocar el banner. Apunta cada dominio externo. Antes de elegir, no debería cargar nada opcional.
  4. Pulsa Rechazar y recorre una ficha de producto, una página con vídeo, la de contacto y el carrito. Las fugas suelen estar en plantillas que la portada no usa.
  5. Filtra la lista por trozos de dominio: google, gstatic, doubleclick, facebook, tiktok, youtube, hotjar, clarity, el nombre de tu proveedor de chat.
  6. En la pestaña Application (Storage en Firefox) revisa Cookies, Local storage y Session storage de cada origen. Todo lo que vaya más allá del registro del rechazo y las cookies funcionales de sesión necesita explicación.
  7. Repite con Aceptar para confirmar que las herramientas funcionan cuando están permitidas.

Anota el resultado en una tabla: dominio, página, antes de elegir, tras Rechazar, tras Aceptar. Esa tabla es tu lista de arreglos.

#Qué se escapa con más frecuencia tras pulsar Rechazar

OrigenCómo aparece en NetworkCausa habitual
YouTube o Vimeo insertadoyoutube.com, ytimg.com, googlevideo.com al cargar la páginaiframe normal en el contenido o en un bloque del tema
Google Fontsfonts.googleapis.com y fonts.gstatic.comEl tema o un plugin carga las fuentes desde Google en vez de archivos locales
Widget de chatScript del proveedor y websocket en cada páginaCódigo pegado en el pie o en los ajustes del tema
Mapasmaps.googleapis.com, teselas del mapaBuscador de tiendas o mapa en la página de contacto
Píxeles fijos en el temaconnect.facebook.net, analytics.tiktok.com, etiquetas de Google AdsCódigo en los campos de cabecera, fuera del sistema de consentimiento
Etiquetas del gestor de etiquetasSe disparan en la vista previa de GTM con consentimiento denegadoEtiquetas sin ajustes de consentimiento o activadores en todas las páginas

Google describe el modo de privacidad mejorada de YouTube (youtube-nocookie.com) como que las reproducciones insertadas no influyen en la personalización del espectador en YouTube. No dice que el reproductor no envíe nada a Google, así que cambiar el dominio no basta.

Las fuentes tienen sentencia. El tribunal regional de Múnich (LG München I, 3 O 17493/20, 20 de enero de 2022) consideró que pasar la IP dinámica de un visitante a Google mediante Google Fonts sin consentimiento vulneraba sus derechos, ordenó cesar y concedió 100 euros de indemnización. El tribunal razonó que Google Fonts se puede usar sin que el navegador se conecte a un servidor de Google.

Actualización del . La misma fuga aparece en fichas de producto de WooCommerce con vídeo en la galería. Un reproductor de YouTube o Vimeo insertado es una carga de terceros que arranca al abrir la página, salvo que una portada ocupe su lugar hasta que el visitante pulse reproducir. Lo cambiamos en nuestro plugin Reel, que añade vídeo a la galería de producto de WooCommerce. Desde la versión 1.0.27, los vídeos de YouTube y Vimeo muestran una portada con botón de reproducción, y el reproductor solo se carga cuando el cliente lo pulsa. Quien nunca le da al play no carga nada del reproductor, YouTube se reproduce desde youtube-nocookie.com y la portada llena el marco 16:9 reservado, así que nada se mueve. Con reproducción automática, el reproductor se inserta directamente, como antes. En la versión 1.1.0, con el vídeo como última diapositiva de la galería, el reproductor también se carga solo con un clic y la reproducción automática no se aplica. Revisa tu tienda en la pestaña Network con el consentimiento rechazado. Si aparecen peticiones a youtube.com, ytimg.com o dominios de Vimeo antes de cualquier clic, la inserción necesita una portada con carga al hacer clic.

#Modo de consentimiento v2 de Google: qué siguen enviando el básico y el avanzado

Si ves peticiones a Google Analytics tras Rechazar, comprueba primero qué modo usas. La descripción del modo de consentimiento distingue dos:

  • Básico: las etiquetas de Google quedan bloqueadas hasta que el visitante interactúa con el banner. Según Google, antes del consentimiento no se envía nada, ni siquiera el estado por defecto.
  • Avanzado: las etiquetas cargan enseguida con denegación por defecto. Mientras no hay consentimiento, envían el estado y mediciones sin cookies. Con analytics_storage denegado, Google Analytics no lee ni escribe sus cookies, pero las mediciones siguen llegando a dominios de Analytics “para medición básica y modelado”.

El modo avanzado genera peticiones a Google tras Rechazar a propósito. Si eso vale para tu web es justo la pregunta del artículo 22.2 de la LSSI, que decides con tu asesor y no con la etiqueta. El manual de implementación de Google señala dos errores que provocan fugas reales en ambos modos: el comando con el estado por defecto debe ejecutarse antes de config y event, y un banner que carga de forma asíncrona necesita wait_for_update.

#Shopify, WooCommerce y headless: dónde el código esquiva el banner

Según la documentación de Shopify sobre píxeles web, las extensiones de píxel de aplicaciones respetan la Customer Privacy API y en regiones que exigen consentimiento solo se ejecutan después de obtenerlo. El código del tema no tiene esa protección. Para él está la Customer Privacy API, con analyticsProcessingAllowed(), marketingAllowed() y el evento visitorConsentCollected. El estado por defecto depende de los ajustes de privacidad de la tienda: en regiones sin exigencia de consentimiento todo está permitido, así que un mercado mal configurado parece un banner roto.

En WooCommerce, WordPress y headless no hay entorno aislado de plataforma. En un hilo de r/woocommerce de octubre de 2026 sobre qué plugin de consentimiento elegir, una respuesta señaló los dos huecos que se pasan por alto con GTM:

Consent Mode solo habla con las etiquetas de Google. Tu píxel de Meta no lee esas señales. […] No todos los píxeles viven en GTM. Los plugins de WooCommerce (Meta for WooCommerce, Google for WooCommerce y similares) suelen meter su propio píxel directamente en la página. La vista previa de GTM no los muestra en absoluto.

(u/Bignose_boy, r/woocommerce, 12 de octubre de 2026, traducción propia)

Si tras Aceptar ves dos peticiones a fbevents.js, el píxel está cargado dos veces, por GTM y por un plugin. Revisa los campos de código de cabecera y pie, los plugins que imprimen sus propias etiquetas y el contenido insertado en las entradas. Nuestra guía de Google Analytics 4 explica cómo conectar las etiquetas de Google al consentimiento, y el artículo sobre scripts de terceros muestra cómo ver qué carga cada script.

Actualización del . La herramienta de consentimiento también es código que se ejecuta en cada página, así que necesita actualizaciones y vigilancia como cualquier otro plugin. El informe semanal de vulnerabilidades de Wordfence del 12 al 18 de octubre de 2026 incluye cuatro plugins de consentimiento. En Complianz hasta la versión 7.5.5 un visitante sin sesión podía dejar en el contenido de un comentario un script persistente (stored XSS) que solo se ejecuta cuando el comentario se aprueba; la versión 7.5.6 lo corrige. WPConsent hasta 1.1.9 tenía un fallo parecido a través de comentarios con la función Script Blocking activada (corregido en 1.2.0). Record of Consent Extension for Complianz hasta 2.5 guardaba script inyectado mediante el parámetro uid (corregido en 2.6), y Lightweight Cookie Notice hasta 1.19 llevaba escrita en el código una clave de seguridad de W3 Total Cache conocida públicamente, lo que importa si tu sitio también usa W3 Total Cache (corregido en 1.20). Mete el plugin de consentimiento en el mismo calendario de actualizaciones y en las mismas alertas de vulnerabilidades que el resto de la instalación. Nuestra auditoría de seguridad WordPress incluye esa revisión.

#Cómo averiguar qué script o plugin hizo la petición

La referencia del panel Network de Chrome describe las herramientas para pasar de “algo se escapa” a “esto lo carga este archivo”:

  • More filters > 3rd-party requests oculta todo lo que viene de tu propio origen. Tras Rechazar solo quedan las peticiones que hay que justificar.
  • El filtro domain: admite comodín, por ejemplo domain:*.google.com, y puedes combinar varias propiedades separadas por un espacio. cookie-name: muestra qué respuesta fijó una cookie concreta.
  • La columna Initiator dice si la petición salió del analizador HTML, de una redirección o de un script, y en los scripts enlaza a la línea exacta del archivo fuente. Ahí ves si el culpable es el tema, un plugin, el contenedor del gestor de etiquetas o un fragmento pegado.
  • Network request blocking bloquea un patrón de URL. Bloquea el dominio sospechoso, recarga y mira si algo se rompe antes de quitarlo de verdad.

Para guardar la prueba, usa Export HAR (sanitized). Chrome omite en esa exportación datos sensibles como las cookies, así que el archivo puede ir adjunto a una incidencia. Haz una exportación tras Rechazar y otra tras Aceptar.

#Cómo revisar el consentimiento en Google Tag Manager etiqueta por etiqueta

La ayuda de Tag Manager sobre el modo de consentimiento describe tres funciones clave:

  1. Activador Consent Initialization - All Pages. Lo tiene cada contenedor web. Se dispara antes que cualquier otro activador, incluido Initialization, y sirve solo para etiquetas que fijan o actualizan el consentimiento, como la plantilla del banner. Si el banner va en un activador posterior, otras etiquetas se disparan antes de que exista estado de consentimiento.
  2. Additional Consent Checks en cada etiqueta (Advanced Settings > Consent Settings). El valor por defecto “Not set” significa que no hay comprobación adicional. Con “Require additional consent for tag to fire”, la etiqueta solo se dispara si todos los tipos de consentimiento indicados están concedidos. Una etiqueta sin comprobaciones integradas, como un píxel de Meta pegado como Custom HTML, se dispara si no, elija lo que elija el visitante.
  3. Consent Overview. Se activa en Admin > Container Settings. Separa las etiquetas en “Consent Not Configured” y “Consent Configured” y permite editar varias a la vez. Cada etiqueta de marketing del primer grupo es una fuga probable.

Después compruébalo en Tag Assistant. La guía de Google para depurar el modo de consentimiento indica que elijas el primer evento Consent del resumen, confirmes que se fijaron ad_storage, ad_user_data, ad_personalization y analytics_storage, y compares las columnas On-page Default y On-page Update. Un error típico es fijar el estado por defecto tarde: la página se abre, se dispara una etiqueta de anuncios y solo entonces el estado pasa a denied. Google desaconseja además llamar al comando de consentimiento de gtag desde una etiqueta Custom HTML.

  • WordPress y WooCommerce: WP Consent API unifica cómo se comunican las categorías de consentimiento entre el plugin del banner y otros plugins, pero no gestiona el consentimiento por sí solo. Según su descripción, si ningún plugin de consentimiento fija el tipo de consentimiento, la función devuelve false y todas las categorías cuentan como permitidas. Los iframes de terceros siguen necesitando el bloqueo del plugin de consentimiento.
  • Next.js: la documentación de @next/third-parties indica que GoogleTagManager carga el contenedor tras la hidratación y que YouTubeEmbed usa lite-youtube-embed. Ninguno comprueba el consentimiento. lite-youtube-embed usa youtube-nocookie.com, pero la miniatura por defecto se carga desde i.ytimg.com, un dominio de Google, antes de cualquier clic.
  • Cloudflare Zaraz: la documentación de gestión del consentimiento de Zaraz explica que una herramienta recién añadida no tiene finalidad asignada y se salta el consentimiento por defecto. Asigna una finalidad a cada herramienta o se cargará para todos.

#Tabla de diagnóstico: síntoma, causa y dónde mirar

Qué ves tras RechazarCausa probableDónde mirar
Peticiones a Google Analytics, sin cookie _gaEl modo de consentimiento avanzado funciona como está previstoLa elección del modo, no la etiqueta
Aparecen cookies _ga o _gclFalta el estado por defecto o se fija después de las etiquetasTag Assistant, primer evento Consent
Se dispara el píxel de Meta o TikTokEtiqueta con “Not set” o píxel de un plugin fuera de GTMConsent Overview, columna Initiator
Fuga solo en fichas de producto o entradasInserción o widget en esa plantillaPrueba en cada plantilla
Fuga solo en algunos paísesValores regionales o regiones de Shopify que olvidan un paísUbicación simulada en Chrome, ajustes de privacidad de la tienda
Tras retirar el consentimiento los scripts siguenEl banner guarda la nueva elección pero no envía la actualizaciónEvento de actualización en Tag Assistant

#Cómo cerrar cada fuga

  • Vídeos y mapas: sustituye el iframe por un marcador que crea el iframe solo tras un clic o tras el consentimiento. Sirve la miniatura desde tu servidor, o será otra petición a terceros.
  • Fuentes: descarga los archivos, sírvelos desde tu dominio con @font-face y elimina cualquier enlace a fonts.googleapis.com.
  • Chat: muestra un botón local “Escríbenos” y carga el script del proveedor tras el clic o el consentimiento.
  • Píxeles fijos: muévelos al gestor de etiquetas o al sistema de píxeles de la plataforma, para que se aplique la comprobación del consentimiento.
  • Gestor de etiquetas: define requisitos de consentimiento en cada etiqueta y prueba en la vista previa con consentimiento denegado.

Después repite la prueba y vuelve a rellenar la tabla. Guárdala con la fecha: cuando cambies de tema, añadas un plugin o toques GTM, la repites y comparas columna por columna.

Nuestra auditoría de preparación UE para WooCommerce incluye esta prueba en cada plantilla, y el chequeo gratuito de sitio muestra las peticiones a terceros de una dirección pública.

Siguiente paso

Transforma el artículo en una implementación real

Este bloque refuerza el enlazado interno y lleva al lector al siguiente paso más útil dentro de la arquitectura del sitio.

Explora otros servicios WordPress y base de conocimiento

Preguntas frecuentes

Respuestas prácticas para aplicar el tema en la ejecución real.

Una petición sin cookie también necesita consentimiento#
Puede necesitarlo. Las directrices del CEPD tratan el JavaScript que hace que el navegador envíe información como acceso al equipo, y Planet49 dice que la regla se aplica tanto si hay datos personales como si no. Si encaja alguna excepción del artículo 22.2 de la LSSI es una valoración jurídica para tu caso.
Basta youtube-nocookie.com para frenar el seguimiento de YouTube#
No. Google describe el modo de privacidad mejorada como que las reproducciones del vídeo insertado no influyen en la personalización de YouTube del espectador. No dice que el reproductor deje de conectar con Google. Solo un marcador que crea el iframe tras un clic o tras el consentimiento evita la petición.
Por qué los píxeles de aplicaciones de Shopify funcionan bien y los scripts de mi tema no#
Las extensiones de píxel de aplicaciones se ejecutan en el entorno aislado de Shopify y respetan la Customer Privacy API de forma automática. Un script pegado en theme.liquid se ejecuta fuera de ese entorno y carga en cada visita hasta que lo condicionas a analyticsProcessingAllowed() o marketingAllowed().
Alojar Google Fonts en tu servidor resuelve el problema de la sentencia de Múnich#
Para las fuentes, sí: el tribunal razonó que Google Fonts se puede usar sin que el navegador se conecte a un servidor de Google. Después del cambio, comprueba que ningún plugin, tema o contenido insertado sigue cargando fonts.googleapis.com o fonts.gstatic.com.

Artículos Relacionados