
Desde que salió a la luz se ha hablado bastante del tema, aunque para mi sorpresa, menos de lo que quizá merezca, puesto que, sin llegar a ser un cambio de paradigma, si que tiene impacto en dos partes fundamentales de la analítica:
- La implementación (haciéndola más compleja).
- El reporting (mejorando la calidad de los datos, se supone).
Por todo ello quiero hablarte de este sistema, de cómo puede beneficiarnos a cambio de incrementar el desarrollo técnico necesario para su puesta en marcha.
¿Compensa?
Eso te dejo a ti decidirlo tras la lectura del artículo.
Índice de contenidos
- 1 Qué es el Consent mode
- 2 Ventajas del Consent mode en GA4
- 3 Requisitos previos
- 4 El proceso
- 5 Cómo configurar el Consent mode en WordPress
- 6 Pruebas
- 7 Preguntas
- 8 Conclusiones
- 9 Si te ha gustado el artículo lo mismo esto te interesa...
Qué es el Consent mode
El Consent mode es la respuesta de Google al GDPR: un sistema que utiliza GTM que permite cumplir la ley de privacidad y, aun así, que ciertas etiquetas -como la de Google Analytics y Google Ads- recojan algunos datos de los usuarios que navegan por nuestras webs.
En esencia, es un sistema de medición cookieless, que, sin ser tan preciso como si metiéramos el snippet de Google Analytics siempre y en el momento en que se carga la página (lo que hacíamos previamente al GDPR), sí que es un avance con respecto a cargar la etiqueta después de que el usuario acepte las cookies.
Para dejarlo más claro, en función de los datos recogidos, tenemos tres opciones de implementación de Google Analytics:
- Cargar la etiqueta sólo cuando el usuario acepta cookies: perdemos muchos datos, sobre todo si el usuario no acepta las cookies en la landing, sino páginas después. Cumple al 100% con el GDPR.
- Cargar la etiqueta sin cookies siempre mediante Consent mode: perdemos datos, pero menos que antes (ahora hablamos de ello). En el momento en que el usuario acepte, cargamos la etiqueta normal con sus cookies. También cumple con el GDPR al 100%.
- Cargar la etiqueta normal sin esperar a que el usuario acepte cookies: recogemos el máximo de datos. Una lástima que sea ilegal por no cumplir con el GDPR.
Bien, pues teniendo claro los tres escenarios posibles, en este artículo voy a centrarme en el segundo, que será, si no lo es ya, el estándar de implementación en proyectos de analítica para negocios.
Antes de entrar en el detalle de los datos, te diré que el Consent mode, también pretende hacer más sencillo el lanzamiento de otras etiquetas o píxeles (Facebook, afiliación) en función de los permisos que nos otorga el usuario.
Eso lo dejamos para más adelante porque como digo en este artículo me voy a centrar en la ventaja en la medición con Google Analytics, que tiene bastante tela que cortar.
Ventajas del Consent mode en GA4
La principal ventaja de emplear este sistema a la hora de implementar GA4 es que, con este extra de datos que estamos recogiendo, Google Analytics va a ser capaz de inferir algunos de los datos que no se han recogido, modelando la información que sí tiene mediante sus propios algoritmos.
De esta forma, métricas como el número de usuarios diarios y sus características (país, campaña) serán mucho más próximos a la realidad. De la mano, las métricas derivadas como la tasa de conversión también ser verán afectadas.
Estos datos, Google los denomina “modelizados”, en contraposición a los recogidos normalmente (los “observados”).
Y, si cumplimos los requisitos que ahora veremos, podremos elegir desde la Administración de GA4 si queremos utilizar ambos tipos de datos (“mezclado”, lo denomina) o solamente los observados (lo que veníamos viendo hasta ahora):

