Estatística

Perda de Rastreamento em Teste A/B: o dado que some

Consentimento, bloqueadores e políticas de navegador apagam parte do dado. Perda de rastreamento só enviesa o teste A/B quando é diferencial.

Ilustração plana de uma longa fileira horizontal de esferas verdes idênticas atravessando o quadro sobre um fundo verde menta claro, em tons de verde profundo

Perda de rastreamento não enviesa um teste A/B por ser grande, enviesa por ser diferencial. Se as duas variações perdem a mesma fração de eventos, o experimento fica com menos dado, perde poder e continua honesto; se a variação nova perde mais que a antiga, o número lido está errado e nenhum tamanho de amostra conserta. Este guia mostra as três camadas que apagam dado hoje, com as datas e os limites oficiais, um exemplo trabalhado em que 8 por cento de conversões não registradas apagam um ganho real de 10 por cento, e o que muda quando a perda toca o denominador em vez do numerador. Faz parte do nosso guia completo de teste A/B e é o irmão de coleta do viés de instrumentação: lá o instrumento mede errado, aqui o instrumento não mede.

Três camadas apagam dado, por motivos diferentes

Vale separar as camadas porque elas têm remédios distintos e prazos distintos.

Camada 1, consentimento. Onde a base legal exige consentimento prévio para medição, o visitante que recusa não deve ser medido. Isso não é uma falha técnica a ser contornada, é o funcionamento correto do sistema. O que interessa ao experimento é o tamanho do buraco e a simetria dele.

Camada 2, bloqueadores. Extensões e listas de bloqueio impedem o carregamento do script ou o envio do evento. A perda aqui é seletiva por domínio, por nome de arquivo e por padrão de requisição, o que a torna estruturalmente assimétrica: um script novo, hospedado num caminho novo, é mais fácil de bloquear do que um que já está em produção há um ano.

Camada 3, políticas do navegador. Esta é a que mais surpreende quem monta experimento, porque atinge cookie de primeira parte. O WebKit anunciou em 21 de fevereiro de 2019, com a Intelligent Tracking Prevention 2.1 no iOS 12.2 e no Safari 12.1, que todos os cookies persistentes escritos pelo cliente, ou seja, criados através de document.cookie, passam a ter validade limitada a sete dias. Em 24 de março de 2020, com o iOS e iPadOS 13.4 e o Safari 13.1 no macOS, o WebKit foi além e passou a bloquear por padrão os cookies para recursos de outros sites, além de apagar todo o armazenamento gravável por script (IndexedDB, LocalStorage, chaves de mídia, SessionStorage e registros de Service Worker) depois de sete dias de uso do Safari sem interação do usuário no site. A Mozilla, em 14 de junho de 2022, passou a distribuir a Total Cookie Protection por padrão para mais usuários de Firefox no mundo todo, em Windows, Mac, Linux e Android, criando um pote de cookies separado para cada site visitado.

camada mecanismo o que se perde escala de tempo
Consentimento base legal, banner tudo daquele visitante imediato
Bloqueador de conteúdo script ou requisição barrada eventos, às vezes a atribuição inteira imediato
Validade de cookie escrito por script 7 dias no Safari desde a ITP 2.1 a identidade entre visitas a partir do 8º dia
Limpeza de armazenamento gravável por script 7 dias sem interação, desde março de 2020 identidade guardada fora do cookie a partir do 8º dia
Isolamento por site pote de cookies por site no Firefox costura entre domínios imediato

A terceira e a quarta linha merecem atenção especial de quem roda teste A/B, porque elas não apagam um evento, apagam a identidade. Um visitante que volta no décimo dia não é reconhecido como o mesmo, é sorteado de novo e pode cair na outra variação. O efeito prático não é só perda de dado: é diluição do efeito medido, porque parte das pessoas atribuídas ao tratamento passa a ver o controle. O tratamento correto da unidade sorteada está em unidade de sorteio.

