Cómo evitar transacciones duplicadas con Tealium

Es fácil que, revisando los informes de comercio electrónico, nos encontremos con que el cliente tiene transacciones duplicadas, esto, entre otras cosas, nos hará tener información incorrecta de los ingresos, lo que puede llevar a desconfiar de los datos.

Existen varias causas que pueden generar este comportamiento:

  • El refresco de la página.
  • Acceder a la página de confirmación desde un enlace o favoritos.
  • Volver al sitio desde el navegador cerrado, etc.

Aunque hay que avisar al cliente de que trate de impedir que salte la información de la transacción en todas las opciones posibles, en ocasiones aparece algún caso que se nos escapa.

¿Cómo podemos saber mirando en Google Analytics si tenemos transacciones duplicadas?

Desde Google Analytics, accedemos al informe general de comercio electrónico y nos fijamos en el número de transacciones que hay en un periodo determinado.

transacciones duplicadas

Una vez hemos visto cuántas transacciones hay, vamos al informe de las transacciones/ventas y nos fijaremos en el número de líneas/filas que tiene. Si hay menos de las marcadas en el informe general significará que hay un problema de duplicidad. Ya que tendremos más transacciones que identificadores de transacción.

transacciones duplicadas

Para este caso mostrado, podemos ver cómo el sistema cuenta 1041 transacciones mientras que tan sólo hay 1021 identificadores de transacción. Por lo que hay un problema de duplicidad de transacciones.

Podemos evitar esta situación desde nuestro gestor de etiquetas.

Si nuestra implementación está desarrollada con el gestor de etiquetas de Google, tenemos una excelente explicación de David Vallejo de los pasos a seguir para evitar que se envíen transacciones duplicadas (en inglés).

En este artículo vamos a explicar una forma de evitar esto, en el caso de que tengamos nuestra implementación de Google Analytics con el gestor de etiquetas Tealium.

La idea consiste en almacenar en una cookie cada transacción y, antes de enviar el hit de transacción, revisar si el identificador ya existe en esta cookie, en caso afirmativo, bloquear este envío.

Una de las características de Tealium, respecto al desarrollo del comercio electrónico mejorado, es que la transacción se lanza automáticamente si el Universal Data Object (dataLayer) contiene el identificador de la transacción, por lo que tendremos que eliminar este dato cuando comprobemos que la transacción ya existe.

Se da por supuesto que vamos a trabajar sobre un site que ya tiene implementado el comercio electrónico mediante Tealium, por lo que existe una variable order_id, donde se pasa el identificador de la transacción, y se ha añadido la extensión de E-commerce, propia de Tealium.

En primer lugar, crearemos una variable de cookie de primera parte, donde almacenaremos las transacciones.

variable tealium

También crearemos otra variable, de Universal Data Object, donde almacenaremos de manera temporal el contenido de la cookie para utilizarla en una extensión JavaScript.

variable tealium

A continuación, crearemos una extensión del tipo Set Data Values, para recoger el valor de la cookie y almacenarla en la variable temporal que acabamos de crear, indicando como condición que la cookie exista y seleccionando “All Tags” como Scope.

tealium

El siguiente paso será crear una extensión del tipo JavaScript, en esta extensión comprobaremos si en el utag_data se está pasando el identificador de la transacción y si existe en la cookie, en tal caso, dejaremos la variable del identificador en blanco para que no salte el hit de transacción.

javascript

El código utilizado sería el siguiente:

//Comprobamos si existe el order_id
if (utag_data.order_id){
//Comprobamos si no se trata de una devolución
if (utag_data.enh_action != "refund"){
var idtransaccion = utag_data.order_id.trim();
var transacciones = utag_data.temp_idTransacciones;
if (transacciones){
var v_transacciones = transacciones.split("|");
//comprobamos si la reserva ya se ha efectuado anteriormente
if (v_transacciones.indexOf(idtransaccion)>-1){
//La transacción existe borramos el valor de la variable para que Tealium no lance la transacción.
utag_data.order_id = "";
utag_data.temp_idTransacciones = transacciones;
}else{
utag_data.temp_idTransacciones = transacciones + "|" + idtransaccion;
}
}else{
utag_data.temp_idTransacciones = idtransaccion;
}
}
}

Primero comprobamos si tenemos el identificador de la transacción, para no hacer nada si no es necesario, a continuación, comprobamos que no se trate de una devolución, ya que es otro caso en el que podemos tener el identificador de transacción.Lo que hace la función es comprobar si el identificador que nos llega por el dataLayer está incluido en la cookie, la cual habíamos pasado a una variable temporal.En caso de existir dejamos en blanco el valor de la variable order_id para bloquear la transacción.
Si la transacción no existe, la incluimos en la variable temporal, que al final nos quedará una cadena con todos los identificadores de transacción separados por una barra “|”.Para terminar, pasamos el valor de la variable temporal a la cookie que creamos al principio, con una duración de, por ejemplo, un año.
Para esto utilizamos una nueva extensión de tipo Persis Data Value.

persist data value

Con estas tres extensiones será suficiente y dejaremos de recibir transacciones duplicadas.

IMPORTANTE, para que las extensiones que hemos creado tengan efecto, deben colocarse antes de la extensión de E-commerce que hemos utilizado para realizar el seguimiento del comercio electrónico en nuestro site.

tags detail

Autor:

Analista web en Metriplica. Licenciado en Ingeniería Informática Superior de Sistemas Físicos en la Universidad Politécnica de Valencia. @vperisnavarro

Leave Comment

Your email address will not be published. Required fields are marked *