Google Consent Mode v2 WordPress

Google Consent Mode v2 WordPress

🎤 Escucha el podcast sobre: Google Consent Mode v2 WordPress

0:00 / 0:00 📥 Descargar
Google Consent Mode v2 WordPress

Google puede dejar de medir tus conversiones si el banner de cookies no está bien configurado. Esto es lo que pasó y cómo se resolvió.

Todo empezó con un e-mail del equipo técnico de Google: las etiquetas de seguimiento de una web médica no funcionaban correctamente. Había sesiones de implementación previas, revisiones con los equipos de marketing y de Tag Manager, y cada vez que terminaba una sesión todo parecía resuelto. Pero las conversiones seguían sin medirse bien.

Este artículo documenta el proceso completo de diagnóstico e implementación de Google Consent Mode v2 (GCM v2) en un sitio WordPress: el problema exacto que detectó Google, las herramientas utilizadas para reproducirlo, y la solución técnica aplicada paso a paso.

Qué es Google Consent Mode v2

Google Consent Mode v2 es un framework que ajusta el comportamiento de las etiquetas de Google (Google Ads, Google Analytics) según la decisión del usuario en el banner de cookies. Desde marzo de 2024 es obligatorio para sitios que utilizan publicidad de Google en la Unión Europea.

Gestiona cuatro señales principales:

  • ad_storage — almacenamiento de cookies publicitarias
  • analytics_storage — almacenamiento de datos de analítica
  • ad_user_data — uso de datos del usuario para anuncios
  • ad_personalization — personalización de anuncios

Cuando el usuario rechaza las cookies, estas señales permanecen en estado denied. En modo avanzado (el recomendado), Google Tag Manager sigue cargándose y envía pings anónimos que permiten modelar estadísticamente los datos perdidos, sin comprometer la privacidad del usuario.

En modo avanzado, GTM carga siempre — incluso si el usuario rechaza. Lo que cambia es qué datos envía, no si se carga.

Un caso habitual que suele pasarse por alto: el usuario que ignora el banner y navega sin pulsar ningún botón. En ese escenario el consent default permanece activo — todo en denied — y GTM sigue funcionando en modo anónimo. La web opera con normalidad para el visitante y Google recibe las señales correctas de consentimiento denegado.

Orden de carga (prioridad -1 en wp_head)

consent default
Todo denied al inicio

GTM-5W7ZVBP5
Carga siempre

CookieYes
Banner de cookies


Decisión del usuario en el banner

Aceptar todo
Todo granted
Etiquetas activas

Rechazar todo
Todo denied
Pings anónimos

Personalizar
Parcial
Según categorías

Herramientas y plugins involucrados

Google Tag Manager (GTM)

Contenedor donde se configuran todas las etiquetas de seguimiento. En lugar de insertar código de cada herramienta directamente en la web, todo pasa por GTM. URL: tagmanager.google.com

Tag Assistant

Herramienta de diagnóstico de Google que verifica que GTM y sus etiquetas funcionan correctamente. Accesible desde el botón «Vista previa» de Tag Manager o directamente en tagassistant.google.com

CookieYes | GDPR Cookie Consent

Plugin de WordPress (v3.5.1) que gestiona el banner de cookies y comunica el consentimiento del usuario a GTM mediante la API de GCM. CMP certificada por Google. Se gestiona desde el panel de WordPress y desde su web app en app.cookieyes.com

Code Snippets

Plugin de WordPress utilizado para inyectar código PHP personalizado sin modificar el functions.php del tema.

Only GTM (descartado)

Plugin inicialmente instalado para inyectar el fragmento de GTM. Fue desactivado al integrar GTM directamente en el snippet PHP, evitando así que CookieYes pudiera bloquearlo.

Google Consent Mode Checker

Herramienta gratuita de CookieYes para verificar que GCM está correctamente configurado en un sitio web. URL: cookieyes.com/google-consent-mode-checker

El problema

El e-mail de Google describía el síntoma con precisión: el CMP estaba bloqueando completamente las etiquetas cuando el usuario rechazaba las cookies. Pero reproducirlo no fue inmediato — con el banner aceptado, Tag Assistant conectaba sin problemas y todo parecía correcto. Solo al rechazar el consentimiento la herramienta fallaba y dejaba de conectar.

«Es posible que una plataforma de gestión de consentimiento (CMP) esté bloqueando las etiquetas, impidiendo que se carguen las etiquetas de Google o Tag Manager.»
— Mensaje de alerta de Google Tag Assistant

La causa raíz estaba en el orden de carga: el plugin Only GTM inyectaba GTM después de CookieYes en el HTML, lo que permitía a CookieYes interceptarlo y bloquearlo cuando el usuario rechazaba. GTM nunca llegaba a cargarse, y sin GTM las señales de consentimiento nunca se enviaban a Google. El resultado era pérdida total de visibilidad de todos los usuarios que rechazaban — sin posibilidad de modelado estadístico.

La solución

1. Inyectar GTM antes que CookieYes mediante snippet PHP

El fragmento de GTM se integró en un snippet PHP con prioridad -1 en el hook wp_head, garantizando que se ejecuta antes que cualquier otro script, incluido CookieYes. En el mismo snippet se añadió el consent default con todas las señales en denied.

add_action('wp_head', function() {
  ?>
  <script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('consent', 'default', {
      'ad_storage': 'denied',
      'analytics_storage': 'denied',
      'ad_user_data': 'denied',
      'ad_personalization': 'denied',
      'functionality_storage': 'granted',
      'personalization_storage': 'denied',
      'security_storage': 'granted'
    });
  </script>
  <!-- Google Tag Manager -->
  <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-5W7ZVBP5');</script>
  <!-- End Google Tag Manager -->
  <?php
}, -1);

