LOS NÚMEROS QUE IMPORTAN
700
1.000
2–5×
18 %
En agosto revisé la medición de una tienda online de pan sin gluten. Google Ads decía 1.218 clics en el periodo. Analytics, 217 sesiones de tráfico de pago. El banner de cookies funcionaba, los pedidos entraban y el TPV cobraba. Y nadie sabía explicar dónde estaba el 82 % restante.
LOS DATOS DEL CASO
Lo que veía cada herramienta en el mismo periodo
Tienda online de pan sin gluten, agosto de 2026: 1.218 clics en Google Ads frente a 217 sesiones de tráfico de pago en Analytics para las mismas campañas. Llegaba el 18 %.
No era culpa de Google ni de los navegadores. Era el consentimiento. El plugin de cookies solo cargaba Tag Manager cuando el visitante aceptaba la analítica, y el contenedor tenía además su propia etiqueta de consentimiento que, en cada página, volvía a poner todo en «denegado» un instante después de que el banner lo concediera. Dos piezas que, por separado, parecían correctas.
Escribí la primera versión de este artículo en agosto de 2024. Releída hoy, confundía Consent Mode con el marco TCF de IAB y lo presentaba como algo que «elige» el usuario. Desde entonces he montado, auditado o desmontado el modo de consentimiento en una docena de webs: tiendas, fundaciones, un SaaS con cuatro mercados, una clínica online y una productora de teatro con tres contenedores de Tag Manager de tres agencias distintas. Casi todo lo que sé lo aprendí arreglando cosas que parecían funcionar.
Esta es la versión que me habría gustado leer entonces. Qué es de verdad, por qué Google lo exige, cómo decidir entre básico y avanzado, cómo montarlo a mano en Google Tag Manager sin depender de la integración de nadie y cómo comprobar que funciona. Con el código, la ruta de cada menú y los errores que más encuentro.
01 — LA BASE
Qué es Consent Mode v2 (y qué no es)
Consent Mode es un protocolo de comunicación. Ni más ni menos. Tu banner de cookies recoge lo que decide el visitante; Consent Mode traduce esa decisión a un idioma que entienden las etiquetas de Google (Analytics, Ads, Floodlight) para que se comporten en consecuencia: escribir cookies o no, enviar datos completos o recortados, usar la visita para personalizar anuncios o no.
La «v2» no es un banner nuevo ni un producto que se contrata. Es la versión del protocolo que Google publicó en noviembre de 2023, que añade dos señales a las que ya existían. Casi toda la confusión que veo viene de mezclar tres cosas distintas: el banner, el protocolo y la ley.
ASÍ NO SE ENTIENDE
«Consent Mode es el banner de cookies»
«Con Consent Mode ya cumplo el RGPD»
«La v2 es lo mismo que el TCF de IAB»
«Activándolo recupero los datos de quien rechaza»
ASÍ SÍ
El banner (la CMP) pregunta; Consent Mode transmite la respuesta
Cumples si el banner, la política y lo que cargas antes de preguntar son correctos
TCF es el estándar de IAB para editores; Consent Mode, el de Google. Pueden convivir
Recuperas estimaciones modeladas, y solo si llegas a los umbrales
Las siete señales
Consent Mode funciona con siete tipos de consentimiento. Cada uno vale granted (concedido) o denied (denegado). Cuatro los usa Google para medir y anunciar; los otros tres describen almacenamiento que no es publicitario y conviene declararlos para que el estado quede completo.
| Señal | Qué controla | Por defecto en el EEE |
|---|---|---|
ad_storage | Cookies e identificadores de publicidad, como _gcl_au | denied |
ad_user_data | Si se pueden enviar a Google datos del usuario con fines publicitarios: conversiones mejoradas, user_id | denied |
ad_personalization | Si la visita puede usarse para personalizar anuncios y para remarketing | denied |
analytics_storage | Cookies de analítica, como _ga y _ga_* | denied |
functionality_storage | Almacenamiento que hace funcionar la web: idioma, carrito | granted si es estrictamente necesario |
personalization_storage | Personalización no publicitaria, como recomendaciones | denied |
security_storage | Seguridad: autenticación, prevención del fraude | granted |
Las siete señales de Consent Mode y su valor por defecto razonable para visitantes del Espacio Económico Europeo.
Un detalle que evita sustos: los anuncios personalizados necesitan a la vez ad_user_data y ad_personalization en concedido. Con una sola no basta.
Qué cambió de la v1 a la v2
- Septiembre de 2020. Google lanza Consent Mode con dos señales:
ad_storageyanalytics_storage. - Noviembre de 2023. Llega la v2 con
ad_user_datayad_personalization. - Marzo de 2024. Para quien sigue en la v1, Google copia automáticamente
ad_storageenad_user_dataen el EEE.ad_personalizationno se copia: sin v2, no hay remarketing ni audiencias para esos usuarios.
Por eso no basta con «tenerlo desde 2021». Una implementación antigua sigue midiendo, pero se queda sin personalización justo donde más visitas tienes.
02 — EL CONTEXTO
Por qué Google lo exige y a quién afecta
El origen es la Ley de Mercados Digitales (DMA). Desde el 7 de marzo de 2024, Google, como «guardián de acceso», no puede combinar ni usar con fines publicitarios los datos personales de usuarios europeos sin su consentimiento. Para poder seguir usando los datos que tú le envías, necesita una prueba de que el visitante dijo que sí. Esa prueba es Consent Mode.
Google lo formaliza en su política de consentimiento de usuarios de la UE, que cubre el EEE, Reino Unido y Suiza. Un matiz que casi nadie cuenta: Google dice expresamente que no espera recibir una señal verificada para el tráfico de Reino Unido y Suiza. Donde la exige es en el EEE.
Qué pierdes si no lo tienes
- Remarketing y audiencias para los usuarios del EEE. Sin señales, las audiencias de GA4 que usas en Google Ads solo incluyen usuarios de fuera del EEE.
- Medición de conversiones degradada y sin modelado que la compense.
- Conversiones mejoradas: los datos del usuario solo se envían con
ad_user_dataconcedido. - Customer Match: desde marzo de 2024 las listas de usuarios del EEE necesitan los dos campos de consentimiento.
- Limitación o suspensión de productos, que la política de Google contempla para quien no la cumple. En julio de 2025, según la prensa especializada, Google empezó a desactivar la personalización y el seguimiento de conversiones a anunciantes del EEE sin señales.
Herramienta · Línea temporal
De Consent Mode v1 a 2026
Pulsa cada hito para ver qué cambió y por qué te afecta. Los marcados como «prensa» no tienen anuncio oficial de Google.
Por qué te importa
Lo más importante de 2026 lo anunció Google en abril: desde el 15 de junio, en las propiedades de GA4 vinculadas a Google Ads, el modo de consentimiento pasa a ser el único interruptor que decide si la etiqueta de Analytics recoge cookies e identificadores publicitarios. Google Signals deja de hacer de segundo filtro y queda solo para los informes. Si tu Consent Mode concede de más, ahora se nota más.
03 — EL MECANISMO
Cómo funciona por dentro
Todo se reduce a dos órdenes y a un momento. La primera, default, fija el estado de partida antes de que se mida nada. La segunda, update, lo cambia cuando el visitante decide en el banner. Y el momento es el orden: el estado por defecto tiene que existir antes que cualquier comando que envíe datos.
Google lo escribe sin rodeos en su documentación: si el código de consentimiento se ejecuta fuera de orden, los valores por defecto no funcionan. De los fallos que encuentro en auditorías, la mitad son de orden.
Herramienta · Secuencia de carga
El orden lo es todo
Reproduce la carga de una página en modo avanzado, con el estado por defecto en Tag Manager, y compara qué pasa cuando el estado por defecto llega a tiempo y cuando llega tarde.
Capa de datos
Estado del consentimiento
Cookies escritas
Básico y avanzado: la diferencia real
Google distingue dos formas de implementarlo. Lo que cambia no es el banner, sino qué hacen las etiquetas de Google mientras el visitante no ha aceptado.
| Básico | Avanzado | |
|---|---|---|
| Antes de que el visitante decida | Las etiquetas de Google no se cargan | Se cargan con todo denegado |
| Si rechaza | No se envía nada, ni siquiera el estado | Se envían pings sin cookies |
| Si acepta | Medición normal, con cookies | Medición normal, con cookies |
| Modelado de conversiones en Google Ads | Modelo general | Modelo propio del anunciante, si hay volumen |
| Modelado de comportamiento en GA4 | No | Sí, si alcanzas los umbrales |
| Riesgo legal | Bajo | En discusión (capítulo 04) |
Comparativa entre la implementación básica y la avanzada de Consent Mode.
Qué viaja en un ping sin cookies
En el modo avanzado, cuando la señal está denegada, Google sigue recibiendo una petición por cada evento, pero recortada. Según su propia documentación incluye:
- Información funcional: marca de tiempo, agente de usuario y página de referencia.
- Si la URL actual o una anterior traía un identificador de clic de anuncio (
gclid,dclid). - El estado del consentimiento y un número aleatorio que se genera en cada carga de página.
- Información sobre la CMP que gestiona el banner.
- En el caso de Analytics, también la resolución de pantalla y la dirección IP, que Google dice no almacenar.
Lo que no lleva es una cookie con un identificador persistente. Sin ella, cada página vista es un desconocido nuevo: Google puede contar la visita, pero no unir dos páginas de la misma persona. Por eso hablamos de modelar y no de recuperar.
Herramienta · Simulador
Qué ve Google según lo que decide el visitante
Elige el modo y lo que marca el visitante en el banner. Verás las señales, los parámetros de cada petición, las cookies que se escriben y qué funciones siguen disponibles.
Las siete señales
Peticiones
gcs
gcd
Cookies escritas
Qué puede hacer Google
Supuestos: Analítica concede analytics_storage; Marketing concede ad_storage, ad_user_data y ad_personalization; Preferencias concede personalization_storage. El dígito final del gcd varía y Google no lo documenta.
Cómo leer gcs y gcd
Cada petición de Google lleva dos parámetros que delatan el estado del consentimiento. Google no los documenta de forma oficial; lo que sigue es lo que ha descifrado la comunidad (Simo Ahava, Stape) y lo que yo uso a diario en auditorías. Úsalo como herramienta de diagnóstico, no como contrato: Google puede cambiarlo sin avisar.
| gcs | ad_storage | analytics_storage | Cómo leerlo |
|---|---|---|---|
G100 | denegado | denegado | Rechazó todo o aún no ha decidido. Solo existe en modo avanzado |
G110 | concedido | denegado | Aceptó publicidad, no analítica |
G101 | denegado | concedido | Aceptó analítica, no publicidad |
G111 | concedido | concedido | Aceptó todo |
Valores del parámetro gcs: el primer dígito tras G1 es ad_storage y el segundo analytics_storage.
El parámetro gcd es más rico porque cuenta la historia de cada señal: cómo empezó y cómo acabó. Tiene esta forma: 11 + ad_storage + 1 + analytics_storage + 1 + ad_user_data + 1 + ad_personalization + un dígito final. Cada señal es una letra:
| Letra | Significado |
|---|---|
l | La señal no se ha fijado con Consent Mode |
p | Denegada por defecto, sin actualización |
q | Denegada por defecto y denegada al actualizar |
r | Denegada por defecto y concedida al actualizar |
t | Concedida por defecto, sin actualización |
u | Concedida por defecto y denegada al actualizar |
v | Concedida por defecto y concedida al actualizar |
m | Sin valor por defecto, denegada al actualizar |
n | Sin valor por defecto, concedida al actualizar |
Letras del parámetro gcd según la comunidad (no documentado por Google).
Herramienta · Decodificador
Qué dicen tus gcs y gcd
Pega un valor de gcs, de gcd o la URL completa de una petición de Google que veas en la pestaña Red. Todo se procesa en tu navegador.
La letra que más miro es la l: significa que una etiqueta midió sin que existiera un estado por defecto. Si aparece en la primera petición de la página, tu default llega tarde.
04 — EL CRITERIO
Básico o avanzado: cómo decidir
Esta es la decisión que más se toma por inercia. El plugin trae una opción marcada, el tutorial dice «avanzado, que recupera datos», y nadie se pregunta si esa web tiene el volumen necesario para que haya algo que recuperar.
Los umbrales que casi nadie comprueba
- GA4 solo modela el comportamiento si la propiedad registra al menos 1.000 eventos diarios con
analytics_storagedenegado durante 7 días, y al menos 1.000 usuarios diarios con la analítica aceptada en 7 de los últimos 28 días. Aun cumpliéndolos, no está garantizado, y los datos modelados no llegan a las audiencias, a las exploraciones de usuario ni a la exportación a BigQuery. - Google Ads modela conversiones a partir de 700 clics de anuncio en 7 días, por país y agrupación de dominio.
La tienda de pan del principio hacía unos 1.000 clics al mes: unos 230 a la semana, ni un tercio del umbral. En mis propias notas llegué a escribir «700 clics al día». Es a la semana. La conclusión no cambiaba, pero el dato importa, y lo dejo aquí porque es exactamente el tipo de error que se copia de documento en documento.
EL UMBRAL
Clics por semana frente a lo que Google Ads pide para modelar
Google Ads necesita 700 clics de anuncio en 7 días, por país y agrupación de dominio. La tienda hacía unos 230.
El debate legal
El modo avanzado envía pings sin cookies antes de que el visitante acepte. Google sostiene que no identifican a nadie. Pero las directrices 2/2023 del Comité Europeo de Protección de Datos, actualizadas en octubre de 2024, consideran que hacer que el navegador envíe información de vuelta, como hace un píxel, ya es «acceder» al dispositivo. Eso no significa automáticamente que haga falta consentimiento, pero abre la puerta.
Hay juristas, como el alemán Thomas Schwenke, que defienden que el modo avanzado también necesita consentimiento. No he encontrado ninguna resolución de la AEPD ni de la CNIL francesa sobre Consent Mode en concreto. Lo que sí dice la AEPD es que las cookies de analítica no están exentas.
MI CRITERIO
Cómo lo decido yo
01
02
03
Herramienta · Decisión
¿Básico o avanzado?
Cuatro preguntas como máximo. Es una orientación según tu volumen y tu postura legal; no sustituye a tu asesoría.
05 — EL MANUAL
Implementación manual con Google Tag Manager, paso a paso
Si usas una CMP certificada por Google (Cookiebot, CookieYes, Complianz, iubenda, Usercentrics…) y su integración funciona, úsala: se actualiza sola cuando Google cambia algo. Este manual es para los otros casos: cuando tu CMP no tiene integración fiable, cuando la que tiene pisa a otra pieza o cuando quieres entender qué pasa por dentro para poder auditarlo.
Herramienta · Arquitectura
Las cinco piezas y su orden
Cada pieza tiene un sitio y un activador. Pulsa una para ver qué hace, dónde se configura y qué pasa si falta.
Qué hace
Dónde va
Activador
Si falta o falla
Paso 1 · Haz inventario y limpia
Antes de configurar nada, averigua qué carga la web y desde dónde. Lo más habitual es encontrar etiquetas repartidas en cuatro capas: código pegado en el tema, plugins, el propio banner de cookies y uno o varios contenedores de GTM.
- Tag Manager se inyecta desde un solo sitio. Si el snippet aparece dos veces, cada evento se duplica, y en el informe en tiempo real parece que funciona.
- Una sola propiedad de GA4 por web y una sola etiqueta por acción de conversión.
- Nada de scripts pegados en los campos de las categorías del banner: si la categoría está activa en la primera visita, se disparan antes de preguntar.
- Busca recursos que escriben cookies sin pasar por GTM: mapas de Google incrustados, reCAPTCHA, chats, el banner de HubSpot.
Paso 2 · Activa la vista general de consentimiento
En GTM ve a Administrar → Configuración del contenedor y marca «Habilitar vista general de consentimiento» (Enable consent overview). Aparecerá un icono de escudo en la lista de etiquetas. El objetivo de este manual es que, al final, ninguna etiqueta quede en «Consentimiento no configurado». Es exactamente lo primero que mira un auditor.
Paso 3 · Averigua cómo guarda tu CMP la decisión
Para montar el consentimiento a mano necesitas leer la decisión del visitante. Todas las CMP la guardan en algún sitio, normalmente una cookie de primera parte, y casi todas avisan con un evento en la capa de datos cuando cambia.
- Abre la web en incógnito, con las herramientas de desarrollo abiertas en Application → Cookies.
- Acepta solo una categoría del banner y mira qué cookie aparece o cambia.
- Activa la Vista previa de GTM, repite la elección y apunta qué evento aparece en la columna de la izquierda.
- Escribe
dataLayeren la consola y busca si la CMP ya empuja órdenesconsent. Si lo hace, desactiva esa función antes de seguir: dos estados por defecto que se contradicen son el error número uno.
| CMP | Dónde guarda la decisión | Valores |
|---|---|---|
| GDPR Cookie Compliance (Moove) | Cookie moove_gdpr_popup (JSON) | strict, thirdparty (analítica), advanced (marketing), performance, preference: «1» o «0» |
| CookieYes | Cookie cookieyes-consent | Pares analytics:yes/no, advertisement:yes/no, functional, performance |
| Complianz | Cookies cmplz_statistics, cmplz_marketing, cmplz_preferences | «allow» o «deny» |
| Cookiebot | Objeto Cookiebot.consent y cookie CookieConsent | statistics, marketing, preferences: true o false |
Dónde guardan la decisión algunas CMP habituales. Compruébalo siempre en tu versión.
Paso 4 · Crea las variables que traducen la decisión
Una variable lee la cookie de la CMP y devuelve las señales; otras tres, pequeñas, sacan de ella el valor que necesita cada campo. El ejemplo es para Moove, que es el caso que más me encuentro en WordPress; para otra CMP solo cambia la lectura de la cookie y el mapeo.
En GTM: Variables → Nueva → JavaScript personalizado. Nómbrala cjs - consent · señales:
cjs - consent · señales
function() {
try {
var m = document.cookie.match(/(?:^|;\s*)moove_gdpr_popup=([^;]*)/);
if (!m) return null; // visitante sin decisión aún
var c = JSON.parse(decodeURIComponent(m[1]));
var g = function(v) { return String(v) === '1' ? 'granted' : 'denied'; };
return {
analytics_storage: g(c.thirdparty),
ad_storage: g(c.advanced),
ad_user_data: g(c.advanced),
ad_personalization: g(c.advanced),
personalization_storage: g(c.preference),
functionality_storage: g(c.strict),
security_storage: 'granted'
};
} catch (e) { return null; }
}Y tres variables más, también de JavaScript personalizado, que devuelven «denied» mientras el visitante no haya decidido:
cjs - consent · analítica / publicidad / preferencias
// cjs - consent · analítica
function() {
var s = {{cjs - consent · señales}};
return s ? s.analytics_storage : 'denied';
}
// cjs - consent · publicidad (para ad_storage, ad_user_data y ad_personalization)
function() {
var s = {{cjs - consent · señales}};
return s ? s.ad_storage : 'denied';
}
// cjs - consent · preferencias
function() {
var s = {{cjs - consent · señales}};
return s ? s.personalization_storage : 'denied';
}Paso 5 · Importa la plantilla de consentimiento
Google recomienda que, dentro de Tag Manager, el consentimiento se fije con plantillas que usan sus API (setDefaultConsentState y updateConsentState), no con gtag() en una etiqueta de HTML personalizado. El motivo está en su documentación: las órdenes gtag se encolan detrás de los mensajes pendientes y pueden procesarse después de que empiece el siguiente evento. Es la causa más común del aviso «A tag read consent state before a default was set».
No hace falta programar la plantilla. En Plantillas, dentro de Plantillas de etiqueta, pulsa «Buscar en la galería» e importa «Consent Mode (Google + Microsoft tags)», de gtm-templates-simo-ahava. Es gratuita, de código abierto y acepta variables en cada señal.
Paso 6 · La etiqueta del estado por defecto
| Campo | Valor |
|---|---|
| Tipo de etiqueta | Consent Mode (Google + Microsoft tags) |
| Consent Command | Default |
| Wait for Update | 500 (súbelo a 2000 si tu banner carga lento) |
| Regions | all (o tu lista; ver paso 10) |
| ad_storage, ad_user_data, ad_personalization | {{cjs - consent · publicidad}} |
| analytics_storage | {{cjs - consent · analítica}} |
| personalization_storage | {{cjs - consent · preferencias}} |
| functionality_storage, security_storage | granted |
| url_passthrough y ads_data_redaction | Marcados |
| Enable Microsoft Consent Mode | Marcado si usas Clarity o Microsoft Ads |
| Activador | Consent Initialization - All Pages |
Configuración de la etiqueta «Consent - Default».
Fíjate en lo que hace: para un visitante nuevo, las variables devuelven «denied» y todo arranca denegado. Para uno que ya decidió en una visita anterior, el estado por defecto ya refleja su elección desde la primera petición, sin el parpadeo de «denegado y luego concedido» en cada página.
El activador Consent Initialization - All Pages existe en todos los contenedores web y se dispara antes que cualquier otro, incluidos los de inicialización. Úsalo solo para la CMP y para esta etiqueta. Nada que mida va ahí.
Paso 7 · La etiqueta de actualización
Duplica la anterior, nómbrala Consent - Update y cambia dos cosas: Consent Command → Update y el activador. El activador es un Evento personalizado con el nombre exacto del evento que anotaste en el paso 3.
Paso 8 · Configura las etiquetas de Google
Las etiquetas de Google (la etiqueta de Google de GA4, los eventos, la conversión de Ads, la vinculación de conversiones) traen comprobaciones de consentimiento integradas: leen las señales solas. Lo que cambia según el modo es la configuración avanzada de cada una.
| Etiqueta | Modo avanzado | Modo básico |
|---|---|---|
| Etiqueta de Google y eventos de GA4 | No se requiere consentimiento adicional | Requerir consentimiento adicional: analytics_storage |
| Conversión de Google Ads y remarketing | No se requiere consentimiento adicional | Requerir consentimiento adicional: ad_storage |
| Vinculación de conversiones | No se requiere consentimiento adicional | Requerir consentimiento adicional: ad_storage |
Configuración de consentimiento de las etiquetas de Google según el modo.
En modo avanzado, no añadas comprobaciones adicionales ni activadores de bloqueo a las etiquetas de Google: Google advierte de que mezclar las dos cosas hace que el modo de consentimiento no funcione bien. En modo básico, esa comprobación adicional es justo lo que impide que se disparen antes de aceptar.
Paso 9 · Las etiquetas que no son de Google
Meta, LinkedIn, TikTok o Clarity no entienden Consent Mode por sí solas, o solo en parte. A todas les pones Requerir consentimiento adicional con la señal que corresponde: ad_storage para las publicitarias y analytics_storage para las de analítica. Así no se disparan hasta que hay permiso. En el capítulo 08 tienes la tabla completa y sus API propias.
Paso 10 · Regiones (opcional)
Si tu web se dirige solo a España, no te compliques: estado por defecto global denegado. Si vendes fuera de Europa y quieres medir con cookies donde la ley lo permite, crea dos etiquetas de estado por defecto: una con todo denegado para el EEE, Reino Unido y Suiza, y otra sin región con lo que decidas para el resto. Google aplica siempre la región más específica. Si prefieres hacerlo con código en la página, este es el equivalente:
Estado por defecto con regiones, en el <head> antes de GTM
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// EEE (UE + Islandia, Liechtenstein y Noruega), Reino Unido y Suiza
gtag('consent', 'default', {
ad_storage: 'denied', ad_user_data: 'denied',
ad_personalization: 'denied', analytics_storage: 'denied',
functionality_storage: 'granted', security_storage: 'granted',
personalization_storage: 'denied',
wait_for_update: 500,
region: ['AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR','DE','GR',
'HU','IE','IT','LV','LT','LU','MT','NL','PL','PT','RO','SK',
'SI','ES','SE','IS','LI','NO','GB','CH']
});
// Resto del mundo: decide con tu asesoría
gtag('consent', 'default', {
ad_storage: 'granted', ad_user_data: 'granted',
ad_personalization: 'granted', analytics_storage: 'granted'
});
gtag('set', 'url_passthrough', true);
gtag('set', 'ads_data_redaction', true);
</script>
<!-- Después, el snippet de Google Tag Manager -->Paso 11 · Publica como si fuera a fallar
Nada sale a producción sin Vista previa y sin las cuatro pruebas del capítulo siguiente. Al publicar, escribe en la descripción de la versión qué has cambiado y por qué. Dentro de seis meses, cuando alguien pregunte por qué bajaron las conversiones, esa descripción vale más que cualquier informe.
06 — LA COMPROBACIÓN
Cómo comprobar que funciona
Un consentimiento bien declarado no es lo mismo que unas etiquetas bien bloqueadas. Lo aprendí en un SaaS cuya capa de datos era impecable: estado por defecto, actualización, todo en orden. Lo que eso no demostraba era que, con el marketing rechazado, la etiqueta de LinkedIn no escribiera su cookie; eso hay que mirarlo aparte. Lo compruebo siempre en cuatro escenarios, en incógnito y como visitante nuevo.
LA MATRIZ
Los cuatro escenarios
01
gcs=G100. En los dos, ninguna cookie _ga, _gcl_au ni _fbp. 02
gcd pasan de p a q. 03
gcs=G101; aparecen _ga y _ga_*, pero no _gcl_au ni _fbp. 04
gcs=G111, todas las cookies y la conversión de Ads enviada con ad_storage concedido. En Tag Assistant
- Abre la Vista previa de GTM y carga la web sin tocar el banner.
- Haz clic en el primer evento de la izquierda y abre la pestaña Consent. En la columna On-page Default tienen que aparecer las señales en denegado. Si la pestaña está vacía, no hay Consent Mode.
- Acepta en el banner, haz clic en el último evento y comprueba la columna On-page Update.
- Revisa la pestaña Etiquetas: cada una dice si se disparó o si la bloqueó el consentimiento.
Si ves el aviso «A tag read consent state before a default was set», una etiqueta leyó el consentimiento antes de que existiera el estado por defecto. Casi siempre es la CMP o el estado por defecto fuera de Consent Initialization, o una etiqueta de medición puesta ahí por error.
En la consola del navegador
Comprobaciones rápidas en la consola
// 1. Órdenes de consentimiento en la capa de datos
(window.dataLayer || []).filter(x => x && x[0] === 'consent')
// Sin aceptar: [['consent','default',{... 'denied' ...}]]
// Tras aceptar: aparece también ['consent','update',{... 'granted' ...}]
// 2. El orden: un solo 'default', y antes que cualquier evento que mida
(window.dataLayer || []).map((x, i) =>
x && x[0] === 'consent' ? i + ': consent ' + x[1] :
x && x.event ? i + ': ' + x.event : null
).filter(Boolean)
// Con el default en el código de la página: antes de 'gtm.js'.
// Con el default en GTM: justo después de 'gtm.js' y antes de purchase, generate_lead…
// 3. Cookies de analítica escritas (solo después de aceptar)
document.cookie.split(';').map(s => s.trim().split('=')[0]).filter(n => /^_ga/.test(n))
// 4. ¿Ha cargado Tag Manager? (si da undefined, algo lo retrasa)
window.google_tag_managerEn la pestaña Red
Filtra por collect para Analytics y por googleadservices o pagead para Ads. Abre cualquier petición y busca gcs y gcd en los parámetros. Si tras aceptar sigue apareciendo G100, la actualización no existe o no llega.
En Google Ads y en GA4
- Google Ads: Objetivos → Conversiones → Resumen → tu acción de conversión → pestaña Diagnóstico. Buscas «Consent mode is implemented». Tarda hasta 48 horas, a veces dos semanas.
- GA4: Administrar → Recogida y modificación de datos → Configuración del consentimiento (Consent settings). Ahí ves si llegan las señales de medición y de personalización de anuncios. Se actualiza en 48–72 horas.
La prueba de la semana
Una semana después de publicar, compara las conversiones de Analytics con los pedidos o leads reales del mismo periodo. No van a cuadrar, y no deben: si un 40 % rechaza, verás alrededor del 60 %, y los bloqueadores restan algo más. Lo que buscas es una diferencia que sepas explicar. Si supera lo esperable y nadie sabe por qué, vuelve a la matriz.
UN CÁLCULO SIMPLE
Qué parte de las conversiones llega a Analytics según cuánta gente rechaza
En horizontal, el porcentaje de visitantes que rechaza las cookies; en vertical, el porcentaje de conversiones que Analytics mide. Sin modelado ni bloqueadores. Con el modo avanzado y volumen suficiente, GA4 puede estimar una parte de lo que falta.
07 — LOS ERRORES
Los diez errores que más encuentro en auditorías
Todos salen de webs reales que he revisado entre 2024 y 2026. Ninguno da un error visible. Todos dejan un panel de Analytics con buena cara.
01
Dos estados por defecto que se contradicen
02
El estado por defecto llega tarde
l en el gcd de la primera petición. 03
Una actualización que lee variables que no existen
undefined, Google lo interpreta como denegado y el consentimiento se revierte en cada página justo después de que el banner lo conceda. 04
La CMP concede lo que el visitante rechazó
05
Tag Manager solo se carga si aceptan
06
Scripts pegados dentro del banner
07
Varios contenedores, varias manos
08
Lo que carga sin pasar por Tag Manager
09
Un optimizador que retrasa Tag Manager
10
Probar con el consentimiento ya guardado
EL ERROR 09, EN NÚMEROS
Scripts que el optimizador dejaba en espera
Una web con WP Rocket y la opción de retrasar JavaScript activada: 36 de 57 scripts no se ejecutaban hasta la primera interacción del visitante, Tag Manager entre ellos.
La pregunta no es «¿tenemos Consent Mode?». Nadie contesta que no. Es: «¿qué señal sale en la primera petición de un visitante nuevo, y qué cambia cuando rechaza?».
08 — MÁS ALLÁ DE GOOGLE
Meta, Microsoft, LinkedIn y TikTok
Consent Mode es de Google, pero tu banner tiene que gobernar todas las etiquetas. Desde 2025, Microsoft también exige señales de consentimiento a los anunciantes que se dirigen a Europa.
| Herramienta | Qué exige | Cómo lo monto en GTM |
|---|---|---|
| Meta Pixel | Su propia API: fbq('consent','revoke') antes de iniciar el píxel en cada página y fbq('consent','grant') tras aceptar | Requerir consentimiento adicional: ad_storage. Si usas coincidencias avanzadas, también ad_user_data |
| Microsoft Advertising (UET) | Señal de consentimiento obligatoria desde el 5 de mayo de 2025 en el EEE, Reino Unido y Suiza. Se aplica sobre ad_storage | Marcar «Enable Microsoft Consent Mode» en la plantilla del paso 5, o uetq.push('consent', …). No mezclar con TCF |
| Microsoft Clarity | Señales de consentimiento exigidas desde el 31 de octubre de 2025 en el EEE, Reino Unido y Suiza | Lee las señales de Consent Mode; la plantilla del paso 5 se las pasa. Su API: clarity('consentv2', …) |
| LinkedIn Insight Tag | No he encontrado una API de consentimiento oficial | Requerir consentimiento adicional: ad_storage. Escribe li_fat_id y otras |
| TikTok Pixel | Tiene su propio modo de consentimiento | Requerir consentimiento adicional: ad_storage |
Cómo gestionar el consentimiento en etiquetas que no son de Google.
Las API de consentimiento de Microsoft y Meta
// Microsoft Advertising (UET): estado por defecto y actualización
window.uetq = window.uetq || [];
window.uetq.push('consent', 'default', { ad_storage: 'denied' });
// … cuando el visitante acepta marketing:
window.uetq.push('consent', 'update', { ad_storage: 'granted' });
// Microsoft Clarity (API v2)
window.clarity('consentv2', { ad_Storage: 'denied', analytics_Storage: 'granted' });
// Meta Pixel: revoke en cada página antes de init; grant tras aceptar
fbq('consent', 'revoke');
fbq('init', 'TU_PIXEL_ID');
// … cuando el visitante acepta marketing:
fbq('consent', 'grant');Con servidor de por medio no cambia lo esencial. Si usas Tag Manager del lado del servidor, el consentimiento se configura en el contenedor web y viaja en cada petición. Las etiquetas de Google del servidor lo respetan; las de terceros necesitan su propia lógica, porque no saben leerlo.
09 — LO LEGAL
Lo que exige la ley en España (y lo que Consent Mode no resuelve)
Consent Mode es un requisito de Google, no de la ley. La ley pide otra cosa: que el banner, la política y lo que cargas antes de preguntar sean correctos. La referencia en España es la guía sobre el uso de las cookies de la AEPD, actualizada en julio de 2023 para alinearla con el Comité Europeo de Protección de Datos.
- Rechazar tiene que estar en la misma capa y al mismo nivel que aceptar. Sin casillas premarcadas ni aceptación por seguir navegando.
- Las cookies de analítica no están exentas: necesitan consentimiento.
- Los muros de cookies solo se admiten si hay una alternativa real, que no tiene por qué ser gratuita.
- Retirar el consentimiento tiene que ser tan fácil como darlo, con un acceso permanente para cambiar la elección.
- Renovar el consentimiento como máximo cada 24 meses, que la AEPD plantea como buena práctica.
- Una política de cookies con inventario real: nombre, proveedor, finalidad, duración y tipo.
Las sanciones por cookies en España suelen ser de miles de euros, no de millones: 3.000 € a Wallapop en 2025, tras las reducciones por reconocer la infracción y pagar voluntariamente, por instalar cookies antes del consentimiento y no hacer efectivo el rechazo; o 90.000 € en una resolución publicada en 2024, en un caso en el que las cookies se mantenían después de «rechazar todas». El coste mayor casi nunca sale en la resolución: campañas sin audiencias y decisiones tomadas con datos falsos.
Y lo que Consent Mode no resuelve: el diseño del banner, el texto de la política, el registro de consentimientos (eso lo guarda la CMP), las etiquetas que no son de Google y los recursos incrustados que escriben cookies por su cuenta.
10 — LOS CASOS
Tres casos reales, con números
Anonimizados, pero con los datos tal cual los encontré.
Una tienda online de pan sin gluten (WooCommerce)
Síntoma. 1.218 clics de Ads frente a 217 sesiones de pago en Analytics, y compras que unas veces llegaban y otras no.
Causa. Cinco fallos encadenados: dos estados por defecto contradictorios (el del plugin y el de una etiqueta del contenedor), una actualización que leía variables inexistentes y revertía todo a denegado, un plugin que concedía todas las señales aunque el visitante rechazara el marketing, Tag Manager cargado solo tras aceptar la analítica y una conversión de compra enviada antes de que llegara la actualización.
Arreglo. Pausar las dos etiquetas de consentimiento del contenedor y validar con un pedido de prueba de 0,01 € en Vista previa: compra en GA4 y conversión de Ads completadas, con la analítica concedida en el momento de la compra. Quedó pendiente de decisión legal la arquitectura definitiva: Tag Manager siempre cargado y estado leído de la cookie, como en este manual.
Lección. Una CMP y un contenedor que emiten consentimiento a la vez se pisan. Y el modo avanzado no tenía sentido: unos 230 clics a la semana, lejos de los 700.
Una productora de teatro con tres contenedores de Tag Manager
Síntoma. Tres contenedores de GTM, tres propiedades de GA4, tres cuentas de Ads, dos píxeles de Meta y una Universal Analytics antigua, todo disparándose antes del consentimiento. El banner no permitía rechazar.
Causa. Etiquetas pegadas en el campo de scripts de una categoría del banner que venía activada de serie, Analytics duplicado (código en el plugin y etiqueta en GTM) y una conversión de Ads de otra agencia que saltaba al cargar una página.
Arreglo. Inventario completo y reunión con la agencia de medios para acordar qué cuentas seguían vivas. El plan acordado: un único contenedor con Consent Mode v2, configurado por la agencia y rematado en la web por nosotros. La agencia explicó al cliente, con acierto, que las visitas registradas iban a bajar sin que bajara el tráfico real.
Lección. Antes de quitar etiquetas ajenas, acuerdo por escrito. Se rompen campañas en marcha.
Una fundación que migra de web
Síntoma. Antes del lanzamiento: estado por defecto regional para España con todo denegado y un plugin de cookies en cuyo código no había ni una orden de consentimiento. Si nadie montaba la actualización, la analítica se quedaría denegada para siempre.
Prueba. Aceptar cookies y mirar si el gcs seguía en G100.
Resultado en producción. Estado por defecto todo denegado con 2.000 ms de espera, cero cookies antes de aceptar, actualización a concedido y tres cookies tras aceptar. Rechazar al mismo nivel que aceptar.
Lección. En una migración, el contenedor se traslada entero, pero los activadores escritos para la web antigua hay que revisarlos uno por uno.
11 — PREGUNTAS FRECUENTES
Preguntas frecuentes sobre Consent Mode v2
¿Es obligatorio Consent Mode v2?
No lo exige la ley; lo exige Google. Si te anuncias en Google o usas sus audiencias con usuarios del Espacio Económico Europeo, sin Consent Mode v2 pierdes el remarketing, la personalización y parte de la medición de conversiones para esos usuarios.
¿Necesito una CMP certificada por Google?
Si eres anunciante, no es obligatorio, aunque Google lo recomienda. Si eres editor y muestras anuncios con AdSense, Ad Manager o AdMob, sí: desde enero de 2024 necesitas una CMP certificada e integrada con el TCF de IAB para servir anuncios personalizados en el EEE y Reino Unido.
¿Me afecta si no hago campañas en Google Ads?
Afecta a cómo mide GA4, pero la consecuencia grave, perder audiencias y personalización, es publicitaria. Aun así, conviene tenerlo: tu banner tiene que bloquear la analítica hasta que acepten, y Consent Mode es la forma ordenada de hacerlo con las etiquetas de Google.
¿Por qué bajan mis datos al activarlo?
Porque dejas de medir con cookies a quien rechaza. Las visitas registradas bajan aunque el tráfico real sea el mismo. Si antes no bajaban es que se medía a todo el mundo sin permiso, que es justo lo que había que corregir.
¿Básico o avanzado para una pyme?
Si no llegas a 700 clics de anuncio por semana y país, ni a 1.000 eventos diarios denegados en GA4, el avanzado no te va a modelar nada. En ese caso, básico. Si llegas, el avanzado tiene sentido, pero lo decide tu asesoría legal.
¿Qué significa gcs=G100?
Que la petición se envió con publicidad y analítica denegadas. Es normal antes de aceptar en el modo avanzado. Si aparece después de aceptar, la actualización no está llegando.
¿Cuánto tarda Google Ads en confirmar que está bien implementado?
El diagnóstico de la acción de conversión puede tardar hasta 48 horas, y a veces dos semanas, en mostrar «Consent mode is implemented».
¿Tengo que implementarlo para Reino Unido y Suiza?
La política de Google cubre el EEE, Reino Unido y Suiza, pero Google dice que no espera una señal verificada para el tráfico de Reino Unido y Suiza. La ley de protección de datos de esos países sí puede exigirte el consentimiento.
¿Los datos modelados aparecen en BigQuery?
No. Los datos modelados de GA4 tampoco se usan en audiencias, en el explorador de usuarios ni en las exploraciones de cohortes.
¿El etiquetado del lado del servidor evita el consentimiento?
No. El consentimiento se configura en el contenedor web y viaja con cada petición al servidor. Moverlo al servidor cambia por dónde pasan los datos, no si tienes permiso para recogerlos.
12 — EL RECURSO
La lista de comprobación completa
Todo el artículo, en una lista que puedes ir marcando mientras implementas o auditas. Se guarda en tu navegador para que puedas volver a ella.
Herramienta · Lista de comprobación
Consent Mode v2, punto por punto
34 puntos en seis bloques. Lo que marques se guarda solo en este navegador.
RECURSO GRATUITO
Lista de comprobación de Consent Mode v2
FUENTES Y DOCUMENTACIÓN
- Google · Consent mode overview (desarrolladores)
- Google · Set up consent mode on websites
- Google · Consent APIs para plantillas de Tag Manager
- Google · Debug consent mode with Tag Assistant
- Google Ads · About consent mode
- Google Ads · Consent mode reference
- Google Ads · About consent mode modeling
- Analytics · Behavioral modeling for consent mode
- Analytics · Consent settings y audiencias en el EEE
- Analytics · Updates to Google Analytics Data Controls (2026)
- Tag Manager · Consent mode support
- Google · EU user consent policy y su ayuda
- Google · Server-side Tag Manager y consentimiento
- Comisión Europea · Obligaciones de la DMA desde el 7 de marzo de 2024
- AEPD · Guía sobre el uso de las cookies
- CEPD · Directrices 2/2023 sobre el alcance técnico del art. 5.3 de la Directiva ePrivacy
- AEPD · Procedimiento PS/00160/2025
- Microsoft · Clarity Consent API v2
- Microsoft Advertising · Señales de consentimiento antes del 5 de mayo de 2025
- Meta · Pixel y RGPD
- Simo Ahava · Consent Mode V2 for Google Tags
- Plantilla · Consent Mode (Google + Microsoft tags)
HISTORIAL DE CAMBIOS
- 8 octubre 2026
- Reescritura completa: implementación manual en GTM, criterio básico/avanzado, verificación, errores de auditoría, novedades de 2025–2026 y herramientas interactivas.
- 16 agosto 2024
- Primera versión.