24 de Março de 2025
Eventos de produto: como instrumentar sem gerar lixo analítico
Como instrumentar eventos de produto de um jeito que ajuda decisão, debugging e aprendizado sem virar coleção de nomes quebrados e dashboards vazios.
Andrews Ribeiro
Founder & Engineer
4 min Intermediario Pensamento
O problema
Tem time que trata instrumentação como tarefa menor.
Algo como:
- “coloca um tracking aí”
- “depois a gente organiza”
- “manda tudo que for possível e vê o que usa”
Quase sempre termina do mesmo jeito.
Você ganha:
- eventos duplicados
- nomes inconsistentes
- propriedades sem padrão
- dashboards que parecem ricos, mas não respondem pergunta nenhuma
Esse é o ponto central:
dado demais e sem contrato quase sempre vira dado inútil.
Modelo mental
Pense em evento de produto como contrato de observação.
Você está dizendo:
- qual comportamento importa
- quando esse comportamento aconteceu
- com qual contexto mínimo ele precisa ser interpretado
Isso não é muito diferente de modelar uma API.
Você não quer:
- nome aleatório
- shape instável
- semântica que muda sem aviso
Com evento é a mesma coisa.
Se o contrato é fraco, a leitura depois vira adivinhação.
Quebrando o problema
Nem tudo merece virar evento
Esse é o primeiro corte.
Evento deveria existir quando ajuda a responder algo como:
- usuários chegaram até esta etapa?
- desistiram onde?
- usaram essa capacidade nova?
- erro aconteceu em qual parte da jornada?
- mudança de fluxo melhorou ou piorou comportamento?
Se a resposta for só:
- “vai que um dia alguém queira saber”
normalmente o evento nasce ruim.
Evento descreve comportamento, não implementação
Esse erro aparece muito.
Nome fraco:
clicked_blue_buttonmodal_open_v2submit_form_new
Esses nomes envelhecem mal porque grudam em detalhe de interface.
Nome melhor tenta representar a intenção ou etapa de produto:
signup_startedcheckout_payment_submittedsearch_result_opened
Detalhe visual pode virar propriedade quando realmente importar.
Mas o nome principal deveria sobreviver a refactor de layout.
Propriedade existe para explicar contexto, não para carregar o mundo
Outro extremo comum é o payload obeso.
O evento leva:
- estado da tela inteira
- objeto inteiro do usuário
- pedaços de texto arbitrários
- flags que ninguém entende
Isso cria três problemas:
- custo e complexidade desnecessários
- risco maior de privacidade
- análise pior, porque ninguém sabe o que é confiável
Boa propriedade costuma responder:
- qual variante estava ativa?
- em qual plano ou segmento isso ocorreu?
- qual origem do fluxo?
- houve erro? qual classe?
Se a propriedade não ajuda interpretação, ela provavelmente está sobrando.
Momento do disparo importa mais do que parece
Tem evento certo disparado no momento errado.
Exemplo clássico:
- registrar
checkout_completedquando a pessoa clicou no botão, não quando a compra confirmou
Isso destrói a métrica.
A pergunta precisa ser:
em que momento eu realmente posso afirmar que esse comportamento aconteceu?
Clique, tentativa, sucesso e erro são momentos diferentes.
Misturar isso gera leitura falsa.
Taxonomia simples já resolve mais do que parece
Você não precisa começar com enciclopédia.
Mas precisa de regra mínima.
Algo como:
- verbo no passado ou particípio consistente
- nomes orientados a jornada
- propriedades comuns com convenção estável
- distinção clara entre tentativa, sucesso e falha
Sem isso, cada pessoa manda o evento do jeito que quiser.
E o dado vira dialeto local.
Exemplo simples
Imagine um fluxo de cadastro.
Instrumentação ruim:
clicked_register_buttonregister_submitsign_up_doneregister_error
Cada tela chama de um jeito.
Ninguém sabe se done quer dizer clique, request enviado ou cadastro criado.
Instrumentação melhor:
signup_startedsignup_submittedsignup_completedsignup_failed
Com propriedades controladas:
plan_typeentry_pointerror_codequando houver falha
Aqui já existe uma linha de leitura.
Você consegue medir:
- quantos começam
- quantos tentam enviar
- quantos concluem
- onde falham
Sem precisar reconstruir intenção depois.
O que normalmente dá errado
- Instrumentar depois que a feature já saiu e tentar remendar significado.
- Nomear evento pelo componente em vez da jornada.
- Adicionar propriedade porque “vai que seja útil”.
- Misturar evento de clique com evento de sucesso.
- Não combinar regra mínima entre produto, engenharia e analytics.
- Mudar semântica do evento sem tratar isso como quebra de contrato.
Como alguém mais sênior pensa
Uma pessoa mais madura costuma pensar em três camadas ao mesmo tempo:
- produto
- operação
- longevidade do dado
Produto:
- que decisão isso precisa apoiar?
Operação:
- esse evento também ajuda a explicar erro, queda ou regressão?
Longevidade:
- quando a interface mudar, esse tracking ainda continua legível?
Esse olhar evita tanto o tracking decorativo quanto a instrumentação caótica.
Ângulo de entrevista
Esse tema aparece menos como pergunta literal e mais como follow-up.
Por exemplo:
- “como você mediria o sucesso dessa feature?”
- “que eventos você instrumentaria?”
- “como saberia onde o usuário está abandonando?”
O entrevistador normalmente quer ver se você:
- mede comportamento real
- distingue tentativa de sucesso
- pensa em contrato estável
- não responde com dashboard genérico
Resposta fraca:
eu colocaria eventos nos botões principais e depois veria os dados.
Resposta forte:
eu escolheria eventos alinhados às etapas da jornada, separando início, tentativa, sucesso e falha. Também manteria nomes orientados ao comportamento de produto, com poucas propriedades estáveis, para que a leitura continue válida mesmo se a interface mudar.
Fechando
Instrumentar bem não é mandar mais evento.
É mandar menos coisa, com mais intenção.
Se o dado não ajuda alguém a decidir, diagnosticar ou aprender, ele está só ocupando espaço.
No fim, tracking bom parece simples.
Mas essa simplicidade normalmente é sinal de que alguém pensou direito antes.
Resumo rápido
O que vale manter na cabeça
- Evento bom representa um comportamento relevante do produto, não qualquer clique que alguém resolveu registrar.
- Nome, propriedades e momento do disparo precisam ser estáveis o suficiente para sobreviver à evolução da interface.
- Se o mesmo conceito aparece com cinco nomes diferentes, você não ganhou visibilidade; ganhou ruído.
- Instrumentação madura nasce junto com a decisão que ela precisa apoiar, não como remendo depois.
Checklist de pratica
Use isto ao responder
- Consigo explicar qual decisão esse evento ajuda a tomar?
- O nome do evento descreve comportamento de produto, e não detalhe visual da tela?
- As propriedades carregam contexto suficiente sem virar despejo de payload?
- Se a UI mudar amanhã, o evento continua significando a mesma coisa?
Você concluiu este artigo
Compartilhar esta página
Copie o link manualmente no campo abaixo.