Autocapture et confidentialité
Avec autocapture: true (le défaut), le SDK enregistre les interactions de page sans aucune instrumentation : clics, soumissions de formulaire et pageviews dès la première minute. Le code est livré comme un chunk chargé à la demande — avec autocapture: false, il n’est même jamais téléchargé.
Un seul événement : $autocapture
Section intitulée « Un seul événement : $autocapture »Chaque interaction capturée produit le même événement, $autocapture, décrit par ses propriétés :
$event_type:click|submit|change.$elements: la chaîne DOM depuis la cible de l’interaction vers le haut (environ 10 niveaux). Par élément :tag,classes,attr_id,text,nth_child, ethrefpour les liens.
Un événement unique garde l’espace de noms des événements réduit : “a cliqué sur l’élément X” est un filtre sur $elements dans les requêtes, pas un nom d’événement à part.
Pageviews et SPA
Section intitulée « Pageviews et SPA »$pageviewest émis au chargement de la page.- Les navigations côté client l’émettent aussi : le SDK s’accroche à l’History API (
pushState,replaceState,popstate), donc les single-page apps obtiennent un$pageviewpar changement de route, sans intégration avec le routeur. $pageleaveest émis surpagehide.
Propriétés de contexte sur chaque événement
Section intitulée « Propriétés de contexte sur chaque événement »Autocapturé ou non, chaque événement porte $current_url, $referrer, $session_id, $device_type, $screen_width, $screen_height, $lib, $lib_version, ainsi que $utm_source / $utm_medium / $utm_campaign / $utm_term / $utm_content extraits de l’URL.
Ce qui n’est jamais capturé
Section intitulée « Ce qui n’est jamais capturé »Ce sont des garanties fermes, pas des réglages par défaut :
- Les valeurs des champs de saisie ne sont jamais capturées. Une interaction
changeenregistre que quelque chose a changé — jamais quoi. - Les champs de mot de passe ne produisent même pas d’événement : un
changesurinput[type=password]est entièrement ignoré. - Le session replay est un système séparé, opt-in, avec ses propres défauts de confidentialité (plus stricts).
Contrôler la capture
Section intitulée « Contrôler la capture »Dans votre markup — ajoutez data-kilden-no-capture à n’importe quel élément pour l’exclure avec tous ses descendants :
<div data-kilden-no-capture> <!-- rien ici ne produit d'événements $autocapture, et le session replay ne l'enregistrera pas non plus --></div>Dans les options d’init — passez un objet au lieu de true :
kilden.init('YOUR_WRITE_KEY', { autocapture: { captureClicks: true, // true par défaut captureSubmits: true, // true par défaut captureChanges: false, // false par défaut ignoreSelectors: ['.sensitive', '#admin-panel'], maskAllText: false, // true remplace tout le texte de $elements par "*" allowUrls: [/^https:\/\/app\.example\.com/], // restreint aux URL correspondantes },});Dans le code — beforeSend (ou un plugin before) voit chaque événement $autocapture et peut le transformer ou le supprimer :
kilden.init('YOUR_WRITE_KEY', { beforeSend(event) { if (event.event === '$autocapture' && location.pathname.startsWith('/admin')) { return null; } return event; },});Le namespace $
Section intitulée « Le namespace $ »Les événements et propriétés commençant par $ sont réservés au système Kilden ($pageview, $autocapture, $identify, …). Envoyer votre propre événement préfixé par $ via track() journalise un avertissement en mode debug mais l’événement est quand même livré — le SDK ne casse jamais un client pour une convention. Liste complète dans Événements et propriétés.