Sobre o cerco aos cookies de terceiros, uma correção de rumo importante: em 22 de abril de 2025, Anthony Chavez, vice-presidente do Privacy Sandbox, publicou que o Google decidiu manter a abordagem atual de oferecer escolha ao usuário sobre cookies de terceiros no Chrome e que não vai lançar um novo aviso dedicado para isso. Para experimentação, isso muda pouco, porque um teste A/B bem montado nunca dependeu de cookie de terceiro. O que aperta o experimento é o limite de validade sobre o cookie de primeira parte escrito por JavaScript, e esse limite continua de pé.

Perda de rastreamento simétrica e diferencial

Perda simétrica preserva a comparação, perda diferencial destrói a comparaçãoDois painéis lado a lado. No painel da esquerda, rotulado perda simétrica, as barras de conversão das variações A e B são encurtadas na mesma proporção pela parte hachurada que representa o dado perdido: as duas barras diminuem juntas, a diferença relativa entre elas permanece visível e a legenda diz que o efeito é menos poder. No painel da direita, rotulado perda diferencial, apenas a barra da variação B é encurtada pela parte hachurada: a barra de B cai até quase encostar na de A, a diferença entre as duas praticamente desaparece e a legenda diz que o efeito é viés e um ganho real que some do relatório.Não é o tamanho do buraco que enviesa, é a assimetria deleperda simétrica: os dois lados encolhemperda diferencial: só B encolheABdiferençapreservadatom claro = conversões que existiram e não foram registradasABdiferençaapagadao ganho real continua existindo, o relatório é que não vê
Perda simétrica custa poder e o remédio é mais amostra. Perda diferencial custa a conclusão, e mais amostra só faz o número errado ficar mais preciso.

Existe uma armadilha de raciocínio comum aqui. Alguém observa que 30 por cento dos eventos se perdem, conclui que o dado é lixo e para de testar. Se essa perda for simétrica, a conclusão está errada: com 30 por cento a menos de dado você precisa de mais tempo, não de outra decisão. E existe a armadilha oposta, mais cara: alguém observa que a perda é de apenas 5 por cento, considera desprezível e não checa a simetria. Cinco por cento concentrados num braço só bastam para virar um resultado, como o exemplo abaixo mostra.

Exemplo trabalhado: 8 por cento que apagam um ganho de 10 por cento

Todos os números vieram da calculadora de significância embutida logo adiante, com teste bilateral. Você pode colar as contagens e reproduzir cada linha.

O cenário: a variação B move o botão de compra para um componente novo, e a conversão dessa variação é registrada por um evento novo, servido a partir de um caminho novo do seu domínio. Esse caminho está numa lista de bloqueio popular. O evento do controle, que existe há dois anos, não está.

A verdade. A recebeu 30.000 visitantes e 1.500 pedidos, taxa de 5,000 por cento. B recebeu 30.000 visitantes e 1.650 pedidos, taxa de 5,500 por cento. A calculadora devolve lift relativo de 10,00 por cento, z igual a 2,7457 e valor-p de 0,006039, com intervalo de 0,143 a 0,857 ponto percentual. B vence.

O que o painel mostra. Oito por cento das conversões de B nunca foram registradas. B aparece com 1.518 pedidos sobre os mesmos 30.000 visitantes, taxa de 5,060 por cento. A calculadora devolve lift relativo de 1,20 por cento, z igual a 0,3362 e valor-p de 0,736707, com intervalo de menos 0,290 a 0,410 ponto percentual. Inconclusivo.

leitura pedidos A pedidos B registrados taxa B lift relativo z valor-p veredito
Nada perdido 1.500 1.650 5,500% +10,00% 2,7457 0,006039 B vence
4% das conversões de B perdidas 1.500 1.584 5,280% +5,60% 1,5530 0,120415 inconclusivo
8% das conversões de B perdidas 1.500 1.518 5,060% +1,20% 0,3362 0,736707 inconclusivo

