Como descobrir e resolver pedidos duplicados no Google Analytics

por Lucian Fialho Terça-feira, 12 de fevereiro de 2019   Tempo de leitura: 7 minutos

Da série “problemas do dia a dia”. Hoje trago um dos maiores problemas enfrentados por e-commerces dentro do Google Analytics: pedidos inflados. Além de triplicar sua receita e sujar suas métricas, acaba com a sua confiança nos dados.

Quais cenários podem gerar esse problema?

Quando a tela de finalização de pedido fica habilitada para que seu usuário possa revisitá-la sempre que quiser. Vamos tomar como exemplo lojas que utilizam a Vtex como plataforma. Ao fechar uma compra, o sistema leva para a seguinte url: https://www.loja.com.br/checkout/orderPlaced/?og=12345.

Os seguintes comportamentos podem gerar a duplicação do pedido:

  • Toda vez que o seu usuário atualizar a página;
  • Restauração do navegador;
  • Ir para uma outra página e retornar via botão voltar do navegador;
  • Abrir o navegador do celular depois de ter realizado uma compra.

Nestes cenários, todos os scripts vinculados a essa compra serão disparados novamente, inclusive sua tag de transação do GA.

Como solução para a plataforma, o ideal é que seja renovada a sessão do usuário após a compra, inclusive redirecionando-o da tela de sucesso após alguns segundos. Isso, além de acabar com o problema, levará o usuário para alguma outra página, não quebrando sua experiência.

Como sugestão, imagino que esse usuário pode ser levado para alguma página que intensifique a experiência. Pode ser algum conteúdo do seu blog ou até mesmo uma página onde você explique a politica de troca.

Como eu identifico no GA se meus pedidos estão sendo duplicados?

No Google Analytics, acesse Conversões > Comércio Eletrônico > Transações. Ao abrir o relatório, você verá diversos pedidos. Clique em um dos pedidos. Selecione um período maior do que 1 semana e identifique se o mesmo foi capturado em mais de uma data.

Agora que aprendemos a identificar o problema, vamos a solução.

Como resolver o problema de pedidos duplicados dentro do meu Google Analytics

Para essa solução, partiremos do princípio que você está usando o Google Tag Manager, já o instalou o GA e está disparando a tag de comércio eletrônico através do GTM.

Para solucionar, buscamos não reinventar a roda. Existem diversos outros posts na web que explicam como fazer isso. Para esse caso, acabei fazendo a adaptação de dois posts: um do @simoahava e outro do @thyng.

O guia da implementação é o seguinte:

1 – Criar variável que retornará uma função que realizará a inserção do transactionId da compra atual no cookie transactionIdHitCallback;

  • Verificar se o transactionId esta presente no dataLayer;
  • Definir um objeto de data;
  • Adicionar a esse objeto a data/hora atual;
  • Definir o tempo de expiração do cookie;
  • Caso cookie já esteja setado na máquina, ele adiciona o transactionId atual dentro do cookie;
  • Escreve o cookie na maquina do usuário userTransactionIds;
  • Criar variável para bloquear o disparo da requisição de transação para o GA transactionIdIsDuplicated;
  • Identificar se o transactionId esta setado no dataLayer;
  • Verifica se o cookie userTransactionIds existe;
  • Cria um array baseado nas informações que estão dentro do cookie;
  • Caso o id da transação atual esteja dentro do array, retorna “blockTransaction” para o valor da variável;

2 – Criar variável que recebe o cookie userTransactionIds;

  • Configurar exceção orderPlacedIsDuplicated para bloquear o disparo da tag de transação;
  • Adicionar a exceção na configuração do disparo da tag;
  • Adicionar a variável de configuração do Google Analytics à função para o hitCallback da API;
  • Adicionar uma função ao callback de transação do Google Analytics transactionIdHitCallback;
  • Criar uma variável do tipo “Javascript personalizado”, com o nome “transactionIdHitCallback”, e colar o seguinte script:

function() {
return function() {
var d, expires;
var cvalue = ”;

// Verifica se o transactionId esta presente no dataLayer
if ({{transactionId}}) {
// Define um objeto de data
d = new Date();
// Adiciona a esse objeto a data/hora atual
d.setTime(d.getTime() + (2*365*24*60*60*1000));
// Define o tempo de expiração do cookie
expires = ‘expires=’+d.toUTCString();

// Se o valor(transactionId) existir, adicionar ele dentro do cookie
if ({{userTransactionIds}}) {
cvalue = {{userTransactionIds}} + ‘,’;
}
// Escreve o cookie
document.cookie = ‘userTransactionIds=’ +
cvalue + {{transactionId}} + ‘; ‘ +
expires + ‘; path=/’;
}
};
}

Criar variável para bloquear o disparo da requisição de transação para o GA transactionIdIsDuplicated

Criar variável do tipo “Javascript personalizado”, com o nome “transactionIdIsDuplicated”, e colar o script abaixo:

function() {
// Caso o transactionId não existir, ele não fará nada
if(!{{transactionId}})
return;

// Verifica se o cookie com os transactionsId existe
if({{userTransactionIds}}){
// Cria um array com os transactionIds;
var trackedTransactions = {{userTransactionIds}}.split(“,”);

// Caso o transactionId já exista dentro do array retorna o bloqueio
if(trackedTransactions.indexOf({{transactionId}})>-1)
{
return “blockTransaction”;
}
}
}

Configurar exceção orderPlacedIsDuplicated para bloquear o disparo da tag de transação

Criar acionador do tipo “Evento personalizado”, com o nome “orderPlacedIsDuplicated”. Definir o nome do evento como “orderPlaced”, selecionar a opção do acionador para “Alguns eventos personalizados” e configurar o disparo para toda vez que a variável “transactionIdIsDuplicated” for igual a “blockTransaction”.

No nosso caso, estamos utilizando um e-commerce que faz o disparo da transação através de um evento personalizado. Geralmente, Vtex e Xtech usam esse escopo. Caso seu e-commerce preencha o dataLayer sem evento personalizado, mudar a configuração para “Page Path”.

Você recomendaria esse artigo para um amigo?

Nunca

 

Com certeza

 

Deixe seu comentário

0 comentários

Comentários

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Comentando como Anônimo

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

  Assine nossa Newsletter

Fique por dentro de todas as novidades, eventos, cursos, conteúdos exclusivos e muito mais.

Obrigado!

Você está inscrito em nossa Newsletter. Enviaremos, periodicamente, novidades e conteúdos relevantes para o seu negócio.

Não se preocupe, também detestamos spam.