17 Jun 2014
Reading time: 7 mins.
|
Difficulty:

Tasa de rebote real con Google Tag Manager

La tasa de rebote, porcentaje de rebote o bounce rate es una métrica importante para medir la efectividad de cada una de las páginas de tu sitio web y su capacidad para mantener el interés del visitante.

El rebote, explicado en un sencillo gif. De nada.
El rebote, explicado en un sencillo gif. De nada.

En Google Analytics, el cálculo de la tasa de rebote es simple: Porcentaje de usuarios del sitio web que lo abandonan tras visitar una única página. Esta estadística así calculada, sin embargo, nos puede resultar incompleta o inducir a engaño: ¿Todas las visitas simples son realmente abandonos? ¿Y un usuario que llega buscando un contenido concreto y se va tras haberlo encontrado -y consultado- a la primera? ¿Qué ocurre con los sitios de página única?

Google Analytics ya tiene un método de refinar este cálculo: con los eventos. Cada vez que se active un evento al que estemos haciendo seguimiento, Analytics lo cuenta automáticamente como una interacción del usuario con la página; en cuanto esto ocurre, la visita actual ya no cuenta como rebote, aunque no se visiten otras páginas.

Por supuesto, esto es un arma de doble filo y también nos puede generar problemas: Una página en la que se generen eventos “pasivos”, que se generen de forma automática tras la carga de página, tendrá una tasa de rebote erróneamente baja, al contar dichos eventos como interacciones con la misma.

Para evitar esto, los eventos cuentan con un parámetro opcional nonInteraction, que si se activa hace que el evento no cuente como interacción y por tanto, no afecte al cálculo del porcentaje de rebote. En Google Tag Manager, este parámetro se identifica como Visita sin interacción o Non-Interaction Hit.

event-noninteraction

En este artículo vamos a usar Google Tag Manager para, con la ayuda de etiquetas y eventos personalizados, hacer un cálculo más preciso de nuestra tasa de rebote – concretamente, diferenciar las visitas de una página entre genuinas (con lectura/interacción del usuario = no rebote) y verdaderos abandonos (cierre o salida inmediata de la página, visitas de bots, etc = rebote). Para ello probaremos dos métodos diferentes.

1. Temporizador

Una posible aproximación es plantear que si la página lleva abierta cierto tiempo y no se ha cerrado o abandonado -aunque no haya habido otras interacciones-, consideraremos que su contenido ha sido leído y por lo tanto la contabilizaremos como visita completa y no como rebote. Para ello generaremos un evento de temporizador que se disparará automáticamente pasado el tiempo de espera indicado, generando una interacción y por tanto cancelando el rebote.

Para ello utilizaremos las etiquetas de Procesador de eventos de Google Tag Manager, concretamente la de Procesador del temporizador.

Creamos la etiqueta y la activamos para todas las páginas:

Etiqueta procesador timer

  1. En Nombre de evento podemos especificar el nombre del evento que se generará – útil si tuviéramos varios temporizadores funcionando de forma simultánea. En este ejemplo vamos a dejarlo con el nombre por defecto, gtm.timer.
  2. En Intervalo especificamos el tiempo de espera en milisegundos. Por ejemplo, pondremos 30000 para que salte pasados 30 segundos.
  3. Y en Límite el máximo número de veces que queremos que se active el evento en cada vista de página. En este caso sólo necesitamos una, pero en otros podríamos querer poner un límite alto para que funcione de forma continua (intervalo – activación – intervalo – activación…).

Una vez creado el procesador, creamos la etiqueta que capture el evento en Analytics:

Etiqueta UA evento timer

Importante dejar marcado Visita sin interacción como False, para que el evento automático cuente como interacción y anule el rebote.

Y como regla de activación la asociamos con el evento gtm.timer previamente especificado:

Regla activacion temporizador. Riiiiiing!

Listo! A partir de ahora, una visita a página única durante más de 30 segundos ya no será un rebote, y podremos saber los casos en los que eso ha ocurrido buscando el evento “Interaction / Timer 30s” en el panel de Google Analytics.

