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.
Um único evento: $autocapture
Seção intitulada “Um único evento: $autocapture”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_childehrefpara 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.
Pageviews e SPAs
Seção intitulada “Pageviews e SPAs”$pageviewdispara 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$pageviewpor mudança de rota sem nenhuma integração com o router. $pageleavedispara nopagehide.
Propriedades de contexto em todo evento
Seção intitulada “Propriedades de contexto em todo evento”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.
O que nunca é capturado
Seção intitulada “O que nunca é capturado”Estas são garantias rígidas, não padrões:
- Valores de inputs nunca são capturados. Uma interação
changeregistra que algo mudou — nunca o quê. - Campos de senha nem sequer produzem evento: um
changeeminput[type=password]é ignorado por completo. - Session replay é um sistema separado, opt-in, com seus próprios padrões de privacidade (mais rígidos).
Controlando a captura
Seção intitulada “Controlando a captura”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ódigo — beforeSend (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; },});O namespace $
Seção intitulada “O namespace $”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.