4 Feb 2016
Tracking múltiple Google Analytics
Lectura: 14 mins.
|
Dificultad:

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?

Solved! multiples trackings analytics
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?

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');

Fuente:
Trabajar con varios objetos de seguimiento en Google Analytics (documentación oficial Google Analytics)

 

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:

  1. 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!).
  2. 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).
  3. 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).
  4. 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

Tracker name Google Analytics (Tag Manager) - Nombre del Objeto de seguimiento

¿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í:

hitCallback Google Analytics vía GTM

¿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:

  1. 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.
  2. si ya hemos llegado al tope de repeticiones, entonces no hace nada

Rellenamos el campo hitCallback con dicha variable:

Tag callback function Google Analytics

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):

  1. En pageview (Trigger: All pages)
  2. Una segunda vez (Trigger: evento personalizado tagCallback)

Custom event Tag Callback

Triggers GA tag 2 times

 

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:

Tag callback counter

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:

GTM Lookup Table: tracker name counter tag Lookup table: ID analytics tracker name

Analytics Tag sent two times via tag manager

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.