Requisitos previos
Entrando en los requisitos en sí, tendremos dos tipos: los técnicos -relativos a la implementación del sistema- y de volumetría -relativos a la cantidad de datos necesarios para que GA4 estime correctamente y el sistema sea robusto-.
Vamos a empezar por estos últimos.
Volúmenes necesarios
Si vamos a la documentación de Analytics, leemos que:
“La propiedad recoge al menos 1000 eventos al día con analytics_storage=’denied’ durante al menos 7 días.
La propiedad tiene al menos 1000 usuarios diarios que envían eventos con analytics_storage=’granted’ durante un mínimo de 7 de los últimos 28 días.
El modelo puede tardar más de 7 días en alcanzar el umbral de datos en ese periodo de 28 días. No obstante, es posible que ni siquiera los datos adicionales sean suficientes para que Analytics entrene el modelo.
Los modelos de comportamiento empiezan a funcionar a partir de la fecha en que una determinada propiedad cumple los requisitos.
En el caso poco frecuente de que una propiedad que ya reunía los requisitos deje de cumplirlos, los datos estimados dejarán de estar disponibles. Si la propiedad vuelve a cumplir los requisitos, los datos estimados volverán a estar disponibles. Los datos estimados solo estarán disponibles a partir de la fecha en la que la propiedad volvió a cumplir los requisitos.”
Vale, si te preguntas qué es eso de analytics_storage te diré que se trata de la aceptación del usuario de las cookies de analítica. “denied” implica que NO las ha aceptado todavía.
Además, para obtener la funcionalidad completa (vinculado con la activación de Signals, sobre todo), GA4 requerirá también la aceptación de las cookies publicitarias, el ad_storage.
Requisitos técnicos
Además de estos volúmenes de datos, es necesario cumplir con una serie de cuestiones antes de empezar:
- Necesitamos tener GTM implementado en el site de cualquiera de las posibles formas:
- Inserción en el código.
- Mediante plugin (así lo tengo yo).
- Mediante opciones del tema.
- Un flujo web de GA4 implementado mediante GTM.
- Un faldón de cookies que permita aceptar o no las cookies de analítica y las publicitarias (por lo menos). Puede estar implementado:
- Mediante código a medida.
- Plugin del CMS (así lo tengo yo).
Cuando tengamos todo esto implementado, ya podremos empezar a configurar el sistema completo.
El proceso
Pero antes de configurar nada, lo primero que tenemos que hacer es entender cómo funcionará el sistema, ya que el orden de los elementos importa.
Así, lo que tiene que ocurrir en la web cuando un usuario nuevo entre es lo siguiente:
- Se carga la etiqueta de estado inicial de Consent mode de GTM. En este punto, los valores de analytics_storage y ad_storage son “denied” puesto que el usuario no ha aceptado nada.
- Se carga desde GTM la etiqueta de GA4 sin cookies, ya que el Consent mode está activo.
- Aparece el faldón de cookies. Aquí el usuario tiene tres opciones:
- Si no acepta las cookies: se irá cargando la etiqueta de GA4 cookieless en cada página, con información parcial que GA4 modelizará.
- Si acepta solo algunas cookies: en este caso, GA4 recogerá los datos correspondientes a analytics_storage (los principales) o a ad_storage (secundarios) en función de lo que haya aceptado el usuario.
- Si acepta todas las cookies: se mandará la aceptación a GA4 y se empezará a recoger la información completa.
Importante: sea cual sea la opción que escoja el usuario, en cada página se cargará antes de nada en GTM y se enviará a GA4 el valor de analytics_storage y ad_storage. Ésta es la parte más compleja / técnica de la implementación.
Cómo configurar el Consent mode en WordPress
Bien, pues una vez que entendemos cómo tiene que funcionar todo, ya podemos ponernos manos a la obra.
Una aclaración: según sea tu web, te puede interesar utilizar un sistema u otro. Por eso, aquí te dejo un par de tutoriales donde te explican el proceso completo usando plugins de WordPress:
- Con Cookiebot: quizá el más fácil, ya que cuenta con una plantilla a medida en GTM. El problema es que la versión gratuita de este CMP sólo permite tener hasta 50 URLs en la web, cosa que se quedará corta para la mayoría. Si tu proyecto tiene menos de 50, empieza por aquí (método 3).
- GDRP Cookie Compliance: así lo tengo implementado yo, ya que tengo más de 50 URLs en mi web. Eso sí, he hecho algunas modificaciones a la hora de activar la etiqueta de GA4 y es en el que me voy a basar para explicarte el paso a paso, con algunos comentarios adicionales.
Ahora sí, vamos paso por paso.
#1. Instalar el plugin
Instalamos este plugin en nuestro WordPress:
https://es.wordpress.org/plugins/gdpr-cookie-compliance/
Si estamos utilizando otro para las cookies, lo desactivaremos una vez nos funcione el nuevo sistema.
Los textos y botones puedes configurarlo como quieras, pero la sección de “Cookies de terceros” la configuraremos así:

