Ir al contenido

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.

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, y href para 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.

  • $pageview se 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 $pageview por cambio de ruta sin integrar el router.
  • $pageleave se dispara en pagehide.

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.

Estas son garantías duras, no defaults:

  • Los valores de los inputs nunca se capturan. Una interacción change registra que algo cambió — nunca qué.
  • Los campos de contraseña ni siquiera producen un evento: un change sobre input[type=password] se ignora por completo.
  • Session replay es un sistema aparte, opt-in, con sus propios defaults de privacidad (más estrictos).

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ódigobeforeSend (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;
},
});

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.