El ajuste de rebote mediante temporizador, sin embargo, tiene sus desventajas: Una página ignorada pero abierta el tiempo suficiente (abierta en una ventana o pestaña nueva y posteriormente cerrada sin leer, por ejemplo), ahora tampoco contará como rebote.

Por ello, probaremos un método alternativo que sí requerirá interacción activa por parte del usuario: Detectar que se haya hecho scroll en la página actual.

2. Medición de scroll

Dado que Google Tag Manager no incluye (de momento ;)) etiquetas de procesador de eventos scroll, haremos uso de nuevo del script externo Scroll Depth, que permite generar eventos de Analytics basados en la cantidad de scroll realizado. Haremos que se lance el evento de interacción, por ejemplo, cuando se haya hecho scroll hasta el 50% de la página.

Creamos una etiqueta de nombre Procesador scroll y tipo Etiqueta HTML personalizada, y pegamos el código de este enlace.

(No es más que la librería Scroll Depth completa y minimizada, junto con el código para activarla – también se podría incluir como archivo externo; la versión más reciente se puede encontrar en todo momento aquí).

Y añadimos como regla de activación el evento gtm.dom:

Es importante esperar a gtm.dom para evitar errores

Creamos también la etiqueta correspondiente de Analytics:

Etiqueta interaccion por scroll

Y finalmente, creamos y asociamos su regla de activación personalizada:

Regla activación scroll 50%

Según lo estricta que queremos que sea la regla, podríamos cambiar la condición {{event label}} a 25%, 75% o 100%.

Desgraciadamente, la detección de interacción por scroll también tiene sus propios problemas: Scroll tampoco implica siempre lectura. Un usuario puede estar habituado a “escanear” una página -pasando rápidamente por toda su longitud- antes de decidir si finalmente abandonarla sin leer.

3. Scroll + Timer

¿Había dicho 2 métodos? Mentí 😛

Una tercera aproximación, más estricta pero posiblemente más exacta, puede ser combinar ambas opciones, mediante etiquetas que esperen a que ambos eventos hayan tenido lugar. Dado que los dos eventos se miden en paralelo y pueden activarse en cualquier orden, será una implementación un poco más avanzada y requerirá algo de Javascript. Vamos a ver un ejemplo:

1) Crear, si no lo hemos hecho ya, las etiquetas de procesado de eventos Procesador timer y Procesador scroll que hemos visto antes. Las etiquetas de Analytics asociadas ya no las necesitaremos – si las habíamos creado, podemos eliminarlas o desactivarlas.

2) Creamos una nueva etiqueta Procesador scroll-timer de tipo Etiqueta HTML personalizada, en la que pegamos este código:

<script>
if({{event}} == 'ScrollDistance')
{
  var interactScroll = true;
}
else // gtm.timer
{
  var interactTimer = true;
}
if(interactScroll && interactTimer)
{
  dataLayer.push('event', 'ScrollTimer');
}
</script>

Y le añadimos como Reglas de activación las dos que habíamos creado antes como condiciones de interacción, tanto “evento = timer” como “evento = scroll al 50%”:

regla-proc-scrolltimer

Ojo! Esto no significa que la etiqueta vaya a saltar cuando ambas condiciones se cumplan. Lo hará cuando cualquiera de ellas lo haga; será el código el que se encargue de diferenciar entre ambos casos y actuar en consecuencia.

3) Finalmente, una vez cumplidas ambas condiciones, se generará un nuevo evento de interacción que capturaremos con una etiqueta de Analytics:

Escroltaimer pauer!!!

Y su regla de activación correspondiente:

regla-scrolltimer

Conclusiones

En cualquier caso, ningún sistema es infalible: Al final es una cuestión de decidir -y si acaso, refinar- dónde trazar la línea. La tasa de rebote puede ser una estadística interesante, pero en todo caso no deja de ser una herramienta de uso interno; a nosotros corresponderá definir qué va a significar exactamente para nuestro sitio y cómo la vamos a utilizar.

Referencias y enlaces de interés