Autocapture y privacidad
Con autocapture: true (el default) el SDK registra las interacciones de la página sin ninguna instrumentación: clics, envíos de formularios y pageviews desde el primer minuto. Se distribuye como un chunk lazy — con autocapture: false el código ni siquiera se descarga.
Un solo evento: $autocapture
Sección titulada «Un solo evento: $autocapture»Cada interacción capturada produce el mismo evento, $autocapture, descrito por sus properties:
$event_type:click|submit|change.$elements: la cadena del DOM desde el elemento objetivo de la interacción hacia arriba (unos 10 niveles). Por elemento:tag,classes,attr_id,text,nth_child, yhrefpara los enlaces.
Un evento único mantiene pequeño el espacio de nombres de eventos: “hizo clic en el elemento X” es un filtro sobre $elements en las queries, no un nombre de evento aparte.
Pageviews y SPAs
Sección titulada «Pageviews y SPAs»$pageviewse dispara al cargar la página.- Las navegaciones client-side también lo disparan: el SDK engancha la History API (
pushState,replaceState,popstate), así que las single-page apps obtienen un$pageviewpor cambio de ruta sin integrar el router. $pageleavese dispara enpagehide.
Properties de contexto en cada evento
Sección titulada «Properties de contexto en cada evento»Autocapturado o no, cada evento lleva $current_url, $referrer, $session_id, $device_type, $screen_width, $screen_height, $lib, $lib_version, y $utm_source / $utm_medium / $utm_campaign / $utm_term / $utm_content parseados desde la URL.
Lo que nunca se captura
Sección titulada «Lo que nunca se captura»Estas son garantías duras, no defaults:
- Los valores de los inputs nunca se capturan. Una interacción
changeregistra que algo cambió — nunca qué. - Los campos de contraseña ni siquiera producen un evento: un
changesobreinput[type=password]se ignora por completo. - Session replay es un sistema aparte, opt-in, con sus propios defaults de privacidad (más estrictos).
Controlar la captura
Sección titulada «Controlar la captura»En tu markup — agrega data-kilden-no-capture a cualquier elemento para excluirlo junto con todos sus descendientes:
<div data-kilden-no-capture> <!-- nada de lo que hay aquí produce eventos $autocapture, y session replay tampoco lo grabará --></div>En las opciones de init — pasa un objeto en vez de true:
kilden.init('YOUR_WRITE_KEY', { autocapture: { captureClicks: true, // default true captureSubmits: true, // default true captureChanges: false, // default false ignoreSelectors: ['.sensitive', '#admin-panel'], maskAllText: false, // true reemplaza todo el texto de $elements con "*" allowUrls: [/^https:\/\/app\.example\.com/], // restringe a URLs que coincidan },});En código — beforeSend (o un plugin before) ve cada evento $autocapture y puede transformarlo o descartarlo:
kilden.init('YOUR_WRITE_KEY', { beforeSend(event) { if (event.event === '$autocapture' && location.pathname.startsWith('/admin')) { return null; } return event; },});El namespace $
Sección titulada «El namespace $»Los eventos y properties que empiezan con $ están reservados para el sistema de Kilden ($pageview, $autocapture, $identify, …). Enviar tu propio evento con prefijo $ desde track() registra un warning de debug pero se entrega igual — el SDK jamás rompe a un cliente por una convención. La lista completa está en Eventos y properties.