Google consent mode y gtm

Si habéis llegado hasta esta entrada espero que sea porque queréis implementar la nueva configuración de Google sobre consent mode en vuestro GTM favorito. Y os digo espero porque no me voy a detener demasiado aquí en los aspectos teóricos de lo que es GCM o las implicaciones que tiene este nuevo paradigma sobre la privacidad. Para eso, podéis consultar los siempre excelentes posts de Simo Ahava o esta didáctica entrada de Aukera. Mi intención, como os adelantaba, no es recoger los aspectos teóricos, sino el desarrollar de modo práctico una implementación de GCM en GTM para todos aquellos que necesitéis verlo de forma rápida.

En cualquier caso y como introducción al tema os diré que el GCM se trata de un nuevo sistema que ha implantado Google que será la base que tendremos en los productos del gigante para obtener un modelado de datos. ¿Y qué es exactamente el modelado de datos? Pues una técnica a través de la cual podremos obtener información de forma anonimizada sobre aquellos usuarios que hayan decidido no compartir la misma. Esto nos permitirá utilizarla de forma agregada para cuantificar el impacto de los esfuerzos de marketing cuando no se puede observar un subconjunto de conversiones a través del machine learning, tal y como explica Ken Williams en este clarificador artículo.

Como ya os habréis imaginado, para llegar a este nirvana primero tenemos que realizar las configuraciones oportunas que Google pueda entender y todo esto pasa por nuestro gestor de etiquetas favorito: Google Tag Manager. En nuestro texto veremos dos casuísticas: la que pasa por una configuración más «manual» y la centrada en plantillas.

Método 1: Custom HTML y Consent Mode

Aunque me inclino más por la segunda opción que vamos a ver hoy, vamos a presentar esta solución para todos aquellos que lo queráis hacer viendo todos los pasos del proceso y por si, por ejemplo, no estáis utilizando GTM como vuestro gestor de etiquetas. Esta solución pasa por crear los siguientes activos:

  • Custom HTML tag con el código default de consent mode.
  • Custom HTML tag con el código update de consent mode.
  • Variable que recoge el estado actual de cookies.
  • Variables regex que recogerán los valores ‘granted’ o ‘denied’ para cada categoría de cookies según las opciones que haya marcado el usuario.
  • Trigger con el evento de actualización de opciones de consentimiento.

Algunos de los elementos que vamos a crear aquí son compartidos con el segundo método, lo iremos viendo sobre la marcha. En cualquier caso, antes de crear nada en nuestro contenedor lo que vamos a hacer es asegurarnos que hemos marcado la opción de consent mode en el mismo:

Esto nos permitirá tener todas las opciones activas sobre consent mode en el contenedor, lo que nos hará ser más eficientes. Una vez hemos hecho esto, ahora sí vamos a crear todos los activos que necesitamos. Dentro de Tags, vamos a crear el primer custom html con el siguiente código:

<script>

  window.dataLayer = window.dataLayer || [];

  function gtag(){dataLayer.push(arguments)};

  gtag('consent', 'default', {

    'ad_storage': 'denied',

    'analytics_storage': 'denied'

  });

  if({{ad_consent_value}} == 'granted' || {{analytics_consent_value}} == 'granted') {

    gtag('consent', 'update', {

      'ad_storage': {{ad_consent_value}},

      'analytics_storage': {{analytics_consent_value}}

    });

  };

  if({{ad_consent_value}} == 'denied') {gtag('set', 'ads_data_redaction', true);};

  dataLayer.push({

    'event': 'consent_mode_loaded'

  });

</script>

Nuestra configuración para este código será la siguiente:

Si os fijáis, vamos a poner un trigger que tiene muy poco tiempo en GTM: Consent Initialization – All Pages. Si bien es cierto que este trigger actúa de forma muy parecida al clásico All Pages lo que nos proporciona es el establecerse como lo primero que se lanzará en la secuenciación siempre. Esto quiere decir que la configuración de GTM siempre saltará después de este trigger, con lo que nos aseguramos que esta etiqueta es lo primero que se lanza de nuestro contenedor. Esto lo hacemos así para asegurarnos que si el usuario no ha dado su consentimiento todavía, se carguen todas las categorías como denegadas, mientras que si ya se ha configurado el consentimiento, podremos evaluarlo y actualizarlo debidamente (las últimas líneas del script).

Dentro de este código veréis que hay dos variables que se llaman y que ahora mismo no tenemos creadas dentro de nuestro contenedor. Antes de continuar con el otro custom HTML, vamos con ellas. Debemos crear 1 variable que recoja el estado de consentimiento actual y lo almacene. En mi caso, al contar con cookiebot (y esto es algo que veremos al final), esa variable viene determinada por una plantilla específica para el caso:

También podríamos recoger esta información a través de una variable de 1st Party Cookie con el nombre de la cookie que se guarda los consentimientos del usuario:

Sea como sea nuestra configuración, lo que tenemos que conseguir es la variable que almacene el estado actual de consentimientos en todo momento. Una vez tengamos eso, crearemos las variables con reglas específicas para analítica (y la llamaremos analytics_consent_value):

En el caso de cookiebot, si dentro de la variable que hemos creado a través de la plantilla aparece «statistics» quiere decir que el usuario ha aceptado las cookies de analítica, por lo que el valor que querremos devolver es «granted». Sino, se devolverá siempre «denied». Para analítica o las categorías que necesitemos, haremos lo mismo:

Cuando tengamos estas variables creadas, el código que hemos introducido anteriormente estará completo y podrá funcionar de forma correcta. Pasaremos ahora al código de update, que sería el siguiente:



