Pular para o conteúdo

Autocapture e privacidade

Com autocapture: true (o padrão), o SDK registra as interações da página sem nenhuma instrumentação: cliques, envios de formulário e pageviews desde o primeiro minuto. Ele é distribuído como um chunk lazy — com autocapture: false, o código nem sequer é baixado.

Toda interação capturada produz o mesmo evento, $autocapture, descrito pelas suas propriedades:

  • $event_type: click | submit | change.
  • $elements: a cadeia do DOM do alvo da interação para cima (cerca de 10 níveis). Por elemento: tag, classes, attr_id, text, nth_child e href para links.

Um evento único mantém o namespace de eventos pequeno: “clicou no elemento X” é um filtro sobre $elements nas queries, não um nome de evento separado.

  • $pageview dispara no carregamento da página.
  • Navegações client-side também disparam: o SDK intercepta a History API (pushState, replaceState, popstate), então single-page apps recebem um $pageview por mudança de rota sem nenhuma integração com o router.
  • $pageleave dispara no pagehide.

Com autocapture ou não, todo evento carrega $current_url, $referrer, $session_id, $device_type, $screen_width, $screen_height, $lib, $lib_version, e $utm_source / $utm_medium / $utm_campaign / $utm_term / $utm_content extraídos da URL.

Estas são garantias rígidas, não padrões:

  • Valores de inputs nunca são capturados. Uma interação change registra que algo mudou — nunca o quê.
  • Campos de senha nem sequer produzem evento: um change em input[type=password] é ignorado por completo.
  • Session replay é um sistema separado, opt-in, com seus próprios padrões de privacidade (mais rígidos).

No seu markup — adicione data-kilden-no-capture a qualquer elemento para excluí-lo junto com todos os seus descendentes:

<div data-kilden-no-capture>
<!-- nada aqui dentro produz eventos $autocapture,
e o session replay também não vai gravar isto -->
</div>

Nas opções do init — passe um objeto em vez de true:

kilden.init('YOUR_WRITE_KEY', {
autocapture: {
captureClicks: true, // padrão: true
captureSubmits: true, // padrão: true
captureChanges: false, // padrão: false
ignoreSelectors: ['.sensitive', '#admin-panel'],
maskAllText: false, // true substitui todo texto de $elements por "*"
allowUrls: [/^https:\/\/app\.example\.com/], // restringe às URLs que casarem
},
});

No códigobeforeSend (ou um plugin before) vê todo evento $autocapture e pode transformá-lo ou descartá-lo:

kilden.init('YOUR_WRITE_KEY', {
beforeSend(event) {
if (event.event === '$autocapture' && location.pathname.startsWith('/admin')) {
return null;
}
return event;
},
});

Eventos e propriedades que começam com $ são reservados para o sistema Kilden ($pageview, $autocapture, $identify, …). Enviar seu próprio evento com prefixo $ via track() gera um aviso de debug, mas o evento é entregue mesmo assim — o SDK nunca quebra um cliente por causa de uma convenção. Lista completa em Eventos e propriedades.