Teste A/B

Teste A/B no WooCommerce: o guia completo

Como fazer teste A/B no WooCommerce: cache de página, blocos x shortcode, qual métrica usar por etapa e a conta de amostra que decide o que dá para testar.

Ilustração de dois cartões de página de loja quase idênticos lado a lado, separados por uma linha vertical, com um carrinho de compras ao lado

Fazer teste A/B no WooCommerce não é diferente de fazer em qualquer loja, exceto por quatro detalhes que só aparecem numa instalação WordPress e que derrubam a maioria dos primeiros testes: o cache de página, a convivência entre o checkout em blocos e o checkout clássico, os conflitos entre plugins, e a escolha da etapa a medir. Este guia, parte do playbook de otimização de checkout em e-commerce, cobre os quatro, mostra qual métrica usar em cada etapa da loja, e traz a conta que decide o que dá e o que não dá para testar no seu volume, com calculadora ao vivo e exemplo trabalhado ponta a ponta.

O que muda numa loja WooCommerce

O WooCommerce é um plugin de e-commerce para WordPress, com mais de 7 milhões de instalações ativas segundo o repositório oficial de plugins do WordPress (wordpress.org). Ele não traz motor de experimentação embutido, então o teste sempre vem de fora, por um dos dois caminhos:

Caminho Como funciona Vantagem Armadilha principal no WordPress
Client-side por snippet Uma tag no cabeçalho troca o conteúdo no navegador do visitante Instala em minutos, não depende de deploy Cintilação se a tag carregar tarde; depende de JavaScript
Server-side em PHP Um hook sorteia a variação antes de montar a página Sem cintilação, funciona com JavaScript desligado Cache de página pode congelar uma variação e servi-la a todos

A diferença entre os dois modelos está detalhada no guia de teste A/B client-side x server-side. Para a maioria das lojas WooCommerce, o caminho client-side é o único que sai do papel em prazo curto, e a razão é a próxima seção.

Obstáculo 1: o cache de página

Este é o problema número um, e ele é silencioso. Quase toda loja WordPress séria roda com cache de página, seja por plugin, seja por CDN. O cache existe justamente para não executar o PHP a cada visita: ele guarda o HTML gerado uma vez e devolve o mesmo arquivo para as próximas pessoas.

Isso é excelente para desempenho e é fatal para um teste server-side ingênuo. Se o seu código sorteia a variação em PHP e o cache guarda a primeira resposta gerada, todo mundo passa a receber aquela variação. O teste continua “rodando” no painel, e a divisão real de tráfego já não é a que você configurou.

Como o cache de página congela um teste server-sideNo teste server-side sem tratamento de cache, o PHP sorteia a variação uma vez, o cache guarda esse HTML e devolve a mesma variação para todos os visitantes seguintes. No teste client-side, o servidor entrega o mesmo HTML para todos, o cache guarda esse HTML único e o script sorteia a variação já no navegador de cada pessoa.Server-side sem tratar o cachePHP sorteiauma vezCache guardasó a variação Btodos recebem Bsintoma: divisão de tráfego longe de 50/50 no relatórioClient-side por snippetHTML únicoigual pra todosCache guardaesse HTML únicoscript sorteia no navegadorcada pessoa cai num ladoo cache não interfere na divisãoExiste teste server-side correto com cache: ele exige variar a chave do cache por variaçãoou tomar a decisão na borda, antes do cache responder. O que não funciona é ignorar o problema.Confira sempre a divisão real de tráfego no primeiro dia de qualquer teste.
O cache não quebra o teste client-side, porque o HTML servido é o mesmo para todo mundo e o sorteio acontece depois. É a razão prática pela qual quase toda loja WooCommerce começa por esse caminho.

Existe teste server-side correto convivendo com cache: basta que a chave do cache inclua a variação, ou que a decisão aconteça na borda, antes de o cache responder. Isso é trabalho de infraestrutura, descrito no guia de como implementar teste A/B server-side. O erro é rodar o teste sem tratar o cache e confiar no relatório.