<script>

  gtag('consent', 'update', {

    'ad_storage': {{ad_consent_value}},

    'analytics_storage': {{analytics_consent_value}}

  });

</script>

Como véis, este código sirve básicamente para actualizar el estado del consentimiento. Es decir, le estamos diciendo a Google si algo ha cambiado en las opciones del usuario. Como esto lo tenemos que saber tanto cuando el usuario entra a la página (puede que ya aceptase en una anterior visita), como si entra por primera vez (acepta o rechaza cuando le aparece el banner de cookies, por ejemplo), tendremos que gastar una configuración a través de la cual esta etiqueta se lance en los dos momentos mencionados:

En mi caso, sé que cookiebot lanza el evento cookie_consent_update cuando el usuario realiza algún cambio en el consentimiento, por eso he colocado tanto el trigger anterior como este.

Una vez hemos hecho todos estos pasos, podemos comprobar que todo funciona correctamente desde el preview de nuestro contenedor. Si miramos las variables en cuestión podremos ver algo como esto:

Aquí me aparecen las cookies de analítica como aceptadas porque ya las tenía aceptadas previamente de otra sesión anterior. Así, por tanto, todo lo que sea referente a analítica de Google se podrá lanzar a la plataforma indicada. Esto ocurrirá gracias a un parámetro que Google ha añadido en sus requests, el «gcs». Si este valor es igual a 100, nada podrá salir de GTM. En cambio si es 101 quiere decir que la analítica está permitida y si es 111 todas las categorías de cookies están permitidas. Si nos vamos a este valor en este momento lo que encontramos es lo siguiente:

Por otro lado, si alguna de nuestras etiquetas no pertenece a un servicio de Google (facebook, linkedin, criteo…) podemos hacer que nuestra configuración sea mucho más rápida que con los sistemas de CMP gracias a una nueva herramienta que ha generado Google para tal efecto. Si nos vamos a la configuración avanzada de las etiquetas, podremos ver lo siguiente:

Si en este campo ponemos alguna de las categorías que nos ocupan, esta etiqueta no saltará hasta que el usuario haya aceptado tal categoría y, por tanto, se marque como «granted».

Método 2: Plantillas y Consent Mode

Amigos, ¿qué sería de nosotros sin Simo Ahava? Pues seguramente estaríamos perdidos en muchos aspectos de la analítica más técnica. Una vez más viene a nuestro rescate (y al de Google) para presentar su plantilla para consent mode. Gracias a que en el método 1 hemos creado las variables y los triggers necesarios, la configuración que vamos a ver aquí es prácticamente un paseo. Lo primero que debemos hacer es agregar la plantilla de Simo a nuestro surtido de etiquetas, la podemos encontrar aquí, bajo el nombre de Consent Mode (google tags):

¿Os acordáis que antes hemos creado una etiqueta custom html para meter el código con la configuración default de consent mode? Pues con la plantilla de Simo lo único que tenemos que hacer es elegir Default como Consent Command y marcar todas las categorías de cookies como «denied».

Aquí utilizaremos el mismo trigger que en la custom, el Consent Initialization.

Ahora, crearemos una nueva etiqueta también con la plantilla de Simo, pero esta vez, elegiremos el comando update, con la siguiente configuración:

Como véis, lo que tenemos que coger en los campos de Advertising y Analytics son las variables que hemos creado previamente, que devolverán granted o denied en función de la elección del usuario. Si miramos cómo se comporta esta configuración (gracias a los eventos de dataLayer que le hemos dicho que lance), podemos ver lo sencillo y visual que se recoge. Aquí tendríamos el primer lanzamiento, con la configuración por defecto, que marca todo como ‘denied’:

En el siguiente paso, donde se hace la actualización, vemos cómo cambia ya el campo de analytics:

Como véis, con una configuración mucho más sencilla gracias a las plantillas, conseguimos un resultado igual en funcionamiento y mejor en visualización.

Método 3 (oculto): CMPs

Pues sí, existe un último método oculto que también puede realizar esta configuración y que nos ahorra tener que pasar por todos los pasos anteriores: las integraciones con CMP. Google ha estado trabajando con diversas compañías (entre ellas CookieBot, Didomi, OneTrust, etc.) para que la integración de Consent Mode fuera lo más sencilla posible. Y la verdad es que creo que lo han conseguido. Os voy a mostrar el caso de CookieBot por ejemplo para que lo entendáis. La propia plantilla de tag desarrollada por CookieBot ha añadido una sección de consent mode en el que puedes elegir tu configuración por defecto y el tiempo que tiene que pasar para el update:

Por tanto, esto es lo único que tienes que hacer. Ya está. Sí. Puedes irte. Aquí podemos ver cómo actúa de la misma manera:

¿Por qué no he mostrado esto desde el principio cuándo es la forma más sencilla? Porque no siempre va a ser útil. Puede que no estés trabajando con GTM, puede que estés trabajando con un CMP que no tiene integración o puede que estés trabajando con un sistema de consentimiento que sea un desarrollo propio del cliente, por ejemplo. Si sólo mostrase esta opción nos quedaríamos totalmente huérfanos si estuviéramos en estas situaciones.

Conclusiones

En esta entrada hemos visto cómo podemos integrar Google Consent Mode de 3 formas distintas a través de GTM. Hemos ido de la opción más «técnica» a la menos, pasando por una solución intermedia (que es mi recomendación). Gracias a este nuevo desarrollo de Google seremos capaces de recoger información sobre usuarios que no acepten la configuración de cookies de forma anónima y, de esta manera, tener una visión más certera y global de lo ocurre en nuestra web o en nuestras campañas.

2 comentarios sobre “Google consent mode y gtm

Deja un comentario