El orden resultante en el HTML es el correcto:

  1. consent default (todo denegado)
  2. GTM
  3. CookieYes

2. Desactivar el plugin Only GTM

Una vez GTM se inyecta mediante el snippet, el plugin Only GTM queda redundante y se desactiva para evitar duplicidad.

3. CookieYes gestiona el consent update

CookieYes se encarga automáticamente de enviar el consent update al dataLayer según la elección del usuario en el banner, actualizando las señales a granted o manteniéndolas en denied según corresponda.

4. Problema con ModSecurity

Al implementar el snippet con el código GTM, el firewall de aplicaciones web ModSecurity (reglas Comodo) bloqueó la web con error 403, identificando el iframe de GTM como contenido potencialmente malicioso (regla 214540).

Si el servidor utiliza ModSecurity con reglas Comodo, es probable que la regla 214540 bloquee el iframe de GTM. La solución es desactivar esa regla específica para el dominio desde Plesk, sin afectar al resto del servidor.

Mejoras adicionales en el banner de cookies

Aprovechando la revisión, se corrigieron dos incumplimientos del RGPD en el banner de cookies:

  • Botón «Rechazar todo» visible en el banner principal. El RGPD exige que rechazar sea igual de fácil que aceptar. Tener el botón de rechazo solo en el panel de preferencias no es suficiente.
  • Idioma en español. El banner estaba configurado en inglés, lo que no es adecuado para un sitio dirigido a usuarios hispanohablantes.

Verificación

La verificación se realizó con Tag Assistant en los tres escenarios de interacción posibles. El estado por defecto — que se aplica tanto antes de interactuar con el banner como cuando el usuario lo ignora y navega directamente — produce el mismo resultado que «Rechazar todo»: todas las señales en denied excepto functionality_storage y security_storage, que permanecen en granted. En todos los casos GTM cargó correctamente y las señales fueron las esperadas:

Señal Por defecto Aceptar todo Rechazar todo
ad_storage denied granted denied
analytics_storage denied granted denied
ad_user_data denied granted denied
ad_personalization denied granted denied
functionality_storage granted granted granted
security_storage granted granted granted

El escenario «Personalizar» no aparece en la tabla porque los valores varían según las categorías que active el usuario. Por ejemplo, activar únicamente la categoría «Anuncio» pone ad_storage, ad_user_data y ad_personalization en granted, manteniendo el resto en denied.

Las cinco etiquetas de conversión configuradas en GTM se verificaron individualmente, confirmando que cada una se activa con la acción correspondiente del visitante:

Contenedor GTM — GTM-5W7ZVBP5
Etiqueta Activador
Etiqueta Google Ads
AW-949535401
Carga de página
Vinculación de conversiones Carga de página
Formulario Envío de formulario
Teléfono Clic en teléfono
WhatsApp Clic en WhatsApp

Las tres acciones de conversión — llamada, WhatsApp y formulario — se registran correctamente en Google Ads, lo que permite saber con precisión qué acciones publicitarias generan contactos reales.

Por qué importa medir bien las conversiones: el ROAS

El ROAS (Return On Ad Spend, o retorno sobre la inversión publicitaria) mide cuánto ingreso genera cada euro invertido en publicidad. Si Google Ads no registra correctamente las conversiones, el algoritmo de pujas no puede optimizar las campañas y el presupuesto se distribuye sin criterio.

Con el seguimiento de conversiones funcionando correctamente, Google Ads sabe qué anuncios, palabras clave y audiencias generan citas reales — y puede redirigir automáticamente el presupuesto hacia lo que funciona. Sin ese dato, la inversión publicitaria es ciega.

En el caso de una clínica médica, las conversiones no son ventas directas sino intenciones de contacto: llamadas, mensajes de WhatsApp y solicitudes de cita. Medir cada una de esas intenciones con precisión es lo que transforma la publicidad de Google en una herramienta con criterio, en lugar de un gasto difícil de justificar.

Conclusión

Al final resultó que el problema no era complejo: era de orden. GTM llegaba tarde, CookieYes lo interceptaba, y Google se quedaba sin datos. Moverlo unas líneas arriba en el HTML, con prioridad -1, fue suficiente para que todo encajara. La implementación correcta de GCM v2 requiere que GTM cargue antes que el CMP, que el consent default se establezca antes de cualquier interacción del usuario, y que el CMP actualice las señales correctamente según la elección del usuario.

La verificación con Tag Assistant es la prueba definitiva. Herramientas de verificación automática como el Google Consent Mode Checker solo comprueban la existencia del consent default, no el comportamiento completo al rechazar.

Desde el punto de vista legal, el RGPD no solo exige gestionar el consentimiento técnicamente — también exige que el banner sea accesible, en el idioma del usuario, y que rechazar sea igual de sencillo que aceptar. Dos detalles fáciles de pasar por alto que, en este caso, también se corrigieron.

La implementación descrita en este artículo se realizó sobre ginesaenz.com, web de la consulta del ginecólogo Sáenz de Santamaría. Cualquier profesional técnico puede verificar el comportamiento del banner y las señales GCM directamente en esa URL.

image_pdfVer en formato PDFimage_printFormato para IMPRIMIR

🎤 Escucha el podcast sobre: Google Consent Mode v2 WordPress

0:00 / 0:00 📥 Descargar
Google Consent Mode v2 WordPress
Andy Garcia

Andy Garcia

Informático vocacional. Programador Web, WordPress, SEO, IA y eCommerce. Sin pócimas ni milagros. Apasionado por la tecnología, el aprendizaje continuo y la excelencia.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *