Universal Analytics – Guía práctica de migración

Hace unos días Google anunció la Beta pública de Universal Analytics . Una nueva forma de medir la analítica basada en el usuario y no en las visitas como se realizaba anteriormente.

Es decir, actualmente y sobre todo con el aumento del uso de dispositivos móviles, los usuarios utilizan varios dispositivos para conectarse a una web, y no tan solo dispositivos si no también navegadores.

Podemos tener por ejemplo un usuario que se conecta a nuestra web a través de diferentes navegadores, o incluso desde diferentes dispositivos. Con Universal Analytics la intención en basar la medición en el usuario, pudiendo unificiar todos los medios mediantes los cuales accede a nuestros servicios.

Para ello desde Google han creado un nuevo protocolo, Google Analytics Measurement Protocol, podéis ver hacer click en este Cheatsheet para ver la equivalencia del protocolo actual con el nuevo.

Mediante este protocolo podremos enviar los datos de nuestros usuarios desde un entorno web, desde una aplicación para móviles, o desde cualquier otro entorno que nosotros queramos envíando los datos directamente al endpoint de Universal Analytics.

Tal vez el reto para la gran mayoría de usuarios sea la migración del etiquetado actual de nuestros sitios web al nuevo. Pero si nos fijamos bien, no es tan complicado o trabajoso como pueda parecer en un principio y tan solo conlleva el cambio de cómo lanzamos los datos.

