Múltiples seguimientos de Google Analytics con Tag Manager
En el primer Curso de Tag Manager en Madrid, con pleno de Havas Media prácticamente, mi amigo Javi Martín (gran analista digital madrileño, afincado en Londres), hizo esta pregunta:
¿Se pueden mandar datos a varias propiedades de Analytics con la misma etiqueta de GTM?
A veces hay que ir a la fuente de información más original de todas: Google, quien todo lo ve y todo lo sabe!! Gracias a este post de Krista Seiden, evangelizadora y formadora de Google, especializada en Analytics y Tag Manager, que ha ayudado a aclara
r esto; a mi compi Aitor García, por ayudarme con aspectos más técnicos; y a Simo Ahava, por facilitarnos la solución técnica. Va por ti, Javi 😛
Vamos a ver cómo realizar un tracking de Google Analytics múltiple, es decir, cómo mandar información a varias propiedades de Google Analytics desde una misma etiqueta de Google Tag Manager.
Para empezar, por un lado está la complejidad de ejecutar esto técnicamente hablando, y por otro, nos gustaría aclarar de una vez por todas qué pasos es necesario seguir para crear un doble seguimiento en un sitio web que sea 100% correcto (y sin que salga el dichoso aviso de Google Tag Assistant entre otras cosas).
> ¿Cuándo incluir varios seguimientos en un sitio web y mandar datos a propiedades diferentes de GA?
> ¿Es correcto incluir más de un tracking code de Google Analytics?
> El objeto de seguimiento de Google Analytic: notas técnicas
> ¿Cómo activar etiquetas de GA varias veces seguidas?: Hit Callback en Google Analytics
¿Cuándo incluir varios seguimientos en un sitio web y mandar datos a propiedades diferentes de GA?
Esto puede ser deseable a veces, por ej. si tenemos varios sitios relacionados entre sí, podemos tener un seguimiento normal por separado para evaluar cada dominio de cerca (y sin muestreo); y además otro seguimiento multidominio incluyendo todos los dominios que queramos seguir conjuntamente. Según la propia documentación de Google: “En algunos casos es recomendable enviar datos a varias propiedades de Google Analytics simultáneamente. Esto resulta útil para sitios web que tienen varios propietarios que supervisan determinadas secciones de un sitio web; cada propietario podría ver su propiedad.”
Tiene algunas ventajas de tener un tracking múltiple frente a contar con un único seguimiento multidominio (y punto, sin las propiedades individuales), como por ejemplo:
- Lo más importante: Reducción / minimización del problema de muestreo al generar propiedades separadas. Cuando se trata de portales con un cierto volumen de tráfico, si además reunimos en una misma propiedad distintos dominios, estamos comprando muchas papeletas (o tirándonos cuesta abajo y sin frenos) para perder potencia y fiabilidad de los datos en la cuenta multidominio, pues cada vez tendrá más y más hits, y con ello más posibilidades de tener un muestreo elevado. Al mantener propiedades separadas, podremos llegar a datos más reales si los necesitamos. Hasta podría darse el caso de que si tuviéramos un portal enorme que sobrepasara los límites de recopilación de Google Analytics, podríamos separar el site “en trozos” y luego hacer un multidominio con todos ellos. Quizá te interese este post (EN): 5 ways to get unsampled data in Google Analytics.
- Capacidad para configurar mejor cada propiedad de Google Analytics. Por ej. para poder conectar Analytics con Search Console, existe una relación 1 a 1, Es decir, solo podemos establecer un dominio por cada propiedad de GA. Osea, si tenemos varios dominios en una propiedad multidominio, como mal menor elegiremos solo uno para Search Console y perderemos el resto de datos conectados.
¿Es correcto incluir más de un tracking code de Google Analytics?
Llegados a este punto nos toca entrar en aspectos más técnicos. Para empezar: ¿Es correcto hacer esto? ¿Se pueden incluir varios seguimientos de analítica en un mismo sitio web, varios códigos de Google Analytics instalados/insertados por Tag Manager?
Resumiendo, la versión oficial de Google al respecto: Para código Classic Analytics (ga.js) se desaconsejaba hacerlo, pero con Universal Analytics (analytics.js) está permitido – solo que hay que personalizar el tracking de acuerdo a sus instrucciones -.
El proceso recomendado por Google consiste en crear objetos de seguimiento independientes para que la información se distribuya correctamente entre las diferentes propiedades de Google Analytics. En otro caso, los hits podrían enviarse todos por error usando el primer objeto de seguimiento (el que tiene el nombre del objeto de seguimiento por defecto de Google Analytics). ¿Y cómo hacemos esto? Renombrando el objeto de seguimiento en uno de ellos. Veamos las instrucciones para hacer esto en la ayuda de Google Analytics.
Trabajar con varios objetos de seguimiento
Para realizar el seguimiento de los datos de dos propiedades independientes, se deben crear dos objetos de seguimiento independientes y al menos uno de ellos debe tener nombre. Con los dos comandos siguientes se crea un objeto de seguimiento predeterminado y otro con el nombre “clientTracker”:
ga('create', 'UA-XXXXX-Y', 'auto');
ga('create', 'UA-XXXXX-Z', 'auto', 'clientTracker');
Ejecutar comandos para determinados objetos de seguimiento
Para ejecutar los comandos de analytics.js para un determinado objeto de seguimiento, se debe anteponer al nombre del comando el del objeto de seguimiento. Si no se especifica un nombre de objeto de seguimiento, el comando se ejecuta en el predeterminado.
Para enviar las páginas vistas para los dos objetos de seguimiento, se deben ejecutar los dos comandos siguientes:
ga('send', 'pageview');
ga('clientTracker.send', 'pageview');
Y como recomendación, lo mejor es hacer esto con GTM:
“The days of double tagging a website via code on your page are gone… Well, not really, you can still do it, but I wouldn’t recommend it. In fact, it’s never been a highly recommended practice for a many reasons, here are a couple:
– Multiple instances of the classic GA tag (ga.js) can result in inaccurate data collection, processing, or reporting. If not setup properly multiple tags can cause competing calls to the cookie, causing the visitor ID to reset with every action on a page (this will 2x, 3x, or more over count you site data).
– It’s harder to maintain because it’s 2 separate code blocks.
What’s the solution then? Google Tag Manager! It’s actually really easy to setup GTM to fire to two analytics properties at the same time.”
Fuente: Bloggerchica.com (Krista Seiden)
El problema: la solución propuesta está genial (en GTM, ir copiando cada etiqueta de UA-1 y duplicándola para UA-2). Es la solución más correcta en teoría 🙂 Pero… ¿qué ocurre con ella? es poco eficiente si tenemos que replicar un seguimiento completo y complejo en GTM (con multitud de etiquetas: pageview, virtual, events, etc.). Sería un proceso demasiado pesado duplicar todo el tracking parte a parte.
Por tanto, nuestra intención es hacer que con una única etiqueta se lance 2 veces o más por hit, de manera consecutiva y a diferentes propiedades de Analytics. La única diferencia entre las sucesivas instancias de etiqueta creadas será ciertos valores clave en ella: nombre del objeto de seguimiento y, por supuesto, UA- de seguimiento; en principio manteniendo todos los demás igual. ¿Pero cómo hacemos esto? El qué queremos ya está más o menos claro, pero no el cómo…
El objeto de seguimiento de Google Analytics: notas técnicas
Por la forma en que funciona Google Tag Manager, cada vez que se activa una etiqueta de Google Analytics se crea un tracker name / nombre de objeto de seguimiento único automáticamente: “GTM + Current timeStamp”, lo que es correcto y sirve para la mayoría de los casos. Lee si quieres más en este post de David Vallejo o en este otro de Simo Ahava. En resumen: para enviar los datos a una única propiedad – caso estándar – no hay problema, como siempre, nos olvidamos de configurar nada porque GTM asigna automáticamente los nombres de objeto de seguimiento en las etiquetas y esto está perfecto así, llega todo correcto.
NOTAS TÉCNICAS IMPORTANTES:
Cada objeto de seguimiento solo puede mandar valores a una propiedad web. Y suele tener asociados unos valores de configuración “globales”.
>> Dos etiquetas de Google Analytics con un mismo nombre de objeto de seguimiento compartirán la configuración de esos valores.
>> En cambio, etiquetas con distintos nombres de objeto de seguimiento pueden mandar datos a la misma propiedad web, pero todos sus valores de configuración serán independientes. Es por ello que solemos duplicar a partir de etiquetas creadas y replicar así todas las configuraciones de etiqueta como dimensiones personalizadas por ej. en cada una de las etiquetas que creamos, no se hereda.
Si queremos que se compartan o hereden los valores podríamos forzar que las tags compartan el Tracker Name. Pero OJO!!! Todo esto es un poco bastante lío, avanzado nivel máximo, pero es que había ya ganas de aclarar esta duda! Si queréis ver el tema de manera completa y con mucha más rigurosidad, aquí tenéis un muy buen post al respecto.
En resumen, importantísimo: cuidado con tocar este campo si no se comprende al 100% lo que se está haciendo.
Por lo visto hasta ahora, los usos prácticos principales del campo Set Tracker Name / Renombrar Objeto de Seguimiento en Tag Manager serían:
- Marcado pero dejado en blanco (para hacer compatible tracking en código on site con tracking vía GTM, otro supuesto avanzado, muy muy útil!).
- Relleno compartiendo nombre (para compartir valores de configuración básicos, OJO que este supuesto es muy delicado pues hay que conocer perfectamente la lógica interna de GTM para saber qué valores se heredan, cuáles no, cuáles hay que limpiar, etc., de momento desaconsejamos hacerlo así en la mayoría de casos).
- Relleno con tabla de consulta que genere nombres distintos en cada instancia de la misma etiqueta (para lanzar varias veces la misma etiqueta de GA a diferentes propiedades, como queremos hacer).
- Opción por defecto: sin marcar ni rellenar. Válido para la mayoría de los casos. Se generan nombres automáticamente y esto es lo correcto parar un tracking estándar de Analytics.
Tracker names distintos para varios seguimientos UA- con la misma etiqueta
Como se trata de lanzar varias veces la misma etiqueta y nos queremos asegurar de que los nombres de objeto de seguimiento sean distintos para que se envíe a dos propiedades distintas (en las sucesivas veces que se active la misma etiqueta queremos que el nombre del objeto sea distinto). Por ello, tendremos que usar este campo de configuración de Google Tag Manager, que es bastante delicado (y que hasta se desaconseja):
“Renombrar objeto de seguimiento”
AL MENOS UNO DE LOS TRACKINGS HA DE TENER NOMBRE DE OBJETO CONFIGURADO
¿Cómo activar etiquetas de GA varias veces seguidas?
(idea de Simo Ahava)
AQUÍ tenéis la fuente y su explicación (v1 GTM), en este post vamos a tatar de sintetizar el proceso y explicarlo – simplificado – con nuestras propias anotaciones y recomendaciones.
Como es lógico, lo complicado es lanzar la etiqueta una segunda vez (o posterior), porque la primera la lanzaremos como siempre en el trigger All Pages por defecto de GTM (Pageview o gtm.js). Para ello, nos vamos a servir de un Campo para Configurar o Field to Set que tenemos disponible en la configuración de etiqueta de Google Analytics y que hasta ahora puede que no hayamos usado: HIT CALLBACK (o función a ejecutar tras el hit).
¿Para qué sirve el campo hitCallback en Google Analytics?
“Al enviar un hit al protocolo de medición, los objetos de seguimiento envían todos los campos que están almacenados actualmente” (Leer más en Documentación de Google Analytics).
“La dirección IP, la cadena de user-agent y la inspección de página inicial que hace analytics.js al crear un nuevo objeto de seguimiento se utilizan para determinar algunos datos como los siguientes:
- La ubicación geográfica del usuario.
- El navegador y el sistema operativo que se usan.
- El tamaño de la pestaña y si está instalado Flash o Java.
- El sitio web de referencia.”
(Leer más en Documentación de Google Analytics)
Pero hay otros muchos datos y campos para configurar que podemos contemplar si deseamos mejorar el seguimiento estándar de analytics.js.
Uno de los ajustes que podemos definir es un callback, un hitCallback concretamente, es decir: código que se ejecutará después de procesar el hit de Google Analytics.
Para ello, lo podremos configurar a nivel de etiqueta de Tag Manager así:
¿Cómo introducimos ahí una función?
Creamos una Variable JavaScript Personalizada con el siguiente contenido y la llamamos {{tag callback function}}.
function() {
return function () {
var maxRepeat = 2;
window.gtm_tag_counter = window.gtm_tag_counter || 0;
if(window.gtm_tag_counter < maxRepeat-1) {
dataLayer.push({'event': 'tagCallback'});
window.gtm_tag_counter += 1;
}
}
}
¿Qué hace esta función?
Crea una variable global de JS para contar cuántas veces se ha lanzado la etiqueta (gtm_tag_counter)
Define un máximo de repeticiones (nº de veces que deseamos lanzar la etiqueta). En este caso 2.
Por último, cada vez que se lanza la etiqueta la función hitCallback hace esto:
- si NO hemos llegado al tope de repeticiones: suma 1 a gtm_tag_counter (contador creado). Y lo más importante: manda dataLayer con evento personalizado llamado “tagCallback“. Usaremos este evento para activar la etiqueta las veces adicionales.
- si ya hemos llegado al tope de repeticiones, entonces no hace nada
Rellenamos el campo hitCallback con dicha variable:
En el ejemplo que proponemos aquí, por hacerlo un poco diferente respecto al post de Simo, queremos que la tag se lance solo 2 veces (por ello en la función cambiamos y pusimos como tope 2):
- En pageview (Trigger: All pages)
- Una segunda vez (Trigger: evento personalizado tagCallback)
A continuación, tendremos que recoger en una Variable JS global (es decir, una variable GTM de tipo Variable JavaScript, no confundir con JavaScript Personalizada) el contador que calcula el número de veces que se ha lanzado la etiqueta:
Este contador nos servirá para hacer el último paso clave: RENOMBRAR EL OBJETO DE SEGUIMIENTO y generar una tabla de consulta (condicional) para el nombre de objeto de seguimiento, y otra para el ID de analytics, dependiendo de a qué propiedad deben mandarse los datos de etiqueta (y en qué turno/evento se ejecute).
Queremos que:
- si el contador tiene valor 0 (0<límite-1=2-1, 0<1): se manda a la propiedad 2. Lo del -1 es porque el contador empieza en 0, así que si tenemos dos casos, tendremos un 0 y un 1, no un 1 y un 2.
- si el contador tiene cualquier otro valor (incluyendo “undefined” o “null” cuando aun no se ha definido): se manda a la propiedad 1
Y para ello creamos las siguientes tablas de consulta y configuramos así la etiqueta:
Para terminar, y como “premio” por haber llegado hasta el final 🙂 sentimos tener que avisar de que esto no se puede probar en la Vista previa y Depuración de Google Tag Manager (el event que empujamos a dataLayer en {{tag callback function}} no se activa en directo en la consola, con lo que no podemos revisar el proceso completo). Para pruebas deberemos publicar y, tras esto, la forma de comprobar que está OK podría ser: revisar en Tag Assistant (también podríamos probar con Recordings), Tiempo Real GA, consola del navegador, etc.
Cap. 26 – GUÍA de Activadores de Google Tag Manager
Cap. 28 – Tracking de eventos AJAX con Google Tag Manager
Muy interesante como planteamiento aunque me temo que en la práctica resulta inviable, o menos que hablemos de implementaciones muy sencillas.
Este problema de poder reportar con GTM a varias propiedades es algo que siempre nos ha generado muchos quebraderos de cabeza, supongo que hasta que GTM ofrezca la solución en su propio Core tendremos que resignarnos a no hacerlo.
Un saludo
Hola, Iñaki:
Muchas gracias por leer nuestro blog.
Como todos sabemos y bien dices, mientras GTM no ofrezca una solución “oficial”, tenemos que limitarnos a usar apaños o “ñapas”, una más de las miles que se usan diariamente en programación…
Nosotros lo hemos probado y funcionar, funciona. Además, al venir acreditado y aconsejado por Krista Seiden de Google, y ser una solución propuesta por Simo Ahava (el megracrack de GTM)… pues eso.
Por último, en implementaciones complejas es precisamente donde más fruto puede dar, ya que andar copiando etiqueta a etiqueta puede ser un proceso tedioso, y mantener actualizado todo a la vez un pelín insostenible, con lo que también se pueden generar conflictos, errores, etc. De la misma forma que activar en un hitCallback de GA puede dar error, una gestión manual de todo por duplicado también.
Un abrazo.
Hola,
Felicitaciones por este post sobre el tema del double tracking que resume muy bien las opciones en Tag Manager. La opción de enviar datos a dos propiedades (double tracker o rollup) existía en el antigo GA y era admitida (aunque Google la desaconsejaba porque muchos cliente no ponían el double tracker, sino que copian el código tal cual de dos propiedades diferentes 😉 ). Brian Clifton, experto en GA y exGoogler, tiene artículos allá por 2009 explicando el tracking múltiple: https://brianclifton.com/blog/2009/03/30/roll-up-reporting-in-google-analytics/
Había varias razones por las que Google no documentó el tracking múltiple y no la recomendaba: 1. Muchos clientes hacían pifías y se equivocaban, porque el múltiple tracker requiere mucha consistencia y enviar completamente en paralelo hits de páginas, eventos, hits de ecommerce… (Era una verdadero quebradero de cabeza analizar/auditar estas implementaciones). 2. Algunos clientes con mucho tráfico abusaban del double tracking, porque esto supone enviar hits por doble (require mayores recursos de procesamiento y almacenamiento). Todavía no existía GA Premium y las propiedades roll-up.
Personalemente creo que para implementaciones sencillas duplicar las etiquetas y renombrar el segundo tracker es suficiente. Sin embargo, si hablamos de etiquetas de GA que cambian frecuentemente y que contienen multitud de “Dimensiones personalizas”, “Page grouping”,… la opción del callback, aunque compleja, tiene sentido.
Estoy seguro que Google no tardará en modificar Tag Manager, para que el tracking múltiple sea más sencillo de implementar y mantener.
Un saludo.
Hola Jaime!
Sí, para implementaciones sencillas yo también recomendaría la solución “standard”. Este hack lo dejaria para ciertos casos complejos donde duplicar puede ser, ya no solo costoso, sino potencialmente problemático: casos de mucha personalización, parámetros adicionales, etc en la configuración… Especialmente si es algo que se modifique regularmente y MUY especialmente si es algo que también pueda estar a cargo de terceras personas 🙂
Saludos!
Hola.
He puesto en práctica este tip con éxito para lanzar las etiquetas a una propiedad estándar y otra “cross domain”.
Gracias!
¡Muchas gracias, Jairo! Nos alegramos de que te haya servido.
Hola,
Felicidades por el artículo. Me ha venido genial, ya que quiero probar a mandar un tag a 50 propiedades. De momento lo he probado con 3 y funciona.
Solo un par de cosas.
En tracker name, ¿no sería input=0 para que envíe al tracker2? Al menos lo he cambiado porque si no, no me funcionaba.
Y en Id Analytics tracker name, sería para tracker 1-> {{ID Analytics 1}} (en la captura pone 2 en ambos).
Si ahora quisiera lanzar un evento para todas las propiedades, supongo que lo podría hacer de la misma manera, ¿no?
Un saludo.
Hola! tengo una pregunta técnica. Tengo 3 propiedades con 5 millones de hits cada una en google analytics free, pero están con Cross domain ¿los hits se suman en todas las propiedades que se gatillan via TagManager?, osea ¿para Google estoy superando los 10 millones de limite free?
Hola!
El limite de 10 millones de hits es por propiedad, independientemente de como hayan llegado a ella.
No hay problema con que todo pase por el mismo GTM, aunque evidentemente cualquier hit duplicado cuenta para todas las propiedades a las que se envíe.