Como Rastrear Eventos de Teste A/B no GA4 (Passo a Passo)
Aprenda a rastrear teste A/B no GA4: evento customizado, dimensões, Google Tag Manager, relatório de Exploração e os erros que distorcem os dados.

📚 Este artigo faz parte do guia GA4 e Teste A/B: o Guia Completo de Integração.
Rastrear um teste A/B no GA4 não é um relatório pronto: é uma estrutura que você precisa montar, porque o GA4 não nasceu como ferramenta de experimentação (isso é assunto do guia completo de GA4 e teste A/B). Este guia mostra o passo a passo prático: o evento customizado que registra a variação vista, como transformar isso em dimensão dentro do GA4, como disparar tudo via Google Tag Manager e como montar um relatório de Exploração que compara conversão por variação sem se enganar.
Por que rastrear teste A/B no GA4 exige uma estrutura própria
O Google Optimize (descontinuado desde setembro de 2023) tinha experimento como conceito nativo: braço de controle, variações, divisão de tráfego e leitura de significância, tudo dentro da própria ferramenta. O GA4 não tem nada disso. Ele é uma ferramenta de análise de comportamento, não de experimentação: mede o que aconteceu, mas não decide quem vê o quê nem calcula vencedor sozinho.
Isso significa que, para usar o GA4 como fonte de dados de um teste A/B, três responsabilidades ficam separadas:
- Divisão de tráfego e atribuição de variação: continua sendo trabalho da sua ferramenta de teste (ou de um snippet próprio), não do GA4.
- Registro do evento: você precisa avisar o GA4, via evento customizado, qual variação cada usuário viu.
- Leitura e comparação: o GA4 vira uma fonte de dados complementar (comportamento, funil, receita), enquanto a divisão de tráfego e o cálculo de significância continuam vivendo na ferramenta de teste.
A estrutura recomendada: um evento customizado de “visualização de variação”
O ponto de partida é um evento customizado disparado no exato momento em que o usuário vê a variação, nunca depois de ele já ter interagido com a página (mais sobre esse erro adiante). Um nome comum na prática é experiment_impression (ou ab_test_view), carregando dois parâmetros fixos:
experiment_name(ouexperiment_id): identifica de qual teste se trata, para você acumular vários experimentos na mesma propriedade sem misturar dados.variation_name(ouvariation_id): identifica qual braço o usuário viu (controle,variacao_b, e assim por diante).
Uma tabela ajuda a fixar a estrutura antes de implementar:
| Elemento | Nome sugerido | Onde vive |
|---|---|---|
| Evento de impressão | experiment_impression |
Disparado no momento em que a variação aparece na tela |
| Parâmetro: experimento | experiment_name |
Valor fixo por teste (ex.: checkout_frete_gratis) |
| Parâmetro: variação | variation_name |
Valor por braço (ex.: controle, variacao_b) |
| Dimensão customizada 1 | Nome do experimento | Admin > Custom definitions, escopo de evento |
| Dimensão customizada 2 | Nome da variação | Admin > Custom definitions, escopo de evento (ou usuário) |
Um detalhe que passa despercebido e derruba a análise: uma dimensão customizada com escopo de evento só aparece nas linhas do evento específico que carregou o parâmetro (o experiment_impression em si), não nos eventos posteriores, como uma compra. Se você quer comparar a taxa de conversão por variação num relatório de Exploração, tem duas saídas: repetir o parâmetro da variação em todo evento de conversão relevante, ou registrar a dimensão com escopo de usuário (via propriedade de usuário), para que o valor “grude” no usuário e apareça em todos os eventos subsequentes dele, inclusive a conversão.
Como registrar as dimensões customizadas no GA4
Enviar o parâmetro no evento não é suficiente: o GA4 só transforma um parâmetro em coluna de relatório depois que você registra a dimensão customizada correspondente. O caminho, segundo a documentação oficial do Google:
- Abra Admin, na propriedade correta.
- Em Definições personalizadas (Custom definitions), clique em Criar dimensões personalizadas.
- Escolha um nome de exibição (o que você vai ver nos relatórios, ex.: “Variação do teste”).
- Selecione o escopo: evento (padrão para este caso) ou usuário (se quiser que o valor persista, como explicado acima).
- Em Parâmetro do evento, digite exatamente o nome técnico do parâmetro que o seu evento envia (ex.:
variation_name), sem espaços nem acentos. - Salve. Repita para o parâmetro do nome do experimento.
Duas pegadinhas a considerar: a dimensão só começa a contar dados a partir do momento em que foi criada (não há retroatividade, então crie antes de ativar a tag em produção), e, segundo a documentação oficial do Google, pode levar de 24 a 48 horas até a dimensão aparecer disponível para uso nos relatórios depois do primeiro dado chegar. Segundo a documentação de limites do GA4, uma propriedade padrão permite até 50 dimensões customizadas com escopo de evento e 25 com escopo de usuário (125 e 100 em propriedades GA4 360); como cada teste reaproveita as mesmas duas dimensões, esse teto raramente é um problema.
Google Tag Manager como camada de disparo
Na prática, a maioria das implementações não escreve gtag() direto no código: usa o Google Tag Manager (GTM) como intermediário, porque isso separa “o que disparar” de “onde a lógica de negócio mora”. A peça central é o próprio dataLayer, o array global que o GTM e o gtag.js leem para receber eventos e variáveis. O seu snippet de teste A/B (ou a ferramenta que você usa) deve empurrar algo como:
A partir daí, a configuração dentro do GTM segue três peças que se encaixam:
- Gatilho (trigger) de evento customizado, configurado para escutar exatamente o nome
experiment_impressionque chega na dataLayer. - Variáveis de camada de dados (Data Layer Variable), uma para
experiment_namee outra paravariation_name, que leem os valores empurrados nodataLayer.push. - Tag do tipo “Google Analytics: Evento do GA4”, configurada com o nome do evento e os dois parâmetros acima (usando as variáveis criadas), disparada pelo gatilho do passo 1.
Esse é o padrão documentado pelo Google Tag Manager para eventos personalizados: um gatilho do tipo “Evento personalizado” escutando o nome enviado via dataLayer.push, com variáveis de camada de dados lendo os parâmetros. Se você já usa uma variável de “Configurações de evento” (Event Settings) para reaproveitar parâmetros entre várias tags, os dois parâmetros deste teste podem entrar ali também, evitando repetição.
Montando o relatório de Exploração para comparar variações
Com o evento chegando e as dimensões registradas, o relatório que compara conversão por variação vive em Explorar. Os relatórios prontos até aceitam uma dimensão customizada como dimensão secundária, mas não montam a tabela lado a lado (variação nas linhas, métricas nas colunas) que você precisa para essa comparação, então na prática o Explorar é o caminho:
- Em Explorar, crie uma exploração em branco (Formato livre, ou “Tabela dinâmica” simples).
- Em Dimensões, importe a dimensão customizada de variação (e a de experimento, se você acumula vários testes na mesma propriedade).
- Em Métricas, importe conversões (a que representa a sua métrica primária) e usuários ativos ou visualizações do evento de impressão.
- Arraste a dimensão de variação para Linhas e as métricas para Valores. Se você acumula vários experimentos, arraste a dimensão de experimento para um filtro fixo, selecionando o teste que quer analisar.
- Adicione uma métrica calculada (ou divida manualmente) para ver a taxa de conversão lado a lado entre as variações, não só o volume bruto.
| Coluna no relatório | De onde vem |
|---|---|
| Variação do teste | Dimensão customizada variation_name |
| Usuários (impressões) | Contagem do evento experiment_impression |
| Conversões | Evento de conversão (ex.: purchase), filtrado ou já carregando a dimensão |
| Taxa de conversão | Conversões ÷ usuários, calculada na própria tabela |
O resultado é uma tabela simples: cada linha uma variação, com volume e taxa de conversão lado a lado, pronta para comparar visualmente antes de levar os números para uma calculadora de significância.
A limitação real: amostragem em volume alto
Aqui mora uma armadilha que só aparece em sites de tráfego alto. Segundo a documentação oficial do Google sobre amostragem de dados, relatórios de Exploração em propriedades GA4 padrão passam a estimar por amostra quando a consulta ultrapassa 10 milhões de eventos no período selecionado (em propriedades GA4 360 o teto sobe para cerca de 1 bilhão). Os relatórios prontos (fora do Explorar) nunca são amostrados, mas eles também não deixam você cruzar uma dimensão customizada específica como a variação de um teste, então a comparação por variação praticamente sempre passa pelo Explorar.
Na prática: se o seu teste roda numa página de alto volume e o período de análise acumula dezenas de milhões de eventos, o número de conversões por variação que você vê no Explorar pode ser uma estimativa, não uma contagem exata, o que é perigoso justamente na hora de decidir um vencedor apertado. A saída documentada pelo Google é o BigQuery Export: ele exporta cada evento bruto da propriedade para um data warehouse, sem amostragem e sem o teto de retenção de 14 meses da interface, e a exportação em modo streaming não tem limite de eventos (o modo diário tem um teto de 1 milhão de eventos por propriedade padrão). Uma vez no BigQuery, a mesma comparação por variação vira uma consulta SQL exata, o dado bruto que alimenta a análise mais rigorosa do guia completo de GA4 e teste A/B.
Erros comuns que distorcem a leitura no GA4
- Disparar o evento de impressão tarde demais. Se o
experiment_impressionsó dispara depois de um clique ou de uma rolagem, você está medindo só quem já demonstrou intenção, e a taxa de conversão fica artificialmente alta nas duas variações (viés de sobrevivência). O evento precisa disparar no momento em que a variação aparece na tela, não depois de qualquer interação. - Não filtrar tráfego interno. Acessos da sua própria equipe e de ferramentas de monitoramento inflam volume sem converter (ou convertem de forma anormal), distorcendo a taxa das duas variações de formas diferentes. O GA4 já exclui automaticamente bots e spiders conhecidos por padrão (não existe uma opção para ativar, e essa lista não cobre tudo), então a parte que fica por sua conta é definir o tráfego interno (Admin > Fluxos de dados > Configurar tag > Definir tráfego interno, por IP) e criar o filtro de dados correspondente antes de comparar.
- Consent Mode implementado de forma assimétrica. Se o banner de consentimento ou o carregamento do gtag se comporta de um jeito na variação A e de outro na B (um atraso, uma condição diferente), a contagem de eventos no GA4 pode ficar desproporcional entre os dois lados mesmo que a divisão real de visitantes tenha sido 50/50. Isso é primo do Sample Ratio Mismatch (SRM): o sintoma é o mesmo (uma proporção de tráfego que deveria ser igual e não é), mas a causa mora na camada de mensuração do GA4, não necessariamente no sorteio da sua ferramenta de teste. Vale checar com um verificador de SRM e, se a divisão real também estiver torta, investigar o problema do peeking e outras causas de leitura precipitada.
Um exemplo trabalhado, com os números exportados do relatório
Suponha que você montou o relatório de Exploração como descrito acima e exportou os seguintes números, agrupados pela dimensão de variação: a variação controle (A) teve 9.000 usuários com o evento de impressão e 360 conversões (evento purchase); a variação B teve 9.000 usuários e 410 conversões.
- Taxa de A: 360 ÷ 9.000 = 4,00%. Taxa de B: 410 ÷ 9.000 = 4,56%.
- Melhora relativa: (4,56 − 4,00) ÷ 4,00 ≈ +13,9%. Um lift chamativo à primeira vista.
- Taxa combinada p̄: (360 + 410) ÷ 18.000 = 4,28%.
- Erro padrão: √[0,0428 · 0,9572 · (1÷9.000 + 1÷9.000)] ≈ 0,00302.
- Escore z: (0,0456 − 0,0400) ÷ 0,00302 ≈ 1,84.
- Valor-p (bilateral) ≈ 0,066.
Com valor-p de 0,066 (acima do corte de 0,05) e o intervalo de confiança de 95% da diferença variando de aproximadamente −0,04 a +1,15 pontos percentuais (cruzando o zero), o resultado não é estatisticamente significativo, mesmo com um lift relativo de quase 14% no número cru. É exatamente o cenário em que declarar um vencedor cedo, só porque a tabela do GA4 “parece boa”, vira o erro mais comum da lista acima. A leitura honesta aqui é: continue coletando, ou aceite que, com essa amostra, a diferença observada ainda pode ser ruído. Confira a mesma conta na calculadora abaixo, colando os números exportados do seu relatório:
Teste z bilateral de duas proporções. "Sem significância" quase sempre quer dizer que falta amostra, não que as versões são iguais.
Faça isso automático na Donnu
O trabalho que este guia cobriu (desenhar o evento, registrar dimensões, configurar o GTM, montar o Explorar e não se enganar com amostragem ou peeking) é real, e o GA4 sozinho não faz nada disso por você. A Donnu cuida da outra metade do problema: a divisão de tráfego 50/50 estável e o cálculo de significância honesto acontecem automaticamente dentro da própria ferramenta, sem precisar montar evento customizado nem relatório de Exploração para saber quem está vencendo. O GA4 continua sendo útil como fonte complementar de comportamento e receita, mas a decisão do teste não depende dele.
Comece um teste grátis na Donnu e deixe a divisão de tráfego e a significância por conta da ferramenta, enquanto o GA4 fica livre para o que faz de melhor: contar a história do comportamento do seu usuário. Para o panorama completo de como GA4 e teste A/B se encaixam, veja o guia completo de GA4 e teste A/B.
Referências
- Google. Sobre dimensões e métricas personalizadas do GA4 (limites por propriedade). support.google.com/analytics/answer/14240153.
- Google. Criar dimensões personalizadas com escopo de evento no GA4. support.google.com/analytics/answer/14239696.
- Google. Sobre a amostragem de dados no GA4 (limiar de 10 milhões de eventos no Explorar). support.google.com/analytics/answer/13331292.
- Google. Sobre eventos personalizados no Gerenciador de Tags (gatilho de evento personalizado disparado via
dataLayer.push). support.google.com/tagmanager/answer/7679219. - Google. Configurar o BigQuery Export no GA4 (exportação de eventos brutos, sem amostragem). support.google.com/analytics/answer/9823238.
Perguntas frequentes
- O GA4 tem um recurso nativo para rodar teste A/B, como o Google Optimize tinha?
- Não. O GA4 é uma ferramenta de análise, não uma ferramenta de experimentação: ele não tem o conceito nativo de "experimento" com braço de controle e variação, nem divide tráfego sozinho. Para rastrear um teste A/B no GA4 você precisa modelar isso manualmente com um evento customizado que carrega o nome do experimento e da variação como parâmetros, e a divisão de tráfego continua sendo responsabilidade da sua ferramenta de teste (ou de um snippet próprio).
- Qual nome de evento devo usar para rastrear a variação vista pelo usuário?
- Não existe um nome exigido pelo GA4. O comum é um evento customizado como experiment_impression ou ab_test_view, disparado no momento em que o usuário efetivamente vê a variação, com parâmetros como experiment_name e variation_name (ou variation_id). O importante é manter o mesmo nome de evento e de parâmetros em todos os testes, para os relatórios ficarem comparáveis ao longo do tempo.
- Quantas dimensões customizadas eu posso criar no GA4 para rastrear testes A/B?
- Segundo a documentação oficial do Google, uma propriedade GA4 padrão permite até 50 dimensões customizadas com escopo de evento (event-scoped) e 25 com escopo de usuário. Em propriedades GA4 360 esses limites sobem para 125 e 100. Cada teste A/B costuma consumir só duas dimensões (nome do experimento e nome da variação), reutilizadas por todos os testes seguintes.
- Por que meu relatório de Exploração no GA4 mostra números diferentes do esperado?
- Um motivo comum é amostragem: segundo o Google, relatórios de Exploração em propriedades GA4 padrão passam a estimar por amostra quando a consulta ultrapassa 10 milhões de eventos no período selecionado, enquanto os relatórios prontos (fora do Explorar) nunca são amostrados. Se o seu teste roda num site de alto tráfego, isso pode distorcer a comparação entre variações, e a saída recomendada é exportar os dados brutos via BigQuery Export.
- O Consent Mode pode atrapalhar a leitura de um teste A/B no GA4?
- Sim, de forma indireta. O Consent Mode em si não altera a divisão de tráfego do seu teste, mas se a implementação do banner de consentimento não for idêntica nas duas variações (por exemplo, uma delas atrasa o carregamento do banner ou do gtag), a contagem de eventos registrada no GA4 pode ficar desproporcional entre A e B mesmo que a divisão real de visitantes tenha sido 50/50. Isso se parece com um Sample Ratio Mismatch (SRM), só que morando na camada de mensuração, não na de sorteio.