Posibles errores en el envío de eventos a través de GTM

 

peligro

 

A estas alturas, nadie duda de la comodidad (y la conveniencia en el 99% de los casos) de implementar Google Analytics a través de un gestor de etiquetas como Google Tag Manager (alias GTM). Pero hay que tener cuidado y saber muy bien como funciona para evitar errores como el que vamos a ver a continuación.

En una implementación directa, enviábamos los eventos mediante la inserción en nuestra página de un código con la siguiente sintaxis:

ga(‘send’,‘event’,‘category’,‘action’,‘label’, value);//value es un entero.

Ejemplo:  ga(‘send’,‘event’,‘button’,‘click’,‘nav buttons’,4);

Label y value son opcionales.

Con una implementación mediante GTM, ponemos esos datos en una estructura de datos llamada datalayer: 

dataLayer.push({‘event’:’eventoGA’,’category’:’<event_categoria>’,’action’:’<event_accion>’,’label’:’<event_label>’,’value’:<event_value>});

Los recogemos de ella mediante una etiqueta de GTM que detecta que se ha producido un evento. Normalmente (y ahí está el problema), utilizamos etiquetas genéricas, que sirvan para todos los eventos posibles:

 

GTM_events_1

 

GTM_events_2

 

 

GTM_events_3

 

El datalayer es una estructura de datos persistente a nivel de página. Es decir, mantiene sus valores mientras no abandonemos la página actual (o los modifiquemos mediante una acción datalayer.push).

Movidos por la costumbre de cuando implementábamos directamente, cuando hemos de registrar un evento para el que no necesitamos los valores opcionales label y/o value, no los incluimos en el datalayer.push:

dataLayer.push({‘event’:’eventoGA’,’category’:’<event_categoria>’,’action’:’<event_accion>’});

Pero ojo, que ésto no manda el evento a Google Analytics. Es GTM quien lo hace. Y si utilizamos una etiqueta genérica como la que mostrábamos más arriba, estará enviando también valores para label y value. Presuntamente, no hay valores para ellos, por lo que enviará valores nulos, tal y como pretendemos.

Pero, ¿qué ocurre cuando en esa misma página se ha lanzado previamente un evento que sí utilizaba los citados parámetros opcionales? Al ser el datalayer persistente mientras no abandonemos la página actual, lo que ocurrirá será ésto:

 

EVENTO A :

dataLayer.push({‘event’:’eventoGA’,’category’:’ev_A_cat’,’action’:’ev_A_act’,’label’:’ev_A_lab’,’value’:9.99});

Lo que recogeremos y enviaremos a Google Analytics mediante GTM será:

Categoría: ev_A_cat

Acción: ev_A_act

Etiqueta: ev_A_lab

Valor: 9.99

 

EVENTO B (posterior al A, en la misma página, no usa label ni value) :

dataLayer.push({‘event’:’eventoGA’,’category’:’ev_B_cat’,’action’:’ev_B_act’});

Lo que recogeremos y enviaremos a Google Analytics mediante GTM será:

Categoría: ev_B_cat

Acción: ev_B_act

Etiqueta: ev_A_lab

Valor: 9.99

Nuestra etiqueta de GTM está buscando en el datalayer valores para esos dos últimos parámetros y los encuentra.

Puede parecer que no es un error grave (no se alteran los datos que sí necesitamos para los eventos de tipo B, pero si posteriormente realizáramos un análisis en base al número de eventos con un valor u otro en “etiqueta” o “valor”, obtendremos un número mayor del real de eventos que cumplan el criterio.

Para evitar que se nos “ensucien” los datos de eventos, proponemos dos soluciones:

A) Hacer etiquetas y reglas diferentes para eventos que no usen los campos opcionales. Por ejemplo, podríamos tener un evento de tipo ‘eventoGA1’ que solo usa categoría y acción y otro, ‘eventoGA2’, que los use todos. Habría una etiqueta para cada uno de ellos que solo enviaría a Google Analytics los valores requeridos. La regla que las dispararía comprobaría que el evento sea del tipo correspondiente:

 dataLayer.push({‘event’:’eventoGA1’,’category’:’ev_A_cat’,’action’:’ev_A_act’,’label’:’ev_A_lab’,’value’:9.99});

 dataLayer.push({‘event’:’eventoGA2’,’category’:’ev_B_cat’,’action’:’ev_B_act’});

B) Actualizar todos los parámetros en el datalayer para todos los eventos. Es decir, tratándolos como si no fueran opcionales. Esto nos permitiría mantener en GTM una etiqueta de gestión de eventos genérica. Dicha etiqueta mandaría siempre a Google Analytics todos los parámetros de evento, incluidos los opcionales. Pero, para los eventos que no los necesiten, pasaríamos sus valores a nulo (usando solo las comillas como valor):

dataLayer.push({‘event’:’eventoGA’,’category’:’ev_B_cat’,’action’:’ev_B_act’,’label’:”,’value’:”});

Nos inclinamos por la segunda opción. Mantiene una estructura más sencilla en el contenedor de GTM y no implica más trabajo de implementación en la web.

 

Autor:

Analista Web en en Metriplica, Expertos en Analítica Web. Ingeniero informático por la Universidad Politécnica de Valencia y postgrado en analítica web por la OBS/Universidad de Cataluña.

Leave Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.