<!-- Google Analytics -->
<script>
(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-XXXXXX-Y');
ga('send', 'pageview');

</script>
<!-- End Google Analytics -->

La siguiente tabla nos muestra los cambios a la hora de hacer nuestras llamadas, comparando como lo haríamos con Google Analytics a cómo debemos hacerlo con Universal Analytics. Esto es un 80% de lo nuevo que debemos aprender para realizar nuestras nuevas implementaciones.

AntesAhora
_gaq.push(['_trackPageview','mipagina.html'])ga(‘send’, ‘pageview’,'/mipagina.html’);
_gaq.push(['_trackEvent', category, action, opt_label,opt_value,opt_noninteraction])ga(‘send’, event, category, opt_action, opt_label, opt_value, {‘nonInteraction’: 1});
_gaq.push(['_trackSocial', network, socialAction, opt_target, opt_pagePath]);ga(‘send’, ‘social’, ‘socialNetwork’, ‘socialAction’, ‘socialTarget’, {‘page’: ‘/my-new-page’});
_gaq.push([‘_trackTiming’, category, variable, time, opt_label, opt_sample]);ga(‘send’, ‘timing’, ‘timingCategory’, ‘timingVar’, timingValue);
_gaq.push(['_addTrans', trans_id,store_name,total,tax,shipping,city,state,country]);ga(‘ecommerce:addTransaction’,{‘id’:’1234′,’affiliation’:'Acme Clothing’,'revenue’:’11.99′,’shipping’:’5′,’tax’:’1.29′});
_gaq.push(['_addItem', trans_id,sku,product_name,category,unit_price,quantity]);ga(‘ecommerce:addItem’,{‘id’: ’1234′,’name’:'Fluffy Pink Bunnies’,'sku’:'DD23444′,’category’:'Party Toys’,'price’:’11.99′,’quantity’:’1′});
_gaq.push(['_trackTrans']);ga(‘ecommerce:send’);

Universal Analytics carga algunas funcionalidades como el seguimiento de ecommerce de manera externa con el fin de poder mantener el código principal lo más liviano posible. Es decir si queremos realizar la medición de un ECommerce deberemos especificar que queremos cargar el plugin para trabajar con transacciones.

Para hacerlo, tan solo deberemos añadir una línea de código a la etiqueta que tengamos en nuestra página de la siguiente forma:

ga('require', 'ecommerce', 'ecommerce.js');

Listo, ya podemos enviar nuestras transacciones, sencillo no ?.

A su vez, el nuevo analytics.js , añade dos nuevos tipos de hits, que para los entornos web habituales no nos van a ser de mucha utilidad pues está centrado en las aplicaciones. Se trata de las Excepciones y los vistas de aplicación (appview y exception), ámbos se envian de igual manera que los anteriores mediante el método “send”.

Con el primer tipo de hit, podremos enviar que pantalla de nuestra aplicación se está visualizando ( el equivalente a una página vista ), y con el siguiente las excepciones/problemas con lo que se encuentre el usuario, por ejemplo un problema de la base de datos.

Configuración de un perfil en Universal Analytics

Sin duda alguna este es uno de los dos mayores cambioes, puesto que a partir de ahora el control de sesiones (visitas) y de fuentes, se realiza desde los propios servidores de Google Analytics.

Añadir nuevos motores de búsqueda para que se muestren como resultados orgánicos, el tiempo de duración de una visita (por defecto 30min), el tiempo de duración de las campañas (por defecto 6 meses), ahora se realiza desde la interfaz web de Google Analytics. No es necesario añadir configuraciones a nuestra página.

Las siguientes acciones se realizan ahora desde el interfaz:

  • _addIgnoredOrganic
  • _addIgnoredRef
  • _setCampaignCookieTimeout
  • _setSessionCookieTimeout
  • _addOrganic
  • _clearIgnoredOrganic
  • _clearIgnoredRef
  • _clearOrganic

El otro cambio importante es que desaparecen las variables personalizadas (custom variables) en favor de las dimensiones personalizadas (custom dimensiones) .

Ahora se crean en el interfaz y los enviaremos los datos en base al índice de nuestra dimensión, por ejemplo dimension1, dimension2 (dimension[0-9]+) . Tanto el nombre de la variable como el alcance ( scope ) , se fija durante la creación de la dimensión.

A pesar de parecer algo más laborioso de implementar tiene una gran ventaja sobre la versión anterior de Google Analytics, Universal Analytics permite crear 20 dimensiones personalizadas (y otras tantas métricas) , en la versión Premium este límite se amplía a 200 por propiedad.

Hay algunos pequeños cambios en los límites y quotas, si antes el límite era de 10M de hits por mes y propiedas, con Universal Analytics este límite será 200.000 hits por visitante al día. Lo que mejora el límite anterior sin duda alguna.

El límite de hits por sesión se sigue manteniendo en 500.

Como podemos ver, los cambios para la medición de nuestras webs, no son tan complicados, y básicamente en la mayoría de situaciones se basa en cambiar el típico _gaq.push(), por ga(”) .

A nivel de las cookies se simplifica todo de manera enorme puesto que pasamos de utilizar cuatro cookies, a utilizar tan solo una que tiene por defecto el nombre de “_ga ” (podremos cambiar el nombre en la configuración del tag si fuese necesario),  y la cual contiene el básicamente el ID de usuario .

NOTA
Actualmente no hay documentación sobre cómo realizar al medición entre dominios con Universal Analytics. En los foros por parte de ingenieros de Google, se ha comentado que la documentación se haría pública a finales de este mes.

La forma de configurar nuestro dominio para funcione, es fijar el allowlinker a true, y poner también el dominio para las cookies (antiguo _setDomainname).

ga('create', 'UA-286304-9', {'cookieDomain': 'yourdomain.com','allowLinker': true});

Falta saber como pasar las cookies entre los dominios ( antiguo _link ).

  • alvaro

    Hola David. Excelente artículo que sin duda me servirá para realizar la migración con más garantías.

    Hay una cosa que no me encaja. Actualmente queremos controlar una intranet con analytics pero la dirección es http://intranet y como ves no existe dominio. ¿Cómo puedo abordar esto con la nueva configuración de Universal Analytics? Antes bastaba con poner ‘_gaq.push(['_setDomainName', 'none']);’

    Muchas gracias

    • http://twitter.com/thyng David Vallejo

      Buenas Alvaro,

      Gracias por tu comentario.

      Para la medición de la intranet, deberías crear el tracker pasándole el cookiedomain como “none”. De la siguiente manera:
      ga(‘create’, ‘UA-XXXX-Y’, {‘cookieDomain’: ‘none’});

      Un saludo

  • Guest

    Buenas Alvaro,

    Gracias por tu comentario.

    Para la medición de la intranet, deberías crear el tracker pasándole el cookiedomain como “none”. De la siguiente manera:
    ga(‘create’, ‘UA-XXXX-Y’, {‘cookieDomain’: ‘none’});

    Un saludo.

  • alvaro

    Gracias a ti por tu comentario y tan rápido!!
    Estoy intentado hacer que funcione pero llevo 2 días atascado.

    Creo que funciona. Ahora voy a intentar crear variables personalizadas para recoger datos del usuario. ¿Sabes como funciona ahora el tema de las dimensiones?

    Nuestra intranet está hecha con SharePoint y los empleados son usuarios del directorio activo de windows. Estos usuarios tienen una serie de atributos como categoría, oficina a la que pertenecen, departamento etc. Quiero crear una segmentación por cada atributo.

    Se supone que la manera de implementarlo de la manera antigua es la siguiente:
    _gaq.push(['_setCustomVar', 1, 'Category', 'Manager']);

    ¿Cómo podría hacer esto?

    Muchas gracias de nuevo

  • Pingback: Universal Analytics: Medición entre dominios ( Cross-Domain Tracking )

  • Angel

    Hola David, veo que cuando voy a crear una nueva cuenta de
    analytics me indica que no tiene la siguiente opción (que si esta
    presente en el clasico analytics):

    Advanced advertisement tools (AdSense, Content Experiments, DFA, Remarketing) [me sale proximamente - comming soon=]

    ¿Qué recomiendas? usar desde ya (para una nueva cuenta) Universal Analytics ¿o no?

    Gracias anticipadas por tu respuesta.

    • thyngster

      Hola Angel,

      Personalmente te recomiendo que uses una medición dual por ahora , es decir que utilices los dos tags. A mi me salen métricas bastante diferentes entre ambos y además como comentas algunas cosas no están disponibles todavía.

      Como utilizar los dos tags en la misma página es compatible pues tampoco habrá ningún problema,.

  • http://www.dicascityville.com/ Alyen

    Hola David, tengo una duda, para q salga las url de los subdominios tengo q dejar el codigo asi :

    (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-0000000-00′, ‘nombre.com’);
    ga(‘create’, ‘UA-0000000-00′, {‘cookieDomain’: ‘sub.nombre.com’,'allowLinker’: true});
    ga(‘send’, ‘pageview’);

    Un saludo y muy bueno post.

    • thyngster

      Alyen todas mis disculpas, por algún motivo no recibí la notificación de este comentario … :/ .A qué te refieres con que salgan las urls de los subdomains ?, no entiendo muy bien la pregunta, asI como el hecho que estes inicializando 2 trackers tampoco me cuadra, si todavía tienes la duda y me explicar un poco más seguro que la solucionamos :)

  • Chema

    Hola tengo una duda,

    En Universal, al usar ga(‘ecommerce:addTransaction’,{‘id’:’1234′,’affiliation’:’Acme Clothing’,’revenue’:’11.99′,’shipping’:’5′,’tax’:’1.29′}); se pierden algunos campos como son el pais, ciudad, etc

    ¿Como sabemos entonces desde donde se hace la transacción y demás?

    • thyngster

      Segmentando las transacciones con los datos demográficos de las visitas. En cualquier caso, siempre podrás enviar custom dimensions para guardar esos datos de nuevo si los necesitas , en UA tienes disponibles hasta 20 slots para dimensiones personalizadas :)

      • Chema

        Eso pensaba yo.

        Muchas gracias por contestar tan rapido!

        • thyngster

          Qué menos Chema :) Gracias a ti por leerme!