Repare que em nenhuma linha o painel grita. Não aparece erro, não aparece alarme, e a variação B nunca chega a “perder”: ela simplesmente para de ganhar. Esse é o formato mais perigoso de falha de dado, porque o desfecho é indistinguível de uma hipótese que não funcionou. A maldição do vencedor trata do erro na direção oposta, o de superestimar o vencedor; aqui o erro é apagar o vencedor.

Calculadora de significância estatística
Controle (A)
Variação (B)
Controle (A) · Taxa-
Variação (B) · Taxa-
Melhora relativa-
valor-p-
IC 95% da diferença-

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.

Quando a perda toca o denominador

O caso acima é perda no numerador: a conversão aconteceu e não foi registrada. Existe um caso pior de diagnosticar e mais fácil de detectar: perda no denominador, quando a própria exposição do visitante à variação não chega ao servidor.

Perda no denominador é mais fácil de detectar porque ela deixa uma marca aritmética: a proporção observada de visitantes entre os braços deixa de bater com a alocação configurada. É exatamente o que o teste de divisão desigual de tráfego mede, e os números abaixo saíram do verificador de SRM, num teste de aderência qui-quadrado contra a alocação esperada de 50 por cento para cada lado.

exposições em A exposições em B fração observada de B qui-quadrado valor-p passa no guardrail de 0,01?
30.000 29.700 (1% perdido) 49,749% 1,51 0,2195 sim
30.000 29.400 (2% perdido) 49,495% 6,06 0,0138 sim, no limite
30.000 28.800 (4% perdido) 48,980% 24,49 0,00000075 não
30.000 27.600 (8% perdido) 47,917% 100,00 abaixo de 0,000001 não

A leitura útil dessa tabela é a segunda linha. Uma perda de 2 por cento no registro de exposição produz valor-p de 0,0138, que passa no limiar convencional de 0,01 usado como guardrail de divisão desigual, e mesmo assim já é o bastante para mover a taxa observada. Ou seja: o alarme de divisão desigual é um piso, não um teto. Ele pega a falha grosseira e deixa passar a falha pequena o suficiente para ser silenciosa e grande o suficiente para importar.

Por que a variação nova quase sempre perde mais

A assimetria não é azar, é consequência estrutural de como um teste é implementado. Vale ter a lista à mão porque ela funciona como roteiro de revisão antes de subir o experimento.

  1. Script novo em caminho novo. Domínios e caminhos recém-criados não têm histórico e são mais fáceis de casar com regras genéricas de bloqueio.
  2. Evento novo com nome novo. O evento do controle sobreviveu a dois anos de ajustes de rastreamento; o da variação nasceu ontem.
  3. Etapa a mais no funil. Se a variação insere uma tela, cada tela adicional é mais uma chance de o visitante sair antes do disparo.
  4. Momento do disparo. Um evento disparado no descarregamento da página, ou depois de uma navegação, perde mais que um disparado no clique.
  5. Peso e tempo de carga. Uma variação mais pesada chega a registrar menos porque parte dos visitantes abandona antes do script terminar de carregar.
  6. Mudança no consentimento. Qualquer variação que toque o banner altera a própria taxa de consentimento, e aí a perda é diferencial por construção.
  7. Domínio de terceiros na conversão. Se a variação leva a um provedor de pagamento diferente, a conversão cruza uma fronteira de domínio a mais.

Os pontos 1, 2 e 7 caem inteiros dentro do território de dados de primeira parte, e o ponto 5 é uma das razões pelas quais uma variação com desempenho pior de carregamento pode parecer pior de conversão sem que a mudança visual tenha nada a ver com isso.

O que efetivamente reduz o problema

Onde o sorteio e o registro de exposição acontecem muda o que se perdeDiagrama comparando dois caminhos de dado, um acima do outro. No caminho de cima, rotulado sorteio no cliente, uma caixa de visitante aponta para uma caixa de script no navegador, que aponta para uma caixa de registro, e três marcas de risco aparecem sobre as setas indicando os pontos onde bloqueador, validade de cookie e consentimento podem interromper o fluxo antes do registro. No caminho de baixo, rotulado sorteio no servidor, a caixa de visitante aponta direto para uma caixa de servidor que já grava a exposição, e só depois a página é renderizada no navegador, de modo que apenas o evento de conversão fica sujeito às interrupções, com uma única marca de risco.Quem grava a exposição decide se o denominador é confiávelsorteio no cliente: 3 pontos de perda antes do denominador existirvisitantescript sorteiano navegadorregistroxxxbloqueio, validade decookie, consentimentosorteio no servidor: o denominador nasce antes do navegadorvisitanteservidor sorteiae grava exposiçãoconversãoxsó o numerador segue expostoNenhum dos dois caminhos dispensa base legal para tratar o dado. O que muda é onde o denominador é criado.
Mover o sorteio e o registro de exposição para o servidor não elimina a perda, mas tira do caminho a parte dela que produz divisão desigual, que é a mais difícil de detectar depois.

Em ordem de impacto, para quem precisa escolher onde investir primeiro:

  1. Registrar a exposição no servidor. Estabiliza o denominador e é o único movimento que ataca a divisão desigual na origem. O caminho está em teste A/B no servidor e a comparação entre as duas arquiteturas em cliente contra servidor.
  2. Usar identificador de primeira parte com validade definida no servidor. Um cookie definido pelo servidor não cai na regra de sete dias que atinge os cookies escritos por document.cookie.
  3. Manter a coleta da variação idêntica à do controle. Mesmo script, mesmo caminho, mesmo momento de disparo. Só muda o que aparece na tela.
  4. Medir a taxa de perda como métrica de guardrail. Registre a razão entre eventos esperados e eventos recebidos, por variação, ao lado do resultado. O papel dessas travas está em métricas de guardrail.
  5. Escolher a unidade de sorteio compatível com a durabilidade real da identidade. Se a identidade não sobrevive sete dias naquele navegador, um teste de quatro semanas medindo comportamento por usuário não está medindo o que promete.
  6. Declarar a política de consentimento no plano de análise. Quem entra na conta e quem não entra é decisão de desenho, não de análise, e está no plano de análise pré-registrado.

Checklist antes de ler o resultado

  1. A taxa de eventos recebidos sobre eventos esperados está medida por variação?
  2. A divisão de tráfego observada bate com a configurada, e você olhou o valor-p e não só a diferença percentual?
  3. A variação usa o mesmo script, o mesmo caminho e o mesmo momento de disparo do controle?
  4. A variação toca o banner de consentimento de alguma forma?
  5. A duração do teste é compatível com a durabilidade da identidade no navegador dominante do seu público?
  6. A taxa de recusa de consentimento é parecida nos dois braços?
  7. Existe alguma métrica lida no servidor, como pedido pago, para comparar com a métrica lida no navegador?

O item 7 é o mais subestimado. Comparar a contagem de pedidos do seu banco com a contagem de conversões do seu rastreador, por variação, é a auditoria mais barata que existe e resolve a maioria dos casos em uma consulta.

Erros comuns

Faça isso automático na Donnu

O buraco raro é técnico. O buraco comum é organizacional: a perda de dado é conhecida por quem cuida do rastreamento, o resultado do teste é lido por quem cuida do produto, e as duas informações nunca aparecem na mesma tela.

Na Donnu, a divisão observada de visitantes por variação fica ao lado do resultado desde o primeiro dia, com o valor-p da aderência, porque desvio de alocação é o sintoma comum de perda no denominador, de erro de sorteio e de tráfego de bot. O sorteio e o registro de exposição podem ser feitos no servidor, sem depender de cookie escrito por script, e a mesma calculadora de significância aceita as contagens do seu banco de dados para você comparar a leitura do navegador com a leitura do servidor antes de decidir qualquer coisa.

