Pessoal, o SDK tava verde. O TypeError chegou. A jornada, não.
Eu confundia volume de evento com visibilidade. Dashboard cheio. Ninguém sabia se era o clique de pagar, o cupom ou o pixel.
O que você leva daqui: observabilidade é a ação do usuário no filtro, não o SDK instalado.
O dinheiro no funil (+10%, SSR, lazy load) está no denso. Este texto é o contrato.
1. Volume sem domínio não deixa decidir
Um TypeError em massa, sem domain e sem a ação, só prova que o JS quebrou. Não prova onde o comprador estava.
Filtro que eu quero no Discover: a jornada. Checkout. Pagamento. Lead. Não o nome do arquivo no bundle.
2. Instalar o SDK não é instrumentar
Auto-instrumentation pega HTTP, crash, às vezes replay. Não pega “a pessoa apertou pagar e o request nem saiu”.
Catch que só faz console.error: a UI mostra genérico, o back não recebe, o Sentry não vê. Você instalou. Não instrumentou.
Não é pitch de vendor. Grafana, Sentry, Datadog: a ferramenta é o adapter. O domínio emite o evento. Se o domínio depende do SDK, você inverteu.
3. Exception não é resultado de negócio
Form incompleto, cupom expirado, cartão recusado pelo banco: a regra funcionou. Breadcrumb. Warning.
Gateway 500, timeout de rede, SDK que estourou: exception. Com a ação no extra (checkout.pay.click, não só a stack).
Se misturar, o board grita de novo e você trata recusa de cartão como incidente.
4. O contrato cabe em quatro campos
-
domain: checkout, payment, lead, pixel -
flow/phase: a ação (coupon.apply,payment.updateCard) - tipo: exception vs resultado de negócio
- sem
user_idem label de métrica (cardinalidade)
IDs de pedido e de pessoa: log e trace. Não série do Prometheus.
Alerta de sintoma de usuário: o pagar não completa. Não cada if da regra de desconto.
Último alerta que você abriu: consegue nomear a ação do usuário em uma frase? Sim, não, ou só o stack?
Top comments (0)