Independentemente do caminho escolhido, existe uma verificação obrigatória no primeiro dia: olhar a divisão real de visitantes entre as variações. Uma divisão que deveria ser 50/50 e aparece como 68/32 não é azar, é um defeito de instrumentação, e o teste inteiro fica inválido enquanto ele não for corrigido.

Obstáculo 2: checkout em blocos x checkout clássico

Segundo a documentação do WooCommerce, lojas iniciadas a partir do lançamento da versão 8.3, em novembro de 2023, já vêm com os blocos de Carrinho e Finalização como experiência padrão, sem necessidade de configuração (WooCommerce, Cart and Checkout Blocks as Default). Lojas mais antigas normalmente continuam com o checkout clássico, montado por shortcode.

Para o teste, a consequência é direta: as duas versões geram HTML diferente. Um seletor de CSS escrito olhando o checkout clássico simplesmente não encontra nada no checkout em blocos, e o teste roda sem nunca aplicar a variação, produzindo um empate perfeito que parece resultado e é defeito.

Antes de escrever qualquer variação, confira qual das duas a sua loja usa e escreva o seletor contra a estrutura real da página. Se você administra mais de uma loja, não reaproveite o seletor entre elas sem conferir.

Obstáculo 3: conflito de plugins e visitante logado

Duas particularidades de WordPress fecham a lista de armadilhas técnicas.

A primeira é o conjunto de plugins. Uma loja WooCommerce típica roda dezenas deles, e vários mexem no mesmo lugar em que o seu teste mexe: otimizadores de checkout, plugins de campos personalizados, de frete, de popup. Quando dois códigos alteram o mesmo elemento, quem aplica por último ganha, e o resultado varia por ordem de carregamento. O sintoma é a variação “às vezes aparecer”.

A segunda é o visitante logado. Administradores, editores e clientes recorrentes logados costumam ver o site com barra de administração, cache desativado e às vezes preços diferentes. Incluir esse público no teste contamina os dois lados de forma desigual. A regra prática é excluir usuários logados com papel administrativo do experimento, e decidir conscientemente se clientes logados entram ou não, documentando a escolha.

A conta que decide o que dá para testar

Aqui está a parte que resolve a objeção mais comum de lojista: “a minha loja é pequena demais para testar”. Quase sempre a frase está errada, e o que está errado é a etapa escolhida para medir.

Considere uma loja com 6.000 visitas por semana e uma taxa de conversão geral de 1,8% (visita até pedido). Querendo detectar um ganho relativo de 20%, a 95% de confiança e 80% de poder, a amostra necessária é de 23.507 visitas por variação, o que leva 55 dias.

Calculadora de tamanho de amostra
-Visitantes por variação
-Total (2 variações)
-Duração estimada

Cálculo por aproximação normal de duas proporções, 2 variações (50/50). Mexa nos campos e veja o impacto ao vivo.

Ajuste a calculadora acima para taxa base 1,8, efeito mínimo detectável 20 (relativo) e 6.000 visitantes por semana para reproduzir esse número. Quase dois meses é um prazo que a maioria das lojas não aceita, e é aí que o time desiste ou, pior, para o teste na metade.

Agora mude a etapa medida. A mesma loja tem 1.200 inícios de finalização por semana, e 45% deles viram pedido. Testar uma mudança dentro do checkout, medindo a taxa de conclusão a partir do início da finalização, com um ganho relativo de 10%, exige apenas 1.931 visitantes por variação, o que leva 23 dias.

Calculadora de duração de teste A/B
-Duração estimada
Visitantes no total-
Término previsto-

Aproximação normal de duas proporções, divisão igual entre as variações. A data usa o seu fuso e recalcula ao vivo.

Desenho Taxa base Volume que alimenta Amostra por variação Duração
Loja inteira, visita até pedido, ganho de 20% 1,8% 6.000 visitas/semana 23.507 55 dias
Etapa de checkout, início até pedido, ganho de 10% 45% 1.200 inícios/semana 1.931 23 dias

