Shopping cart

Como descobrir e resolver pedidos duplicados no Google Analytics

  • Home
  • E-Commerce
  • Como descobrir e resolver pedidos duplicados no Google Analytics

Da série problemas do dia a dia. Hoje vim trazer 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;
  2. 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;
  3. Criar variável que recebe o cookie userTransactionIds;
  4. Configurar exceção orderPlacedIsDuplicated para bloquear o disparo da tag de transação;
  5. Adicionar a exceção na configuração do disparo da tag;
  6. 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”.

 

Referência MétricaBoss.

Post Comment

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