Como medir o clique em “Entrar no grupo do WhatsApp” no GTM sem perder a conversão
Página intermediária com dataLayer, eventCallback e eventTimeout: a tag de conversão dispara antes de a pessoa ir pro WhatsApp. Código, configuração e teste.
Botão de WhatsApp é um dos piores lugares pra medir conversão. A pessoa toca, o app abre por cima, e a sua página sai da tela antes de a tag terminar de mandar o evento. Na página do meu grupo de ofertas eu resolvi isso com uma página intermediária pequena, e é ela que eu mostro aqui.
Por que o clique se perde
Num link direto pro chat.whatsapp.com, a navegação começa no toque. As tags de conversão (Meta, Google Ads, GA4) são carregadas e disparadas de forma assíncrona, então podem não terminar antes de a página ser trocada. No celular, o app do WhatsApp ainda abre por cima e deixa a aba em segundo plano.
O resultado é conversão subnotificada: a campanha manda gente pro grupo, e a conta de anúncio não fica sabendo. Com menos conversão registrada, a otimização da campanha trabalha com menos sinal.
O fluxo
- Todo botão “Entrar no grupo” da página aponta pra
/entrar/, uma página sua. - A
/entrar/carrega o GTM e empurra o eventoentrar_gruponodataLayer. - O
eventCallbacksó redireciona depois que o GTM termina de processar as tags desse evento. - O
eventTimeoutde 1.500 milissegundos garante o redirecionamento mesmo se alguma tag travar. - No celular, a página tenta abrir o app com
whatsapp://chat?code=. Se a página continuar visível 1,5 segundo depois, ela vai pro link web.
O código da página /entrar/
O snippet padrão do GTM vai no <head> dessa página, igual em qualquer outra. Depois, este script:
<script>
var link = "https://chat.whatsapp.com/SEU-CODIGO";
var convite = link.match(/chat\.whatsapp\.com\/(?:invite\/)?([A-Za-z0-9]{10,40})/);
var celular = /Android|iPhone|iPad|iPod/i.test(navigator.userAgent);
var foi = false;
function abrir() {
if (foi) return; // nunca redireciona duas vezes
foi = true;
if (convite && celular) {
window.location.href = "whatsapp://chat?code=" + convite[1];
setTimeout(function () { if (!document.hidden) window.location.href = link; }, 1500);
} else {
window.location.href = link;
}
}
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: "entrar_grupo",
eventCallback: function () { setTimeout(abrir, 100); },
eventTimeout: 1500
});
setTimeout(abrir, 1500); // GTM bloqueado: vai do mesmo jeito
</script>
Três detalhes que fazem diferença:
- O
setTimeoutextra no fim. OeventTimeoutsó funciona se o GTM carregar. Se um bloqueador de anúncio impedir ogtm.js, odataLayer.pushvira um item numa lista que ninguém lê, e oeventCallbacknunca é chamado. Sem esse últimosetTimeout, a pessoa ficaria presa na tela de “Abrindo o WhatsApp”. - A variável
foi. Garante que o redirecionamento aconteça uma vez só, venha do callback ou do tempo limite. - O link com
?mode=no fim. O link que o WhatsApp copia pode vir com parâmetros depois do código. A expressão regular pega só o código, e o resto não atrapalha.
Configurando no GTM
- Crie um acionador do tipo Evento personalizado com o nome de evento
entrar_grupo. - Pendure nele as tags de conversão: o evento Lead no pixel da Meta, a conversão do Google Ads e, no GA4, o evento recomendado
generate_lead. - Publique e confira no modo de visualização do GTM se o evento aparece quando você toca em “Entrar no grupo”.
Como eu testei sem sujar os números
Testar com o GTM de verdade dispararia conversões reais na conta de anúncio. Então, no navegador de teste, interceptei o carregamento do googletagmanager.com e do chat.whatsapp.com. No lugar do GTM entrou um script que só chama o eventCallback, e o link do WhatsApp foi respondido pelo próprio teste, sem abrir o grupo.
| Cenário | Tempo até ir pro WhatsApp |
|---|---|
| GTM respondendo | 0,24 segundo |
| GTM bloqueado | 1,56 segundo (o tempo limite) |
Com o GTM funcionando, a pessoa sai mais rápido do que esperaria um tempo fixo. Com ele bloqueado, perde um segundo e meio, mas chega no grupo.
Cuidados
- Tire a /entrar/ do Google. Coloque
noindexna página e umDisallownorobots.txt. Robô que visita essa página dispara evento de conversão. - Não duplique a conversão. Se a página já tem o pixel da Meta instalado direto, além do GTM, o mesmo clique conta duas vezes. Escolha um caminho.
- Guarde o link num lugar só. Grupo de WhatsApp lota com 1.024 pessoas. Quando acontecer, você troca o link num arquivo, e todos os botões e mensagens antigas continuam levando pro grupo certo.
Perguntas frequentes
Por que não usar só o acionador de clique em link do GTM?
Dá pra usar, com a opção de aguardar as tags antes de seguir o link. Eu preferi a página intermediária porque ela resolve três coisas num lugar só: conta a conversão de todos os botões da página, tenta abrir o app do WhatsApp direto e deixa o link do grupo guardado num arquivo só.
O whatsapp://chat?code= funciona em qualquer celular?
Ele depende do app do WhatsApp instalado. Por isso o código volta pro link web se, 1,5 segundo depois, a página ainda estiver na tela. No computador, a página vai direto pro link web.
Qual evento usar no GA4?
Eu escolhi o generate_lead, o evento recomendado do GA4 pra lead, porque o clique em Entrar é o lead do grupo e casa com o evento Lead da Meta. O GA4 também recomenda o join_group pra quando alguém entra num grupo; serve se você quer separar esse clique dos leads de formulário. O importante é usar o mesmo nome em todo lugar.
O clique em Entrar é a mesma coisa que a pessoa entrar no grupo?
Não. O clique mostra intenção. O WhatsApp não avisa a sua página quando alguém entra de fato no grupo. Pra conferir a entrada real, compare o número de cliques com o crescimento de membros do grupo no mesmo período.