A diferença não vem de mágica estatística, vem de duas coisas ao mesmo tempo: taxas base altas exigem amostras muito menores para o mesmo ganho relativo, e o funil filtra justamente quem já demonstrou intenção. Testar dentro do checkout é o caminho de menor custo de amostra em quase toda loja pequena e média.

O contrapeso honesto: medir a etapa não é o mesmo que medir o negócio. Uma mudança que melhora a conclusão do checkout pode, por exemplo, aumentar a taxa e reduzir o ticket médio se ela empurra o cliente a finalizar mais rápido. Por isso a receita por visitante entra sempre como métrica de guarda, mesmo quando a métrica primária é a etapa.

Qual métrica usar em cada etapa da loja

Onde está a mudança Métrica primária Métricas de guarda
Página inicial e categorias Taxa de visita a página de produto Receita por visitante, taxa de saída
Página de produto Taxa de adição ao carrinho Receita por visitante, taxa de devolução quando disponível
Carrinho Taxa de início de finalização Ticket médio, receita por visitante
Finalização (checkout) Taxa de conclusão a partir do início Receita por visitante, taxa de erro de pagamento
Preço, frete e promoção Receita por visitante Margem, ticket médio, taxa de conversão

A regra por trás da tabela: quanto mais perto a métrica primária estiver da mudança, mais rápido o teste fecha, e quanto mais longe ela estiver do dinheiro, mais indispensável fica a métrica de guarda. A página de produto e o carrinho ganham tratamento detalhado no guia de teste A/B de página de produto e no de carrinho abandonado.

Passo a passo para o primeiro teste

  1. Escolha a etapa com maior perda absoluta. Some quantas pessoas saem em cada passo do funil e ataque o degrau que perde mais gente, não o que parece mais feio.
  2. Escreva a hipótese antes de abrir a ferramenta. O que muda, por quê, qual métrica primária, qual efeito mínimo que justifica implementar.
  3. Dimensione antes de rodar. Calcule a amostra e a duração com o tráfego real daquela etapa. Se o resultado for maior do que o prazo aceitável, mude a ambição ou a etapa, nunca o rigor.
  4. Instale a tag e confira a divisão real. No primeiro dia, olhe se a distribuição bate com o configurado. Confira também em mobile e com um usuário deslogado, em aba anônima.
  5. Deixe rodar semanas inteiras. Loja tem sazonalidade forte de dia de semana. Encerrar no meio de uma semana compara segunda-feira com sábado.
  6. Leia com o intervalo de confiança na frente. Estimativa pontual isolada vira promessa que o dado não sustenta, como explicado no guia de significância estatística.
  7. Implemente a vencedora de verdade no tema ou no plugin. Variação servida por snippet é temporária; o ganho definitivo só existe quando ela vira código da loja.

Erros comuns em teste A/B no WooCommerce

Erro Sinal de alerta Correção
Ignorar o cache num teste server-side Divisão de tráfego longe do configurado Varie a chave do cache por variação, ou use client-side
Escrever o seletor para a versão errada do checkout Empate perfeito e variação que nunca aparece Confira se a loja usa os blocos ou o shortcode clássico antes de escrever
Incluir administradores logados no teste Poucas sessões com comportamento muito atípico Exclua papéis administrativos e documente a decisão sobre clientes logados
Medir só a conversão geral numa loja pequena Teste com duração de meses e abandonado no meio Meça a etapa, com receita por visitante como guarda
Encerrar no meio da semana Resultado que muda de sinal conforme o dia da leitura Rode em blocos de semanas completas
Testar durante promoção grande Comportamento de compra completamente diferente Evite períodos atípicos ou trate-os como um teste à parte
Rodar três testes no mesmo funil ao mesmo tempo Resultados que não somam quando implementados Um teste por etapa, ou desenho fatorial declarado antes
Deixar a variação vencedora no snippet para sempre Ganho depende da ferramenta continuar carregando Implemente no tema ou plugin e remova o teste