Y la de “Cookies adicionales” así:

Guardamos todo.
Si recuerdas, te decía que en cada página tenemos que enviar a GA4 el estado de los consentimientos del usuario, para que sepa qué datos guardar y cómo (analytics_storage y ad_storage, recuerda).
Lo que vamos a hacer aquí es añadir un código a nuestro WordPress de forma que lea el estado de los consentimientos del plugin en cada carga de página y envíe al DataLayer dos variables con los valores correspondientes:
- Por defecto, el estado del consentimiento inicial tiene que ser “denied” (denegado) para ambas.
- En el momento en que el usuario acepte algún tipo de cookies, el plugin recogerá el cambio y en la siguiente carga de página ya recogeremos el valor modificado con este código (en la página en que acepta ya habremos mandado el cambio a GTM).
Hay que añadir esto al archivo functions.php de nuestro tema hijo:
/*Función GDPR*/
if (!is_admin()){
if ( function_exists( 'gdpr_cookie_is_accepted' ) ) {
/* supported types: 'strict', 'thirdparty', 'advanced' */
/*Analítica*/
if ( gdpr_cookie_is_accepted( 'thirdparty' ) ) {
?>
<script>
dataLayer = [{
'cookies_analitica': 'granted'
}];
</script>
<?php
} else {
?>
<script>
dataLayer = [{
'cookies_analitica': 'denied'
}];
</script>
<?php
}
/*Marketing*/
if ( gdpr_cookie_is_accepted( 'advanced' ) ) {
?>
<script>
dataLayer.push({
'cookies_marketing': 'granted'
});
</script>
<?php
} else {
?>
<script>
dataLayer.push({
'cookies_marketing': 'denied'
});
</script>
<?php
}
}
}
Recuerdo que el código lo he sacado de aquí.
Podemos añadirlo mediante FTP o desde la administración de WordPress, aunque ojo con lo que tocamos aquí si no estamos acostumbrados:

De esta forma, recogeremos el valor correcto en cada carga de página mediante variables de capa de datos de GTM y se lo pasaremos a GA4.
#3. Pasar los valores correctos de consentimiento al DataLayer
Para pasar los valores de analytics_storage y ad_storage a GA4 vamos a utilizar dos variables de DataLayer: una con el estado de consentimiento del usuario de las cookies de analítica y otra con el de las publicitarias.
Tenemos que a crear ambas como te muestro.
Cookies analíticas

Lo más importante es el nombre de la variable: cookies_analitica.
Cookies publicitarias

Lo importante, de nuevo, es el nombre de la variable: cookies_marketing.
#4. Activar el Consent mode
Esto es sencillito. Se hace desde la configuración del contenedor:

#5. Importar la plantilla de Simo Ahava
Si has leído algún otro artículo mío de GTM, raro será que no te haya mencionado al mayor crack mundial en cuanto a implementaciones de GTM: Simo Ahava.
El bueno de Simo pone a nuestra disposición una plantilla que nos va a facilitar mucho la vida a la hora de configurar el comportamiento de los permisos otorgados por el usuario con respecto a las cookies.
Para importarla, desde la sección de Plantillas, busca “consent” y clica en la que te marco:

#6. Crear las etiquetas del Consent mode
Una vez tengamos importada la plantilla, nos vamos a crear las dos etiquetas de consentimiento necesarias: la inicial, que se cargará en todas las páginas antes que el resto de tags y la actualización, que lo hará cuando el usuario cambie su consentimiento sobre algún tipo de cookies.
La inicial
Al importarnos la plantilla de Simo, tendremos un tipo de etiqueta nueva de Consent mode:

Vamos a crearnos una nueva de este tipo con esta configuración:

Varias cosas que comentar aquí:
Lo primero es entender para qué nos sirve esta etiqueta.
Pues esta etiqueta es la que le indicará al resto de etiquetas que utilicen el Consent mode (como la de GA4) las cookies que ha aceptado el usuario.
Por eso, esta etiqueta se cargará en GTM antes que cualquier otra y su comando es Default.
Justo debajo vemos que la etiqueta considera 5 tipos de cookies:
- Analíticas: hacen referencia al analytics_storage.
- Publicitarias: hacen referencia al ad_storage.
- Personalización.
- Funcionalidad.
- Seguridad.
Las dos últimas el GDPR permite añadírselas al usuario por defecto.
Las de personalización son las que se usan para recomendarnos vídeos en YouTube, Canciones en Spotify o productos en Amazon. No tienen relevancia para GA4.
Las otras dos, que son las importantes aquí, ya las hemos explicado antes en qué consistían.
Bien, pues con esta aclaración entenderás que las de seguridad y funcionalidad las dejemos en “granted” (es decir, el usuario nos otorga permiso para instalarlas).
Cargaremos el valor de las de analítica y las publicitarias en función de lo que el usuario haya hecho anteriormente (si ha aceptado o no).
Dicho valor es lo que conseguimos con el código añadido al archivo functions.php y estará recogido en las dos variables de DataLayer que creamos anteriormente. Por eso colocamos estas variables como el estado de aceptación por defecto.
Recuerda que, cuando un usuario entra en nuestra web, en la primera carga de página estarán “denied”, pero en las siguientes páginas podrá haber cambiado su valor, si el usuario ha aceptado algún tipo de cookies.
Como digo, todo esto está recogido en el código del functions.php, así que, si te parece complejo y sólo quieres que funcione, copíalo y configúralo tal cual.
Por último, las cookies de personalización podemos colocarlas en “denied” para GA4, aunque, si recoges la aceptación de este tipo de cookies en tu site porque las utilizas, puedes utilizar una variable de capa de datos como en el caso de las dos anteriores (tendrás que modificar el código del function.php, eso sí).
En cuanto a las opciones de Other Settings marcadas, que sepas que nos ayudan a recoger más fielmente la campaña a cambio de añadir parámetros a las URLs. Mi recomendación es que las dejes activadas.
Por último, el activador. Aquí hay novedades.
Si te fijas, verás que es Consent Initialization – All Pages.
Bien, pues este activador viene incluido por defecto en GTM y es uno de los nuevos que incorporó Google a la herramienta de la mano del Consent mode.
Éste es el activador que hace que esta etiqueta se cargue antes que ninguna otra en GTM, de forma que el resto de etiquetas puedan leer sus valores y actuar en consecuencia.
A modo informativo te diré que, si tenemos activado el Consent mode, GA4 recogerá el valor de un nuevo parámetro (“gcs”) en sus peticiones. Este parámetro puede tener cuatro valores:
- G100: estado inicial, no aceptadas cookies de analítica ni publicitarias.
- G101: aceptadas cookies de analítica.
- G110: aceptadas cookies publicitarias.
- G111: aceptados ambos tipos de cookies.
Es el valor de este parámetro lo que hace que GA4 recoja unos datos del usuario u otros y la forma en que los procesará después.
Cuando el usuario acepte alguna
Bueno, pues vamos con la segunda etiqueta del Consent mode, que es la que actualizará los consentimientos del usuario (cambiando de paso el valor del parámetro GCS).
Este paso tiene más chicha, ya que, aparte de la etiqueta del Consent mode en sí, tendremos que crear otras previas que actualicen los valores de las variables del DataLayer que creamos antes.
Etiquetas de envío de actualización del consentimiento al DataLayer
Según el usuario acepte todas las cookies o solo algunas el envío al DataLayer será diferente.
Empecemos por el caso más habitual.
El usuario acepta todas las cookies
En la web, el plugin nos habrá metido este botón:

Que hace que el usuario acepte todas las cookies.
Vale, pues cuando lo haga enviaremos una etiqueta de HTML personalizado a GTM con este código:
<script>
dataLayer.push({
'event': 'guardar_cookies',
'cookies_analitica': 'granted',
'cookies_marketing': 'granted'
})
</script>
Que lo que hará es cambiar el valor de nuestras variables de DataLayer cookies_analitica y cookies_marketing.
La configuración de la etiqueta será ésta:

Donde vemos el código de arriba y un activador de clic en el botón comentado, con esta configuración:

La clase del botón coincide con la expresión regular: (moove-gdpr-infobar-allow-all)|(moove-gdpr-modal-allow-all).
Esto sería todo.
El usuario actualiza algunas cookies
Vamos al caso en que el usuario no acepta todas, sino solamente algunas.
Es cuando entra en los ajustes del faldón y guarda desde aquí:

El código sería éste:
<script>
var check_marketing = document.querySelector('#advanced-cookies .cookie-switch input').checked;
if(check_marketing){
var cookies_marketing = 'granted';
} else{
var cookies_marketing = 'denied';
}
var check_analitica = document.querySelector('#third_party_cookies .cookie-switch input').checked;
if(check_analitica){
var cookies_analitica = 'granted';
} else{
var cookies_analitica = 'denied';
}
dataLayer.push({
'event': 'guardar_cookies',
'cookies_analitica': cookies_analitica,
'cookies_marketing': cookies_marketing
})
</script>
Hacemos lo mismo: crear una etiqueta de HTML personalizada con esta configuración:

Donde el activador nuevo tiene que ser así:

Donde la clase del clic será: moove-gdpr-modal-save-settings.
Evento personalizado de guardar cookies
Si te fijas, verás en los dos códigos anteriores que en ambos casos mandamos un evento personalizado al DataLayer: guardar_cookies.
En un momento te explico el motivo, pero antes, vamos a crearnos un activador con este evento:

La etiqueta de actualización del Consent mode
Vale, pues una vez que tenemos todo esto creado, vamos con la segunda etiqueta del Consent mode, la que actualiza los consentimientos del usuario.
La configuración es ésta:

Donde:
- El comando será Update, ya que es la que actualiza valores.
- El valor de las variables de DataLayer se habrá actualizado, recogiendo aquí el nuevo.
- El activador será el que acabamos de crear, que lanza la etiqueta en cuanto se actualizan los consentimientos del usuario.
Con esto hemos acabado la configuración. Como ves, no hemos tocado para nada la configuración de GA4, cuyo activador seguirá siendo All pages:

Pruebas
Es la hora de las pruebas.
Lo primero que vamos a hacer es instalarnos esta extensión si no la tenemos ya para borrar las cookies.
Lo segundo, instalamos esta otra para ver las etiquetas de Google.
Entonces, lo que haremos es:
Para emular el comportamiento de un usuario nuevo, las borramos clicando en la extensión y en el icono de la papelera:

#2. Recargar la página
Así comprobamos que efectivamente ya no hay cookies de Analytics después del borrado:

#3. Abrimos vista previa en GTM
Se nos recargará la página y comprobaremos que:
- Se carga GTM y la etiqueta de GA4 (las varias que tengo instaladas):

- No se carga ninguna cookie de Analytics:

Esto significará que GA4 recibe los datos sin cookies. Vamos bien.
Le damos al botón de aceptar todas las cookies o al de algunas.
Comprobamos que se han añadido cookies de GA4:

Como añadido y curiosidad, podemos observar desde la consola que el valor del parámetro GCS ha cambiado:

Esto significará que todo ha ido como debe y a partir de ahora, en cuanto cumplamos con las volumetrías explicadas antes, podremos beneficiarnos del modelado de datos de GA4.
Preguntas
La principal que se te puede venir a la cabeza es que qué pasa si un usuario acepta las cookies en otra página que no es la de destino.
En las pruebas que he realizado no he tenido forma de ver cómo procesa este cambio GA4. Sin embargo, en BigQuery hace que las peticiones de la sesión del usuario con el parámetro gcs=G100 previas a la aceptación de cookies cambien a peticiones con gcs=G111, pudiendo procesar los datos completamente (importante para tener datos exactos de la fuente o la landing page).
Por este motivo me inclino a pensar que el tratamiento en GA4 será similar, aunque, como digo, no he tenido forma de corroborarlo.
La segunda pregunta más habitual es cuánta precisión ganaremos.
Y tampoco tengo respuesta, porque para comprobarlo habría que comparar una implementación de GA4 con otra que se cargue directamente siempre (sin GTM) en la web, como hacíamos antaño.
Y eso va contra el GDPR.
Además de que no tengo nada claro de que tener habilitado el Consent mode en el contenedor de GTM y al cargarse su etiqueta inicial antes que el resto, ésta no afecte a la etiqueta de GA4 cargada fuera del contenedor. Que no debería, pero en las pruebas que he hecho no me ha quedado fehacientemente claro.
Conclusiones
Espero haberte aclarado un poco qué es todo esto del Consent mode, en qué te puede beneficiar y cómo lo puedes implementar en una web con WordPress.
Dicho esto, tras dedicarle un buen rato al tema y a modo de resumen yo extraigo varias conclusiones:
La primera es que el Consent mode ha llegado para quedarse, ya que todo lo que sea recoger datos que ayuden a optimizar campañas es bienvenido.
La segunda es que su implementación no es del todo sencilla. Si bien si eres desarrollador en un ratín tendrás todo configurado, si no lo eres, la gestión del valor del consentimiento en todo momento no es inmediata.
Esto ahonda es la tecnificación de la analítica digital, a lo que se añade que tiene mucha pinta de que será más útil en integraciones con BigQuery.
Eso sí, ahora mismo, con la implementación masiva de GA4, quizá sea un buen momento para encarar el tema y no dejarlo para nunca.
Quedan dudas sobre la caja negra que es el modelado de datos que hará Google, siendo juez y parte (¿favorecerá su tráfico?) aunque yo en este caso prefiero fiarme.
En definitiva, una nueva forma de entender la analítica, tras el primer “todo vale” y el posterior “casi nada vale” del GDPR. Será necesario más tiempo y más datos para ver si en implementaciones sencillas merecerá la pena.
Si te ha gustado el artículo lo mismo esto te interesa...
Tengo una newsletter donde explico trucos que descubro, envío material y recursos descargables y doy mi opinión sobre temas de actualidad digital.
Quizá te interese registrarte...
Muy buen blog post sobre el tedioso consent mode. He visitado veintenas de implementaciones y esta es por fin con la que puede comprenderlo bien por el nivel de detalle que tiene, muy necesario ya que es una estructura bastante compleja y que de hecho ha estado en estado Beta hasta hace muy poco. Gracias.
Una pequeña duda que tengo es, al no usar wordpress, en lugar de utilizar un functions.php para definir y actualizar los valores por defecto, lo que hago es comprobar desde de mi entorno si existe consentimiento en mis cookies (que guardé cuando el usuario decidió) y tomar los valores de ahi. Por lo tanto, al igual que tu functions.php, estoy causando un default en CADA carga de página ¿Es eso correcto verdad?
Tenemos:
– default: Lanzado en cada carga con => Consent Initialization – all pages, que toma valores guardados en nuestro dataLayer.
– update: Lanzado unicamente con nuestro custom event => update_cookies
Solo un apunte, veo que las cookies aún existen, incluso en tu propia pagina después de denegar, (_ga,..), entiendo que no incluyen datos del usuario ¿Hay forma de quitar incluso dichas cookies o no hace falta y eso ya cumple con GPDR?
Gracias por tu ayuda.
Buenas Julian, genial que te haya servido, es la idea de estos artículos.
El enfoque que le das es correcto. También verás que hay otras soluciones que lanzan el default en cada página denegando las cookies e inmediatamente después un update con la aceptación (si es que el usuario las ha aceptado anteriormente en otra página). Sinceramente, desconozco el motivo de hacerlo así, pero funciona igual.
En cuanto a mi web, te comento: estoy estudiando la diferencia real entre usar el consent mode e implementar siempre la etiqueta. Por eso tengo dos propiedades de GA4 corriendo y una de ellas es la que mete las cookies. Es algo temporal mientras obtengo datos, antes de ver si me merece la pena complementar el GA4 con consent mode con otra solución totalmente cookieless como Matomo (debido a la gran pérdida de datos que estoy viendo).
Un saludo