CONTENIDO DE ESTA GUÍA:
DIMENSIONES Y MÉTRICAS DE GOOGLE ANALYTICS
Como sabemos, Google Analytics incluye por defecto una serie de dimensiones y métricas predefinidas de distinto tipo, con las que se forman los informes y vamos trabajando normalmente.
Y es que todos los informes se componen de dos partes: métricas y dimensiones. Entre las métricas encontramos variables cuantitativas como visitas, páginas vistas, conversiones… y entre las dimensiones, encontraremos las variables cualitativas como fuente de tráfico, tipo de visitante, palabra clave, etc. En el siguiente artículo se explica cómo utilizarlas para informes personalizados en Google Analytics hechos “a medida”.
En las tablas, las dimensiones suelen estar en el eje vertical y las métricas en el horizontal.
CÓMO Y CUÁNDO CREAR UNA DIMENSIÓN PERSONALIZADA EN GOOGLE ANALYTICS
Pues bien, muchas veces necesitaremos llegar un poco más allá y recopilar datos adicionales (no contemplados por Google Analytics por defecto) de cada sesión, interacción, transacción, ect. mediante el envío de variables personalizadas extra que tengan que ver con nuestro proyecto / propiedad de Google Analytics. Algunos ejemplos para un Blog: Categoría, Autor, Etiqueta, etc.; para un Ecommerce: tipología de producto, tipo de oferta, datos de stock, CP del visitante logueado, etc. En ambos: ID de Usuario (userId).
Para configurarlas, el primer paso es definirlas en Google Analytics. Para ello, como las dimensiones/parámetros y las métricas personalizadas se definen para toda la propiedad web y sus vistas, vamos al menú del Administrador de la herramienta y, en el nivel de Propiedad, seleccionamos “Definiciones Personalizadas / Parámetros Personalizados”:
Para generarlas solo debemos poner un nombre a la dimensión y decidir un aspecto clave: el ámbito / scope de la dimensión. Para aclarar mejor este concepto, se recomienda leer kaushik.net/avinash/hits-sessions-metrics-dimensions-web-analytics y el siguiente apartado.
ÁMBITO / SCOPE DE UNA DIMENSIÓN PERSONALIZADA
El ámbito de una dimensión (Hit / Sesión / Usuario) tiene que ver con la frecuencia en que el valor de dicha dimensión se va a enviar a Google Analytics. Algunos ejemplos de dimensiones y sus ámbitos/scopes:
- HIT: Página, Título, Categoría de producto, etc. son dimensiones de ámbito Hit. Esto quiere decir que se definen, toman un valor y se envían a Google Analytics, cada vez que: se recarga el navegador y se accede a un pageview diferente, se realiza un event u otro tipo de hit: social, transaction, etc.
- SESIÓN: Fuente, Medio, Dispositivo, Navegador, Página de destino, etc. son dimensiones de ámbito Sesión. Se mantienen igual en toda la sesión, aunque se vayan recargando los contenidos y produciendo todas las interacciones que correspondan. Manda un único valor a Google Analytics por cada sesión.
- USUARIO: Sexo, Edad, Registrado/No registrado, etc. son dimensiones de ámbito Usuario (dependen de las cookies que identifican al usuario). Manda un único valor a Google Analytics por cada usuario/cookie. Se mantiene su valor entre sesiones diferentes.
Como vemos en la tabla anterior, a cada Dimensión Personalizada en Google Analytics se le asigna un Índice (ID único, ahora veremos para qué) y un Ámbito.
El ámbito / scope de las dimensiones y métricas es fundamental para que obtengamos datos lógicos y correctos en los Informes, como respuesta a las consultas. Por ejemplo, hay que tener cuidado al crear dashboards, widgets e informes personalizados, no es conveniente mezclar dimensiones y métricas de distinto ámbito. Por ejemplo, la dimensión Página (ámbito hit) no se puede cruzar (no se debe, pues los datos no serán correctos) con la métrica Consecuciones de objetivos, ni Porcentaje de conversiones del objetivo (pues son de ámbito sesión), ¡un fastidio! En su lugar, habrá que usar Página con Valor de página, o Página de destino con las anteriores métricas de objetivo.
Imagen: kaushik.net/avinash/hits-sessions-metrics-dimensions-web-analytics
El que una dimensión sea hit / session / user level afectará a qué valor tome ésta entre distintos hits de la misma sesión, sesiones del mismo usuario, etc., por ejemplo:
- Hit-level scope: Recopila y admite diferentes valores para distintas interacciones o hits dentro de la sesión.
Fuente: Explicación técnica de Google sobre cómo influyen los scopes a las dimensiones >
- Session-level scope: Manda y admite un valor único que corresponde a toda la sesión. Si en diferentes hits de la sesión se mandan distintos valores, prevalece el del último hit.
Fuente: Explicación técnica de Google sobre cómo influyen los scopes a las dimensiones >
- User-level scope: Manda y admite un valor único que corresponde al usuario (cookie de 2 años, ga_). Por ejemplo, Localidad: X. Si en diferentes hits de una sesión se mandan distintos valores, prevalece el del último hit como user-level dimensión, es decir, se sobrescribe.
Si un usuario con una “user-level dimension” definida, como Localidad: X, regresa al site y realiza sesiones recurrentes, dichas sesiones irán también con ese mismo valor en la dimensión personalizada Localidad (X), sin necesidad de que vuelva a ser enviado el dato.
Fuente: Explicación técnica de Google sobre cómo influyen los scopes a las dimensiones >
CÓMO DAR DE ALTA UNA DIMENSIÓN PERSONALIZADA DE ANALYTICS EN GOOGLE TAG MANAGER
Una vez definida la dimensión en Google Analytics, se le asignará un índice y nos aparecerá una pantalla con un código para implementarla.
Por suerte, NO debemos hacer nada con el código, sino que lo configuramos ya como un campo de Tag Manager en la etiqueta de Google Analytics .
Vamos a ir a nuestra/s etiqueta/s de Universal Analytics en Google Tag Manager y hacer lo siguiente:
Rellenamos en Más opciones de las etiquetas de Universal Analytics en Tag Manager, el apartado Dimensiones Personalizadas (haciendo que el índice coincida con el de Google Analytics*). En Tag Manager las dimensiones cuentan – por ahora – con una sección propia de configuración.
En Índice rellenamos el número index de la dimensión (el mismo que en Analytics). Si aquí ponemos index 1 y 2, pues en Google Analytics igual.
NOTA: Estas dos dimensiones serán de ámbito Hit, pues pueden variar de valor según la URL que visitemos, según el hit pageview en este caso.
CÓMO MANDAR DATOS EN UNA DIMENSIÓN PERSONALIZADA: VARIABLES Y DATALAYER
Y sobre el Valor y configuración de la Dimensión en Tag Manager, dos cuestiones importantes:
1. ¿Cómo rellenamos y enviamos el Dimension Value a Google Analytics? ¿Cómo rellenamos el campo Valor de la dimensión en Google Tag Manager?
En Valor de la dimensión rellenaremos con la información que queramos mandar a Google Analytics y asociar a esa dimensión. En los ejemplos anteriores, dinámicamente tendremos que recopilar el autor y la categoría del post, mediante programación, mandarlo por dataLayer a GTM y en la etiqueta de GTM, añadir el dato como Variable de dataLayer que generaremos.
Hay varias formas de hacerlo según de dónde recojamos el dato (ej. dataLayer, DOM, etc.), pero en la mayoría de casos, se tratará de un valor dinámico y, siempre, de un dato reutilizable.
Por ello, siempre rellenaremos con una Variable de Tag Manager el valor de la dimensión, ya sea de tipo dataLayer, Custom Javascript, Lookup Table, Constant, URL, etc… Así, aunque sea estático, lo podremos modificar de forma única y global, en el caso de que se envíe la dimensión desde diferentes etiquetas. Ahora justo pasemos al siguiente punto…
Ej. Vía dataLayer, por ejemplo, para un blog cualquiera WordPress, la categoría de un post se puede extraer así con código PHP:
<?php
$cats = get_the_category();
$cat_name = $cats[0]->name;
?>
(Justo a continuación, haremos el push a la capa de datos.)
<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'seccion': '<php echo $cat_name; ?>'
});
</script>
Primero definimos la variable PHP y después mandamos su valor a Tag Manager.
2. ¿Esto se puede/debe rellenar en todas las etiquetas de Universal Analytics en GTM? ¿A qué hits se asocia: página vista, evento, transacción, hit social, etc.?
No solo podemos mandar dimensiones y métricas con hits de tipo Pageview (Página Vista), sino con hits de todo tipo: Event, Transaction, Social. El cuándo y dónde lo pongamos depende, en caso de que tenga sentido lo pondremos en todas las tags.Ejemplos:
- USER ID – si lo creamos como custom dimensión – además de como Campo para configurar -, sería muy conveniente enviarlo en todos los tipos de hits existentes: event, pageview, social, transaction…
- Categoría de producto – quizá en ciertos eventos o en transacciones no tenga sentido, sino que es más una clasificación de páginas, por lo que lo podemos poner solo en Etiquetas Pageview. Pero si lo ponemos en todas también funcionará.
En cuántas etiquetas se deba poner dependerá y mucho, del ámbito o scope de la dimensión. Por ejemplo, userId y Category, pueden mandarse en cada Hit (aunque userId es más bien de ámbito Usuario puede estar disponible en todos los hits en dataLayer).
Sin embargo, a veces, nos encontraremos con dimensiones de sesión / usuario que solo se generan en un punto, página o evento concreto. En dichos casos, quizá sea conveniente mandarlo solo en dicha etiqueta donde se genera y obtiene el dato. Por ejemplo: al realizar una compra quizá queramos guardar un dato acumulativo (por usuario) del importe total comprado, vía métrica personalizada. Esta métrica solo lo mandaríamos donde tiene sentido (en la dataLayer de transacción de Ecommerce, como una métrica personalizada adicional).
2 EJEMPLOS REALES DE DIMENSIONES PERSONALIZADAS PARA WORDPRESS (VÍA DATALAYER)
Como vimos antes, para obtener la Categoría de un post en WordPress, el código que va a generar los valores dinámicos de la dimensión personalizada y variable de dataLayer es éste (válido para WP):
<?php
$cats = get_the_category();
$cat_name = $cats[0]->name;
?>
(Justo a continuación, haremos el push a la capa de datos.)
<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'seccion': '<php echo $cat_name; ?>'
});
</script>
Ponemos estos dos fragmentos de código en el archivo header.php de WordPress, justo tras abrir el <body> y antes del código de contenedor de Tag Manager.
Con ello, si lo probamos y publicamos/depuramos, veremos que en dataLayer aparece la información (lo podemos ver incluso con el Tag Assistant de Chrome):
Una vez hecho esto, habría que crear la variable de dataLayer en Tag Manager:
Y configurarlo como vimos antes >> Más Opciones / Dimensiones Personalizadas, Índice: N, Valor: {{categoria}}
Como segundo ejemplo, para recopilar el ID de Usuario logueado en WordPress, podemos usar este código para la dataLayer:
<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'userId': '<?= get_current_user_id(); ?>'
});
</script>
NOTA: No confundamos lo anterior (envío de User ID vía dataLayer a Google Tag Manager), con el envío de información de hit a Google Analytics, se trata de un paso previo.
Después es fundamental crear otra variable de GTM para recolectar el valor de la dataLayer:
Y, finalmente, configurar dicha Variable {{userId}} como dimensión personalizada de Analytics (y dar de alta la dimensión también en Analytics con el mismo índice, en este ejemplo el 3):
Por último, tampoco confundamos este paso, esta acción (envío de dimensión personalizada con userId) con la de generación y envío del parámetro userId de Google Universal Analytics para una vista de informes multi dispositivo.
CÓMO CONFIGURAR EL USER ID DE UNIVERSAL ANALYTICS VÍA TAG MANAGER: CAMPOS PARA CONFIGURAR DE GOOGLE ANALYTICS EN GTM
Si queremos dar también ese segundo caso y configurar los informes y vista con ID de Usuario en Universal Anlaytics, entonces la variable {{userId}} se enviará también dentro de “Campos para configurar” (nombre del campo: userId), además de en Dimensiones Personalizadas. Veamos la configuración completa en Google Tag Manager:
CONSEJOS SOBRE DIMENSIONES PERSONALIZADAS
1. Una buena práctica sobre dimensiones personalizadas, en muchos proyectos, sería crear una dimensión tipo “Info Adicional” y utilizarla como comodín en el envío de eventos y todo tipo de interacciones que, por su complejidad, no tengan suficiente información con los parámetros habituales de evento/ pageview / etc. Por ejemplo, con un Evento de Error:
- Categoría: ERROR
- Acción: ERROR Contact Form
- Etiqueta: Error campo {{Campo formulario}}
- Dimensión personalizada: {{Texto concreto del error}}
Y es que es importante destactar que las dimensiones y métricas personalizadas se pueden añadir en cualquier etiqueta de Google Analytics y en cualquier dataLayer, sea del tipo que sea, incluida la de Ecommerce.
2. Otra buena práctica relacionada es mandar siempre las transacciones (dataLayer de Ecommerce) con un evento, y aprovechar ahí mismo para pasara cualquier dimensión o métrica adicional. Por ej.
<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'event':'purchase',
'dimension5':'custom dimension data', 'metric5':'custom metric data', 'ecommerce':{ 'currencyCode':'EUR', // Local currency is optional. 'impressions':[ { 'name':'Triblend Android T-Shirt', // Name or ID is required. 'id':'12345', 'price':'15.25', 'brand':'Google', 'category':'Apparel', 'variant':'Gray', 'list':'Search Results', 'position':1 }, { 'name':'Donut Friday Scented T-Shirt', 'id':'67890', 'price':'33.75', 'brand':'Google', 'category':'Apparel', 'variant':'Black', 'list':'Search Results', 'position':2 }] } }); </script>
Se pueden añadir más datos como dimensiones o métricas, eventos, etc. en cualquier dataLayer.
3. Pensar en todas las opciones disponibles. Existen Dimensiones Personalizadas casi automáticas que podemos configurar con Google Tag Manager (basadas en Variables predefinidas mismo) y mandarlas a Google Analytics. Por ejemplo:
- URL completa, URL con hash, URL con parámetros UTM incluidos, URL Limpia (sin protocolo, www, parámetros, etc.) para dataMining…
- Referrer: En muchos casos es mejor dato que el recopilado en Google Analytics, puede “destapar” incluso redirecciones y falsos accesos de tráfico directo
- El valor de un parámetro de consulta concreto: {{Page Query}}, como podría ser un parámetro de búsqueda avanzada…
- Un texto de algún elemento DOM que pueda ser diferente según la versión/hora de acceso de/a la web (para llevar un control de cambios de contenidos clave en Google Analytics y sus efectos en métricas)
- El valor de alguna metatag…
Todo es cuestión de lo que necesitemos y lo que podamos idear.
4. Habrá ciertos datos que antes de Universal Analytics se enviaban como Dimensión Personalizada que ahora, si se refieren a información de tipo clasificación de páginas (categorías de productos, subcategorías, idiomas, etc.), es probable que nos convenga configurarlos mejor como Grupos de Contenido. Esto es así porque los grupos nos permiten ver los flujos de navegación, por ejemplo entre unas “categorías” y otras, las “categorías” de destino, de salida, etc.
5. Puedes revisar el envío correcto de las dimensiones personalizadas, además de con la vista previa y depuración de GTM, con la grabación de sesiones del plugin Tag Assistant.
EJEMPLO REAL: FILTRO DE GOOGLE ANALYTICS ANTISPAM (CON DIMENSIÓN PERSONALIZADA)
A estas alturas, todos hemos sufrido en una propiedad de Analytics u otra, al dichoso SPAM en Google Analytics o Spam Referral.
Primero te hacían falsas visitas, después directamente te las mandaban sin ni siquiera acceder a tu web: mediante el Protocolo de medición de Google Analytics. ¿Y en qué consiste éste? pues en enviar datos a una propiedad de Google Analytics de forma “remota”, sin acceder al sitio web. Es útil para mandar datos de analítica offline al mundo online, para llevar un seguimiento analítico de un Call Center, etc. etc. ya que permite, mediante el uso de una URL con parámetros, enviar hits con todos los datos necesarios más tu identificador UA, a tu propiedad de Google Analytics. O a cualquier otra…
Pues de esto se están aprovechando. Comentándolo hace unas semanas con alguien, pensé: ¿y no se podría definir como una “contraseña” para esos enlaces? ¿para que no los pueda mandar cualquiera, sino solo yo? Por fin al poco encontré la respuesta!!! Sí se puede
En este post, Iñaki Huerta da una solución para evitar estos hits automatizados (del protocolo de medición de GA) con dimensiones personalizadas y filtros de vista. Vamos a implementarla aquí con Google Tag Manager y adaptándolo a nuestro propio sistema estandarizado (dimensión de base creada para muchas cuentas):
1. Añadimos una dimensión personalizada en Google Analytics
2. (Opcional) Habilitamos el número aleatorio en GTM, por rizar el rizo…
3. Creamos una variable constante en Tag Manager, que incluya el número aleatorio, más lo que se quiera:
*Le damos el valor que queramos. Se ha añadido el número aleatorio pero no es obligatorio…
4. Configuramos la dimensión personalizada en TODAS LAS ETIQUETAS DE UNIVERSAL ANALYTICS, dentro de Tag Manager, con dicha constante. La hemos de poner en todas las etiquetas, porque los hits que no la lleven, irán fuera de la vista de informes con el filtro
5. Probamos, depuramos y publicamos el contenedor.
6. Creamos el filtro de en nuestra Vista de Pruebas. En realidad se excluye todo lo que no es nuestro. Pues el filtro será de inclusión, y solo querremos incluir todo aquello que lleve definida nuestra dimensión personalizada antispam. Y cuando veamos si funciona, se traspasará a las vistas que corresponda:
*Lo que rellene en el patrón del filtro dependerá de qué contenga la variable constante para la dimensión en Tag Manager. Podría ser algo 100% estático: “miValor”, “miValor”, en ambos campos.
El caso es que los spamers, de primeras al menos, no van a saber que tú mandas todos los hits con una dimensión X y que el resto lo excluyes. Así que algo más de seguridad y control sobre los datos sí genera.
ACTUALIZACIÓN para pros: Tras explicar esta dimensión en un curso me preguntaron que por qué no se podría enviar esta dimensión antispam a nivel de usuario y no de hit, por simplificar el proceso. Pues bien, hace nada hemos estado en el SEonthebeach y tras hablarlo con quien me inspiró para esta crear esta solución antispam “de serie” en muchas cuentas, Iñaki Huerta, me parece cada vez más acertado seguir haciéndolo con una dimensión de hit. “Si se te cuela por error un usuario spammer, ahí estará ya para siempre porque ha pasado el filtro”. Además, el envío de datos a GA se realiza hit a hit, por ello si queremos frenar o filtrar hits de spam, tiene mucho más sentido hacerlo para este ámbito, la unidad mínima de datos.
Por otro lado: una opción alternativa que me comentó Iñaki es utilizar una dimensión ya existente para el filtro antispam. Sería lo mismo pero adaptado a cada caso particular. Es perfectamente válido y así ahorramos una dimensión en implementaciones con grandes necesidades de información personalizada.
O si prefieres una formación in company, en tu empresa, sobre:
- Tag Manager y Píxeles de Conversión
- Google Analytics básico o avanzado
- Data Studio
- Supermetrics Functions
- SEO
- Google Ads
17:00
20 Feb 17
Guest
Javi García says:
Hola Lucía, pedazo de post, como de costumbre, lo que no logro entender es para qué mandar el userId desde GTM como dimensión personalizada. No es suficiente configurarlo como campo dentro de los hits para los informes multidispositivo?
Un abrazo desde el sur!
20:14
20 Feb 17
administrator
Lucía Marín says:
Hola Javi!! :D muchas gracias por tu comentario y el halago jeje eres un solete, y lo sabes! xd
Se manda como dimensión además de en «Campos para configurar» por lo siguiente:
1. Lo que marca que el hit vaya a las vistas e informes multidisposivito (vistas con User ID habilitado), es la configuración propiamente del hit – campos para configurar en GTM: userId.
2. El mandar el dato como una dimensión personalizada, adicionalmente, es porque el userId como campo para configurar SOLO se ve en las vistas habilitadas para ello, pero si lo tienes como dimensión personalizada, lo puedes ver en cualquier vista (también en las que hay usuarios sin user ID). En resumen, es un poco por sumar información y comodidad para el análisis.
Y además, al tenerlo como Custom Dimension, es más fácil cruzar el dato en cualquier informe de cualquier vista, sea de User Id o no. Por ej. sin cambiar de vista puedes mirar mediante un informe personalizado o una búsqueda+dimensión secundaria si acceden usuarios identificados con su ID para la fuente Tal y hasta qué usuarios son (gran hermano total, sí xd, aunque sea por ID), y los que queden en not set pues será que no tienen valor en esa dimensión (o los que no aparezcan al sacar la dimensión como secundaria secundaria). Ains.. no sé si me he explicado bien. Dime porfi.
Un besico desde el norte!!! jejeje
09:37
21 Feb 17
Guest
Javi García says:
Muy buenas señorita, más claro que el agua, de hecho, lo estoy haciendo así sin querer (en vez de userId como custom dimension lo estoy pasando con otro nombre) y la utilidad que le doy es esa misma, poder cruzar informes con ese dato sin necesidad de cambiar de vista.
Muchas gracias por la aclaración y muchos besos desde el sur, a ver si nos vemos pronto, arriba o abajo. Abrazo!