Referências

Leia também: Viés de instrumentação · Divisão desigual de tráfego (SRM) · Unidade de sorteio · Teste A/B no cliente ou no servidor · Dados de primeira parte · Verificador de SRM · Read in English

Perguntas frequentes

Perda de rastreamento invalida um teste A/B?
Só quando é diferencial. Se a mesma fração de eventos se perde nas duas variações, o experimento fica com menos dado, perde poder e continua não enviesado: as duas taxas encolhem juntas e a comparação sobrevive. O que quebra o resultado é a perda que atinge mais uma variação do que a outra, e isso acontece com facilidade sempre que a variação nova muda a forma como o dado é coletado, por exemplo com um script novo, um domínio novo, um evento renomeado ou uma etapa a mais no funil.
O Safari apaga meu cookie de teste A/B?
Se o cookie é escrito por JavaScript, sim, em uma semana. O WebKit anunciou em 21 de fevereiro de 2019, com a Intelligent Tracking Prevention 2.1 no iOS 12.2 e no Safari 12.1, que todos os cookies persistentes escritos pelo cliente, ou seja, cookies persistentes criados via document.cookie, passam a ter validade limitada a sete dias. Em 24 de março de 2020 o WebKit estendeu a lógica para todo o armazenamento gravável por script, apagando IndexedDB, LocalStorage, chaves de mídia, SessionStorage e registros de Service Worker depois de sete dias de uso do Safari sem interação do usuário no site.
O Chrome vai acabar com os cookies de terceiros?
Não vai. Em 22 de abril de 2025, Anthony Chavez, vice-presidente do Privacy Sandbox, publicou que o Google decidiu manter a abordagem atual de oferecer escolha ao usuário sobre cookies de terceiros no Chrome e que não vai lançar um novo aviso dedicado para isso. Para quem roda experimento, porém, a notícia muda pouco: o teste A/B bem montado usa cookie de primeira parte, e o cerco relevante nunca foi o cookie de terceiros e sim o limite de validade imposto ao armazenamento gravável por script no Safari e o isolamento por site do Firefox.
Como a perda de dado vira divisão desigual de tráfego?
Quando a perda atinge o registro de exposição em vez do registro de conversão. Se 4 por cento das exposições de uma variação nunca chegam ao servidor, o denominador daquela variação encolhe e a proporção observada entre os braços deixa de bater com a alocação configurada. Uma diferença de 30.000 contra 29.400 já dá qui-quadrado de 6,06 e valor-p de 0,0138; uma de 30.000 contra 28.800 dá qui-quadrado de 24,49 e valor-p de 0,00000075, muito abaixo do limiar convencional de 0,01 usado como guardrail de divisão desigual.
Consentimento negado deve entrar no denominador do teste?
A resposta honesta é que quem não consentiu com a medição não deveria ser medido, e por isso não entra na leitura da métrica. O que precisa entrar no seu relatório é o tamanho e a simetria desse buraco: quantos visitantes recusaram, se a taxa de recusa é parecida nas duas variações e se alguma variação toca o próprio banner de consentimento. Testar qualquer coisa que altere o banner é o caso em que a perda é garantidamente diferencial, e ali a leitura por evento de navegador não é confiável.
Medição no servidor resolve o problema?
Resolve a parte da coleta e não resolve a parte legal nem a atribuição. Sortear e registrar a exposição no servidor tira do caminho bloqueadores, limites de validade de cookie e execução de script, e é o que estabiliza o denominador. Continua sendo necessário respeitar a base legal para tratar o dado e continua existindo a fronteira em que a conversão acontece fora do seu servidor, num gateway ou num aplicativo, onde a costura entre identificadores volta a ser o ponto frágil.