Do not speak Spanish? Read this post in English.

Martes, 15 d octubre d 2013.

Cómo usar varias cuentas de Google Analytics (Universal o Classic) a la vez

Escribo este post porque es un tema muy recurrente que me solicitan mucho y con el que siempre acabo explicando lo mismo por email o por teléfono. Hay veces que no encuentras una documentación que explique lo que tu quieres por lo que he preferido dejar colgada en el post esta pequeña explicación.

Si, hoy va de un tema muy simple pero que se resuelve mal en muchos sitios: Cómo incluyo dos o más cuentas de Google Analytics en un site.

Cuentas de Analytics

Lo primero es diferenciar qué es una cuenta de Google Analytics. Las cuentas, para entendernos, son los ID's de recogida de información que usa analytics para reconocer donde debe guardar cada dato que recibe. Estos ID's tienen un formato semejante a este: "UA-XXXX-Y", por ejemplo "UA-1234567-89".

Una cuenta no es una base de datos, pues luego sobre cada cuenta se pueden, mediante el administrador de Google Analytics crear distintos perfiles (o "vistas" como quieren llamarlos ahora) que filtran todos esos datos recogidos con ese ID y crean distintas versiones (bases de datos distintas) de conjuntos de datos a analizar.

¿Seguro que necesitas una nueva cuenta?

Lo primero que debes definir es si realmente necesitas una nueva cuenta. No serías el primero que realiza implementaciones para algo que podía haber hecho en 2 clicks. Una cuenta nueva solo tiene sentido en uno de estos casos:

  • Debe ser administrada completamente por una tercera parte (tu no debes tener control sobre lo que ahí se hace)
  • Realizamos un cambio de implantación con código de captura distinto: Variables personalizadas distintas, ecommerce distinto, cambiar a universal analytics, etc.
  • Nuestra estructura de perfiles es tan grande (tenemos muchos) que merece la pena separarlos en cuentas por motivos de organización interna

En el resto de los casos hay que pensar que un perfil cumplirá perfectamente con nuestros propósitos y con una sola cuenta y filtros para un u otro perfil resolveremos el problema. Algunos casos clásicos:

  • Un proveedor quiere ver el tráfico que nos envía: Perfil para el proveedor al que tiene acceso solo de visualización y donde filtramos solo lo que queramos que vea
  • Un directorio o proceso especial que deseamos seguir por separado con otros objetivos pero con misma configuración: Creamos un perfil filtrando por URLs solo esa parte de la web
  • Seguimiento de usuarios en el admin (en webs pequeñas): Una variable personalizada que indique si el usaurio está logado como admin y un perfil que filtre a partir de esa variable

Como se ve, hay muchos casos que una cuenta nueva no es la mejor solución. Ahora, pensemos que estamos en uno de los casos anteriores y realmente necesitamos ésa nueva cuenta... ¿Qué y cómo lo hacemos?

Paso 1: Separemos Google Analytics Classic de Universal Analytics

A día de hoy existen dos posibles códigos de implementación de analytics (3 si tenemos en cuenta el viejo código clásico no aséncrono, pero ese casi nadie lo usa ya).

El código classic lo detectaremos por que incluye el archivo "ga.js".

Y el código de universal hará otro tanto con el archivo "analytics.js"