Faça isso automático na Donnu

A parte difícil de testar numa loja WooCommerce quase nunca é a ideia, é a operação em volta dela: conferir se a divisão de tráfego saiu certa e ler o resultado sem transformar uma estimativa imprecisa em promessa de receita. A Donnu cobre exatamente esse trecho: você cola um snippet que não trava o carregamento da loja, define a métrica, e a Donnu acompanha a divisão real de tráfego, avisa quando ela destoa do configurado e devolve o veredito com o intervalo de confiança de 95% na frente, sem declarar vencedora antes de a variação acumular pelo menos 200 visitantes e 7 dias no ar.

Comece um teste grátis de 14 dias e rode o primeiro teste no degrau que mais perde gente. Para o quadro completo, veja o playbook de otimização de checkout e a lista de ferramentas de teste A/B para WordPress.

Referências

Leia também:

Perguntas frequentes

O WooCommerce tem teste A/B nativo?
Não. O WooCommerce é um plugin de e-commerce para WordPress e não traz um motor de experimentação embutido, então o teste vem de uma ferramenta externa: um snippet client-side que troca o conteúdo no navegador, ou uma implementação server-side em PHP com sorteio no servidor. Cada caminho tem uma armadilha própria numa instalação WordPress, e a maior delas é o cache de página.
Por que o cache de página atrapalha o teste A/B no WooCommerce?
Porque a maior parte das lojas WordPress serve HTML pré-gerado por um plugin de cache ou por um CDN, e um teste server-side que decide a variação no PHP pode ter a resposta congelada e entregue a todo mundo. O sintoma clássico é uma divisão de tráfego muito diferente de 50/50 no relatório. Testes client-side não sofrem disso, porque o HTML é o mesmo para todos e a troca acontece no navegador depois.
Dá para testar a página de finalização do WooCommerce?
Dá, mas o alvo do seletor depende de qual versão de checkout a loja usa. Segundo a documentação do WooCommerce, lojas criadas a partir da versão 8.3, de novembro de 2023, já vêm com os blocos de Carrinho e Finalização como padrão, enquanto lojas mais antigas costumam usar o checkout clássico por shortcode. A estrutura de HTML das duas é diferente, então um seletor escrito para uma quebra na outra.
Minha loja tem pouco tráfego. Dá para testar mesmo assim?
Depende de qual etapa você escolhe medir. A conversão da loja inteira costuma ter uma taxa base baixa e exigir amostra grande: no exemplo trabalhado deste guia, detectar um ganho relativo de 20% sobre uma base de 1,8% leva 55 dias com 6.000 visitas por semana. Já testar dentro do checkout, onde a taxa base é muito maior, resolve em 23 dias com apenas 1.200 inícios de finalização por semana. Mudar a etapa medida muda a viabilidade sem abrir mão do rigor.
Qual métrica usar num teste de loja WooCommerce?
A métrica primária tem que ser a mais próxima possível do que a mudança altera, e a receita por visitante deve estar sempre entre as métricas de guarda. Uma alteração na página de produto pede taxa de adição ao carrinho como primária; uma alteração no checkout pede a taxa de conclusão do pedido a partir do início da finalização. Em nenhum dos casos a receita por visitante pode ficar de fora, porque é ela que revela um ganho de volume conquistado com queda de ticket.
Preciso de um plugin para rodar teste A/B no WooCommerce?
Não necessariamente. Ferramentas por snippet funcionam colando uma tag no cabeçalho do site, o que pode ser feito por um plugin de inserção de código, pelo tema ou pelo gerenciador de tags. Um plugin dedicado facilita a instalação, mas adiciona mais um item ao conjunto de plugins da loja, e conflito entre plugins é uma das causas mais comuns de comportamento estranho numa instalação WordPress.