← Todos los artículos

Cookies de GA4 antes del consentimiento: el default de Consent Mode llega tarde

Si GA4 escribe cookies antes de que el usuario responda al aviso, el problema suele ser el orden de carga: el estado por defecto de Consent Mode se declara tarde.

Paso 1 de 5 Así carga hoy la página: arranca Google Tag Manager y la etiqueta de GA4 envía el primer page_view.
  1. Así carga hoy la página: arranca Google Tag Manager y la etiqueta de GA4 envía el primer page_view.
  2. El aviso de cookies sigue sin respuesta, pero GA4 ya ha escrito sus cookies _ga.
  3. La causa: el estado por defecto de Consent Mode se declara después de la primera etiqueta.
  4. La solución: declarar el default (denied) antes que cualquier etiqueta, en Consent Initialization.
  5. Para verificarlo, revisa el parámetro gcs de cada hit: G100 antes de aceptar y G111 después.

Consent Mode es el mecanismo con el que las etiquetas de Google ajustan su comportamiento a la decisión del usuario sobre las cookies. Para que funcione, necesita conocer un estado antes de que se ejecute cualquier etiqueta: el estado por defecto. Cuando ese estado llega tarde, GA4 actúa como si el consentimiento estuviera concedido durante los primeros milisegundos de cada página, y esos milisegundos bastan para escribir cookies y enviar datos que no deberían existir.

Qué ocurre cuando el default de consentimiento llega tarde

La página empieza a cargar, Google Tag Manager arranca y la etiqueta de Google envía el primer page_view. Unos cientos de milisegundos después se ejecuta el comando consent default con analytics_storage: 'denied'. Para entonces, el navegador ya tiene las cookies _ga y _ga_<ID>, aunque el aviso de cookies siga en pantalla sin respuesta.

El problema es doble. Por un lado, es un incumplimiento: en la mayoría de jurisdicciones europeas no se pueden almacenar cookies de analítica sin consentimiento previo. Por otro, es un problema de calidad del dato: los hits enviados sin estado de consentimiento no se tratan igual que los que sí lo tienen, lo que distorsiona la modelización y los informes de consentimiento.

Por qué GA4 instala cookies antes de responder al aviso

El estado por defecto se declara en un punto de la carga que no es el primero. Los casos más habituales son:

  • La plataforma de gestión del consentimiento (CMP) se carga de forma asíncrona y declara el default cuando termina de inicializarse.
  • En GTM, la etiqueta que declara el default usa el activador All Pages en lugar de Consent Initialization – All Pages, de modo que compite con el resto de etiquetas.
  • El fragmento de gtag('consent', 'default', …) está en el <head>, pero después del fragmento de GTM o de gtag.js.

Cómo detectar cookies antes del consentimiento

  1. Abre la web en una ventana privada y, sin tocar el aviso de cookies, revisa Aplicación → Cookies en las herramientas de desarrollo. Si aparecen _ga o _ga_<ID>, hay un problema.
  2. Usa Tag Assistant y comprueba el orden de eventos: el primer evento de la lista debe ser Consent con el estado por defecto, antes de cualquier Container Loaded o etiqueta.
  3. En la pestaña Red, filtra por collect y revisa el parámetro gcs del primer hit. Si falta, el hit salió sin estado de consentimiento.
  • En GTM, mueve la etiqueta del estado por defecto (o la plantilla de tu CMP) al activador Consent Initialization – All Pages, que se ejecuta antes que cualquier otro.
  • Si declaras el default con gtag, colócalo en el <head> antes del fragmento de GTM o de gtag.js.
  • Si la CMP necesita tiempo para leer una decisión guardada, usa wait_for_update en el comando de default para que las etiquetas esperen unos milisegundos al consent update.
gtag('consent', 'default', {
  ad_storage: 'denied',
  ad_user_data: 'denied',
  ad_personalization: 'denied',
  analytics_storage: 'denied',
  wait_for_update: 500,
});

Documentación de Google sobre configurar el modo de consentimiento en webs.

Cómo verificar el consentimiento con el parámetro gcs

El parámetro gcs de cada petición a GA4 resume el estado: su forma es G1 seguido de dos dígitos, el primero para ad_storage y el segundo para analytics_storage (1 concedido, 0 denegado).

  • Antes de aceptar, no debe existir ninguna cookie de GA4. Con el modo avanzado, los hits que salgan deben llevar gcs=G100; con el modo básico, no debe salir ningún hit.
  • Tras aceptar, el siguiente hit debe llevar gcs=G111 y las cookies deben crearse en ese momento.

Repite la prueba rechazando el aviso y con una decisión ya guardada, que es el caso en el que más a menudo aparece una carrera entre la CMP y las etiquetas.