Dentro del administrador de analytics podemos saber que tipo de cuenta es cada una entrando al administrador y revisando sus opciones: por ejemplo mirando el código que nos ofrecen o si tiene opciones para usar dimensiones personalizadas o variar campañas y tiempo de cookies (en cuyo caso esa cuenta será de universal analytics.

Si la nueva cuenta la creamos desde cero seguramente la habremos creado como universal. Si la cuenta tiene ya un par de años seguro que será classic.

Lo primero que hay que saber es que ambos clódigos (universal y classic) no confluyen, no usan las mismas variables y pueden ser usados al mismo tiempo sin problemas. Esto quiere decir que en el caso de que queramos incluir dos cuentas: una universal y otra classic bastará con copiar los dos códigos uno detrás de otro y hacer en cada uno los cambios que deseemos, tan fácil como eso.

El problema por lo tanto vendrá si después de hacer esta separación 2 o más cuentas usan el mismo sistema. Por ejemplo:

  • Queremos capturar en 2 cuentas classic
  • Queremos capturar en 2 cuentas universal
  • Queremos capturar en 3 o más cuentas

En esos casos, debemos separar ambas implemetnaciones (universal y classic) y tratar las dos partes por separado pues la solución es muy similar pero el código cambia.

Usar dos cuentas de Google Analytics Classic a la vez

Aquí el error suele estar en copiar y pegar dos veces el código de Analytics. Esto puede parecer que funciona pero provocará algunos fallos además de una gran perdida de recursos:

Por un lado al incluir el código 2 veces estaremos incluyendo dos veces el archivo "ga.js" que si bien seguramente se cacheará resulta una perdida de tiempo de carga bastante estúpida.

Por otro y más importante aun, las variables se solaparán "chafandose" a medida que se escriben. Lo que significa que el tracker de Analytics se cargará con una cuenta, lanzará la página vista y luego hará otro tanto con la otra cuenta. Hasta ahí bien, pero ¿qué pasará cuando lancemos un evento u otro tipo de hit (ecommerce, por ejemplo)? Pues que solo se lanzará en la segunda cuenta pues el tracker de la primera ya no existe pues lo hemos sobreescrito al volver a iniciar de nuevo analytics con la segunda cuenta. En resumen: una chapuza.

Para solucionar esto analytics nos permite crear nombres de tracker en su código de forma que encapsulemos la actividad que realizamos en una zona distinta y así no crucemos una implementación con la otra. Para ello simplemente tenemos que añadir ese nombre de variable (siempre el mismo) a cada llamada que hagamos. Es decir que si queremos hacer una implementación básica pero en la variable "separado" nuestro código quedaría como sigue:

  var _gaq = _gaq || [];
  _gaq.push(['separado._setAccount', 'UA-XXXXX-X']);
  _gaq.push(['separado._trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

Notese que simplemente hemos añadido "separado." al principio de cada llamada a _gaq.push() y con eso ya hemos separado ese flujo del resto.

Esto así suelto no tiene mucho sentido, pero vayamos al caso de 2 cuentas. Una Vieja en la que capturabamos todo el tráfico hasta hace poco y una más moderna (aunque también classic) donde capturamos una configuración mejor resuelta. En este caso podríamos optar por llamar a una "old" y a la otra "new" y tendríamos el siguiente código:

  var _gaq = _gaq || [];

  _gaq.push(['old._setAccount', 'UA-XXXXX-YY']);
  _gaq.push(['old._trackPageview']);

  _gaq.push(['new._setAccount', 'UA-XXXXX-ZZ']);
  _gaq.push(['new._trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

Como veis en lugar de incluir dos veces todo el código de analytics lo que hemos hecho ha sido replicar solo las llamadas de _gaq.push() poniendo un nombre a cada llamada. Primero hemos creado una cuenta ("UA-XXXXX-YY") bajo el nombre "old" y hemos lanzado la página vista. Luego hemos hecho otro tanto con la otra cuenta ("UA-XXXXX-ZZ")-

¿Y para otros códigos que hemos añadido?

Es probable que tu código no sea tan simple como este. Habrás definido tu dominio, habrás creado eventos o incluso variables personalizadas y hits de ecommerce. No hay problema. Solo tienes que pensar que ahora todo tiene nombre y el mismo ejercicio que has realizado tendrás que hacerlo en cada llamada o manipulación de analytics que realices.

Un sencillo ejemplo para eventos:

Lanzar un evento solo en la nueva cuenta:

_gaq.push(['new._trackEvent','categoria', 'accion', 'etiqueta']);

Lanzar un evento para las dos cuentas a la vez:

_gaq.push(['new._trackEvent','categoria', 'accion', 'etiqueta']);
_gaq.push(['old._trackEvent','categoria', 'accion', 'etiqueta']);

Si, puede resultar tedioso, sobretodo si queremos dumplicarlo todo. Pero es lo que hay, si queremos funciones que lancen en varias cuentas a la vez o replicamos código o creamos una funcion que nos haga el trabajo de replicación con javascript. Por ejemplo:

// definiendo la función
var gaEventIn2Accounts = function ( account1, account2, cat, action, label, value ) {
  _gaq.push([ account1 + '._trackEvent', cat, action, label, value ]);
  _gaq.push([ account2 + '._trackEvent', cat, action, label, value ]);
}

[...]
// y para lanzar el evento
gaEventIn2Accounts( 'old', 'new', 'categoria', 'accion', 'label', 1);

Esto es solo un ejemplo, no lo copieis que llegados a este punto un programador lo hará más a su medida.

Y bien, ahora se trata solo de asegurarse usando el informe de real time de que todo se captura como deseamos. Suele ser un trabajo sencillo salvo cuando no sabemos realmente que o cuantas implementaciones de analytics tenemos en el site, lo que ya es un problema por si mismo...

Usar dos cuentas de Universal Analytics a la vez

En el caso de Universal el sistema es EXACTAMENTE el mismo. Tenemos los mismos problemas y Google Analytics nos ofrece la misma solución. Lo único que cambia es que las funciones de Universal Analytics no son las mismas y por lo tanto la adaptación se hace en otras funciones...

Ya no tenemos "_trackPageview" ni "_trackEvent" sino que trabajamos con "create", "send" y "set". En este caso por lo que serán estas funciones a las que tendremos que indicar hacia que nombre de cuenta deben ir dirigidas.

La única excepción será la orden de crear cuenta, donde deberemos indicar el nombre como atributo de la llamada y no directamente.

De la misma forma que antes os muestro como quedaría una implementación normal si quisiesemos crear una cuenta con nombre separado:

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXXXX-YY', {'name': 'separado'});
ga('separado.send', 'pageview');

Así pues si realizasemos la misma implementación de antes (vieja y nueva) con dos cuentas de universal se realizaría de esta forma:

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXXXX-YY', {'name': 'old'});
ga('old.send', 'pageview');

ga('create', 'UA-XXXXX-ZZ', {'name': 'new'});
ga('new.send', 'pageview');

Y como antes cualquier implementación que hagamos pasaría a incluir el nombre delante de cada llamada:

Evento solo en la cuenta nueva:

ga('new.send', 'event', 'categoria', 'accion', 'etiqueta', 1);

Evento en las dos cuentas:

ga('new.send', 'event', 'categoria', 'accion', 'etiqueta', 1);
ga('old.send', 'event', 'categoria', 'accion', 'etiqueta', 1);

Y como antes podríamos crear funcionees que nos permitiesen ahorranos duplicarlo todo.

Como os decía, el principio es exactametne el mismo que con classic, lo que cambia es que ahora se aplica a las llamadas de universal y por lo tanto varía un poco el resultado final.

No hay que tener miedo a la doble cuenta

Usar dos cuentas debe estar justificado. No vamos a acribillar a analytics a peticiones porque si, pero tampoco hay que tener miedo a hacerlo cuando toca.

Vivimos un momento en el que puede ser muy normal que tu site use dos cuentas distintas. Por un lado tenemos al nuevo Universal Analytics, que todos queremos usar pero no a costa de perder el histórico de datos de nuestro site... ¿solución? Incluir el nuevo código sin quitar el viejo y ya tendremos ambos beneficios.

También vemos como muchas empresas empiezan a darse cuenta de los beneficios que pueden sacar de realizar una implementación profesional de Google Analytics y es que no es lo mismo tener Google Analytics + 3 eventos del tipo corta y pega que una implementación que esté orientada a medir nuestros criterios de negocio y KPI. Son realmente mundos distintos. En estos casos también es normal llegar a una doble cuenta para no perder continuidad entre datos viejos y nuevos.

Yo en mis implementaciones orientadas a negocio, en casi todos los casos acabo usando una doble cuenta temporalmente que permita a la web seguir midiendo como lo hacía hasta capturar en la nueva cuenta (mejor orientada a su negocio) suficientes datos como para trabajar con algo de perspectiva. Eso suele provocar al menos un año de convivencia entre ambas cuentas.

Motivos puede haber muchos, miedo, espero que ya no...

Temas Relacionados: analitica web

Autor:

3 Comentarios para “Cómo usar varias cuentas de Google Analytics (Universal o Classic) a la vez”

  1. Cesar dice:

    Hola Iñaki,
    un articulo muy interesante la verdad y os cuento lo que nos ha pasado a nosotros.
    Donde trabajo (sitio web de una administración publica) nos ha sucedido exactamente lo que comentas, nos hemos quedado sin perfiles porque en los últimos años a crecido mucho. En uno de ellos almacenamos el valor agregado de todos los sitios web que la forman y para nosotros tiene mucho valor seguir teniendo ese dato.
    Nos pusimos en contacto con Google para ver si nos ampliaban el número de perfiles pero nos dijeron que ya no se hacía y que la única forma era crear otra propiedad web donde tendríamos otros 50 perfiles mas. Por lo comentado anteriormente esta solución no cubría nuestras necesidades. Así que solo nos quedaba duplicar el código, se lo propusimos en el caso de soporte que tuvimos y nos recomendaron encarecidamente que no lo hiciéramos. Lo puedo entender porque hay que controlarlo muy bien pero tal y como lo has explicado está muy claro y no parece que haya otra solución.

    Saludos!

  2. Pablo dice:

    Enhorabuena por el post, Iñaki.
    ¡Muy bueno una vez más! 😉

  3. Belén dice:

    Fantástico post!! Sencillo y bien explicado!!

    Iñaki, justo como comentas, en ocasiones, y según las necesidades del negocio, tenemos que ir más allá del código por defecto que facilita Google Analytics.

    En mi caso ahora me encuentro con un universo difícilmente manejable de sites, cuentas, datos, “configuraciones” heredadas… y la solución más óptima es empezar de cero haciendo nuevos ajustes y, muy importante, sin perder el histórico y dando tiempo a la nueva configuración a dar sus frutos.

    Directamente guardado en favoritos y con una copia impresa encima de mi mesa 😉

Anímate y deja tu comentario

Esto son experimentos, no preguntes ;) prueba metadescription Prueba title