En Google Analytics el uso de dimensiones personalizadas es casi una necesidad. Utilices la metodología que utilices, te permiten acercar el mundo de tu negocio a los datos capturados sobre tu web. Ahí tiene cabida cualquier aspecto interesante: usuarios, productos, experiencias, características de las páginas, acciones, etc. Cualquier cosa susceptible de ser medida que le pase al usuario puede adquirir forma como una dimensión personalizada.
Sin embargo, en la práctica, las dimensiones personalizadas acaban siendo en su mayoría informaciones añadidas a las páginas vistas. Cuando un usuario llega a ver una página concreta aprovechamos para añadir información sobre lo que contiene o como se clasifica esta página a Analytics. Tipo de página, Categorías, Nombres, Productos, Ciudades, Si contiene o no Elementos multimedia, Tamaño de los textos, etc. Esto provoca que aprender a trabajar con las dimensiones de página resulte esencial para sacar partido a todos estos datos…
Y La realidad es que no todo el mundo sabe hacer bien este trabajo, y esto muchas veces provoca errores en informes y por lo tanto en las decisiones que tomamos.
Nota: Este post es un poco técnico y presupone que ya sabes utilizar y has utilizado dimensiones personalizadas en Google Analytics. Si no es así te recomiendo que ojees al menos la documentación de Google sobre Dimensiones Personalizadas.
Las dimensiones de ámbito «hit» en analytics
En Analytics hay actualmente 4 ámbitos de datos diferenciados: Usuarios, Sesiones, Hits y Productos (el último añadido tras la aparición del nuevo ecommerce mejorado). Estos ámbitos no están ahí para decorar y son necesarios para crear el modelo de datos de Analytics pues no es lo mismo una página vista (hit) que una visita (sesión) y por lo tanto los datos solo tienen sentido en el marco de un ámbito concreto.
Ejemplos sencillos de entender:
- Las URL’s solo tienen sentido en el ámbito hit de la página vista, pues en una sesión pueden producirse decenas de ellas.
- El Rebote solo tiene sentido en el ámbito sesión pues con una sola página vista nunca sabremos si esta ha rebotado y un mismo usuario puede acumular varias sesiones con o sin rebote
- Etc…
Entendido esto podemos hacer 2 observaciones que juntas nos van a llevar por el camino de la amargura:
- 1. Que cuando guardamos datos en una dimensión de hit podemos tener problemas para trabajarla con datos o dimensiones de sesión.
- 2. Que la mayor parte de nuestros informes van a estar trabajados casi siempre a nivel de sesión o (si lo tenemos muy controlado) de usuario.
¿Veis el problema? Decíamos al principio que en la práctica gran parte de los datos que incluimos como dimensiones personalizadas son del ámbito página vista (hit) y sin embargo muchas veces vamos a querer usarlos para elaborar informes sobre sesiones… WTF!
Cómo se debe trabajar la información de hit en los informes
Cuando trabajamos con datos de hit (ya sean nativos en GA, de dimensiones personalizadas o de agrupaciones de contenido) tenemos que tener en cuenta el ámbito y por lo tanto ser consecuentes en los informes que creamos. Esto significa tenemos solo 2 formas de trabajar:
1. Sacando solo datos del ámbito hit cuando consultemos datos sobre hits:
Es decir, no pedir nunca métricas de sesiones o usuario a estas dimensiones personalizadas de página pues no van a funcionar como esperamos.
La prueba más clara de que las dimensiones de hit solo se trabajan con métricas de hit la tenemos en el funcionamiento de los informes por defecto de Analytics. Entrad en los informes de Comportamiento >> Contenido >> Páginas vistas y veréis que para mostraros los datos de URL (ambito hit) solo se muestran métricas asociadas a estos datos: páginas vistas, abandonos de la página, tiempo en la página, etc. Pero no veréis nunca visitas, rebotes, objetivos o usuarios en estos informes.
Incluso creando informes personalizados muchas veces no se nos dejan cruzar estos datos.
2. Creando Segmentos Avanzados cuando realmente queramos consultar a nivel de sesión estas métricas de hit
La solución para trabajar con estas métricas a nivel de sesión es utilizar segmentos. Los segmentos son filtros trabajan a nivel de sesión o de usuario y en ellos pedimos a Analytics que nos muestra aquellas sesiones o usuarios que contengan X dato en cualquier momento de la experiencia de uso del site.
Por lo tanto si que tendrá sentido pedirle a Analytics «Sesiones que en alguna de sus páginas vistas hayan tenido X valor en una dimension personalizada». Tiene toda la lógica del mundo y muchas veces esto nos va a solucionar el problema básico para poder extraer los datos que necesitamos.
Sin embargo usar segmentos en analytics para trabajar dimensiones de página tiene dos problemas:
Problema 1: Los totales de todos los segmentos no suman el total sin segmentos
Es lógico pero no todo el mundo cae en eso.
Imagina que tienes 3 posibles valores para una dimension personalizada: «home», «listado» o «item».
Para poder saber cuantas visitas ven la home, cuantas ven listados y cuantas llegan a algún item tienes que crear tres segmentos.
Pues bien, estos 3 segmentos no sumarán el total de visitas, sino mucho más. Esto es porque un usuario podría perfectamente llegar a tu home, realizar una búsqueda (y ver un listado) y terminar escogiendo un producto (y ver un item). Este usuario estaría contemplado en tus 3 segmentos por lo que la suma total (que lo tiene en cuenta 3 veces en lugar de 1) no cuadra.
Solucionar esto pasa por cruzar los segmentos, lo cual no a todo el mundo le gusta. Así tendríamos: Usuarios Solo Home, Usuarios Solo Home + Listado, Usuarios Home + Listado + Item, Usuarios Solo Home + Item, Usuarios Solo Listado, Usuarios Solo Listado + item y Usaurios Solo Item. 7 Segmentos en lugar de 3.
Problema 2: Trabajar con segmentos 1 a 1 es lento y poco productivo
Imagina que tienes una dimension personalizada que te dice la marca del producto que está viendo el usuario. Revisas y en tu catalogo hay 300 marcas distintas…
Esto significa que para sacar datos de las visitas que han visto cada marca necesitas crear 300 segmentos distintos en Analytics (y eso si no te precupan los totales). La información es accesible, pero no es cómoda de extraer para informes globales, solo para datos puntuales. Con la API podemos programar esta extracción y exportarla a una base de datos propia pero eso no está en manos de todo el mundo.
En definitiva, que la funcionalidad exista no significa que sea siempre viable trabajar con ella.
Cómo NO hay que trabajar NUNCA estas dimensiones
Lo que de ninguna forma no podemos hacer para trabajar con dimesiones de página vista (hit) es crear un informe que use estas dimensiones y solicitarle a Analytics que nos de visitas y usuarios sobre ellas. Muchas veces Analytics responderá con ciertos datos (sobretodo con la API) pero los datos que nos dará no serán lo que realmente queremos.
Para entender lo que hace analytics en estos casos os recomiendo leer el post Reporting avanzado sobre el flujo de páginas vistas que siguen los usaurios en este post se explica al detalle esta situación.
Resumiéndolo podemos decir que Analytics asigna el valor de +1 visita en la primera página vista que realiza el usuario. Por lo tanto si pedimos métricas de sesión sobre dimensiones de hit no nos dará lo que buscamos sino que nos dirá el valor de esa dimensión solo para el primer hit de la visita y eso normalmente no es lo que queremos saber.
En el caso anterior poníamos como ejemplo una dimensión que nos identificaba la marca nuestros productos. Si para estas marcas creasemos un informe solicitándole «Sesiones por Marca» el resultado no sería cuantas sesiones han visto una marca, sino cual es la primera marca que han visto los usuarios en su visita, un dato que no es para nada el mismo que buscabamos (aunque también puede ser útil, al igual que lo es la landing page).
Transformando las dimensiones de hit en dimensiones de sesión
Para solucionar este problema, si realmente queremos trabajar con dimensiones de sesión sobre estos valores de hit lo que tenemos que hacer es que tomar una decisión: Cual de todos los valores que va viendo página a página el usuario es el que queremos realmentne asignar como valor de la visita.
Esto nos da tres posibilidades:
- 1. Que queramos saber el primer valor de dimension personalizada que vio el usaurio
- 2. Que queramos saber el último valor de dimensión personalizada que vio el usaurio
- 3. Que queramos saber cual fué el valor más veces repetido entre todos los que vió el usuario
El primer valor visto en la sesión (o por el usuario)
Este dato nos hablaría del primer impacto recibido, puede ser interesante para saber el interés que tenía inicialmente de la visita al llegar a nuestro site.
Para extraerlo no tenemos que hacer nada. El truco ya lo desvelabamos antes: creando un informe personalizado sobre una dimensión de hit y pidiéndole sesiones sobre esta, analytics nos dará justo este valor.
Para extraer el dato a nivel de usuario el funcionamiento sería exactamente el mismo, solo que pidiéndole métricas de usuario en lugar que de sesión.
El código por lo tanto será el mismo que para guardar una dimensiones de hit normal y corriente.
//dimension 1 es una dimensión de ámbito hit
ga('set', 'dimension1', '{mivalor}');
El último valor visto en la sesión (o por el usuario)
Esta posibilidad puede ser la ideal si lo que buscamos es entender un punto de fuga del usuario o los motivos que le llevaron a tomar X decisión que le ha hecho dejar de navegar.
Para conseguir este valor tendremos que crear (o transformar) una dimensión personalizada para que sea del ámbito sesión. Estas dimensiones ahora pasan a almacenar en toda la sesión el último valor que recibieron y por lo tanto solo guardando datos
//dimension 1 es una dimensión de ámbito hit
//dimension 2 es una dimensión de ámbito sesión
ga('set', 'dimension1', '{mivalor}');
ga('set', 'dimension2', '{mismovalor}');
O si solo queremos poner el valor de la dimensión una vez para asegurarnos o por manías del programador:
//dimension 1 es una dimensión de ámbito hit
//dimension 2 es una dimensión de ámbito sesión
ga('set', 'dimension1', '{mivalor}');
ga(function(tracker) { ga('set', 'dimension2', tracker.get('dimension1') ); });
Para el usuario sería exactametne igual pero con el ámbito cambiado a usuario.
El valor más veces visto por el usuario durante su sesión
Cuando las dimensiones son para clasificar el contenido o las páginas vistas adivinar cual fue el valor más repetido en una dimensión nos ayuda a comprender el interés real de la visita (que no el inicial).
Estas dimensiones asociadas a nuestro ejemplo de marcas nos dirían qué marca fue la que más interesó al usuario en esa visita (pues fue de la que más páginas consultó).
Para sacar este valor necesitamos un poco de código, ya que no podemos aprovecharnos de ningún comportamiento natural de Analytics. Crearemos un pequeño fragmento de código Javascript que gracias a las cookies nos permita ir almacenando durante la visita cuantos valores han ido sucediéndose de cada tipo. El que represente un mayor numero de apariciones será el que guardemos.
Para guardarlo, puesto que el valor puede ir cambiando página a página (un usuario podría empezar viendo 2 páginas de una marca pero seguidamente ver 8 sobre otra) necesitaremos una dimensión de ámbito sesión que en cada página vista informaremos a su valor actual para que se guarde el último visto.
El nuevo objeto a añadir a nuestra página se llama «moreUsed» y tiene el siguiente código:
Este debe incluirse ANTES de cualquier llamada a las funciones moreUsed y por lo tanto, antes que el propio bloque de analytics.
Las funciones disponibles son:
moreUsed.add( {nombreVariable}, {ValorAAñadir} );
Esta sumará +1 a la variable que quedamos con el valor definido.
Es decir moreUsed.add(‘brand’,’nike’) indicará que se ha visto la marca nike una vez.
moreUsed.get( {nombreVariable});
Nos permite saber cual es el más usado en una de las variables defindias.
Si yo he lanzado en 2 páginas moreUsed.add(‘brand’,’nike’) y en la última moreUsed.add(‘brand’,’adidas’) >> moreUsed.get(‘brand’) devolverá «nike».
Con este código ya si que podemos lanzar nuestras dimensiones personalizadas en Analytics. El código completo necesario sería por lo tanto el siguiente:
[[ Código Analytics ]]
//dimension 1 es una dimensión de ámbito hit
//dimension 2 es una dimensión de ámbito sesión
ga('set', 'dimension1', '{mivalor}');
moreUsed.add( 'brand', '{mismovalor}' );
ga('set', 'dimension2', moreUsed.get('brand') );
O si por asegurarnos queremos definir el valor solo una vez:
[[ Codigo Analytics ]]
//dimension 1 es una dimensión de ámbito hit
//dimension 2 es una dimensión de ámbito sesión
ga('set', 'dimension1', '{mivalor}');
ga(function(tracker) {
moreUsed.add( 'brand', tracker.get('dimension1') );
ga('set', 'dimension2', moreUsed.get('brand') );
});
¿Y en Google Tag Manager?
Si estamos configurando nuestro analytics bajo GTM la solución es más directa (pues solo hay que añadir un par de detalles a la configuración y ya estará funcionando).
En Google Tag Manager lo normal es que hayamos enviado el valor de dimensión en la variable dataLayer.
A partir de ahí habrémos creado una macro que recoja ese valor (por ejemplo la macro «dataLayer brand» ) para asignarlo como dimensión personalizada a la página vista.
Así pués lo único que necesitamos es una segunda macro, del tipo «Javascript Personalizada» que saque el valor de «dataLayer brand» y con el calcule el valor más repetido:
function() {
moreUsed={add:function(e,t){if(!window.moreUsed[e]){vc=this.c();if(!vc[e])vc[e]={};if(!vc[e][t])vc[e][t]=1;else vc[e][t]++;document.cookie="_gaRepeats="+escape(JSON.stringify(vc))+";path=/";if(!window.moreUsed)window.moreUsed={};window.moreUsed[e]=1}},c:function(){var e=new RegExp("_gaRepeats=([^;]+)(;.+)?$");var t=document.cookie.match(e);t=t&&t[1]?JSON.parse(unescape(t[1])):{};return t},get:function(e){var t=this.c();var n="(not set)";var r=0;if(t[e])for(var i in t[e])if(t[e][i]>r){r=t[e][i];n=i}return n}}
moreUsed.add( 'brand', '{{dataLayer brand}}' );
return moreUsed.get('brand');
}
Y con eso tendremos nuestra nueva macro para usar como queramos.
Conclusión
El trabajo con dimensiones personalizadas es realmente potente en Google Analytics, pero hay que saber trabajarlas bien. No son pocos los que sacan informes incorrectos por no entender bien el ámbito de las variables que creamos. Trabajando a nivel de página vista no vamos a tener problemas, pero llegados al ámbito de sesión hay que escoger siempre entre 4 opciones:
- O trabajamos con segmentos, uno a uno, para consultar cada posible valor
- O sólo observamos el primer valor de una dimensión
- O sólo observamos el último
- O observamos el más repetido de ellos durante la visita
Una configuración realmente versátil nos debería permitir observar cualquiera de ellos. ¿Como? Pues guardando 1 dimensión personalizada de ámbito hit para resolver los 2 primeros, y 2 dimensiones personalizadas extra de a´mbito visita para resolver la visualización por último valor o por el más repetido. 3 Dimensiones pueden ser mucho pero a veces merecen la pena. Si no, al menos deberíamos plantearnos gastar 2 para cubrir informes de interés del usuario. La decisión es tuya.
Si tienes dudas sobre el código incluido no dudes en preguntar en los comentarios. Siempre que sea algo sencillo intentaré ayudarte en la medida de lo posible. Si deseas algún tipo de ayuda más dedicada para realizar estas implementaciones en tu negocio o empresa no dudes en contactarme para ver un presupuesto a tu medida.