Acesso rápido

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ário

Comentários

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

Comentando como Anônimo

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  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.