Eventos y properties
Los eventos son inmutables
Sección titulada «Los eventos son inmutables»Un evento congela sus properties al momento de la captura. Nada lo reescribe después — ni los merges de identidad, ni las actualizaciones de traits, ni las decisiones de enforcement. Si el plan de una persona cambia, su persona cambia; los eventos que envió mientras tenía el plan viejo siguen diciendo el plan viejo. Esa es la división: los eventos son historia, las personas son estado.
Cada evento lleva:
| Campo | Qué es |
|---|---|
uuid |
UUID v7 generado por el cliente. La idempotency key: el pipeline deduplica por él, y por eso los reintentos en cada capa son seguros |
event |
El nombre. Tus nombres son libres; los nombres con prefijo $ son del sistema |
distinct_id |
Quién lo hizo, según se sabía al momento de la captura |
properties |
JSON arbitrario. Kilden nunca lo valida ni lo tipa — el sobre está tipado, el payload es tuyo por diseño |
timestamp |
Cuándo ocurrió (provisto por el cliente, corregido por desfase de reloj usando el sent_at del batch) |
El namespace $
Sección titulada «El namespace $»Los nombres que empiezan con $ — eventos y properties — están reservados para el sistema. El SDK avisa en modo debug si haces track() de uno, pero igual lo entrega: el namespace es una convención, nunca una razón para descartar tus datos.
Eventos del sistema que verás en tu stream:
| Evento | Emitido por |
|---|---|
$pageview, $pageleave |
El SDK, automáticamente (incluidos los cambios de ruta en SPAs) |
$autocapture |
Autocapture: clics, submits, changes, descritos por $event_type y $elements |
$identify |
identify() — lleva $anon_distinct_id para el enlace de identidad |
$set, $set_once |
Actualizaciones de traits de la persona |
$feature_flag_called |
Primera lectura de un flag por sesión — $flag_key, $flag_value (exposiciones) |
$session_recording_started |
Inicio de una grabación de replay |
$email_sent, $email_delivered, $email_opened, $email_clicked, $email_bounced, $email_complained |
Campañas y los webhooks del proveedor de email |
Properties de contexto estampadas en cada evento del SDK: $current_url, $referrer, $session_id, $device_type, $screen_width, $screen_height, $lib, $lib_version, $utm_source, $utm_medium, $utm_campaign, $utm_term, $utm_content.
Un solo camino de escritura
Sección titulada «Un solo camino de escritura»Cada evento — navegador, backend, webhook de email, incluso los eventos internos de Kilden — entra por el mismo endpoint de capture y el mismo pipeline. No hay puertas laterales, y eso es lo que hace que las garantías (dedup, resolución de identidad, niveles de confianza) valgan para todo de manera uniforme.
Sesiones
Sección titulada «Sesiones»El SDK mantiene $session_id (UUID v7) en cada evento, rotándolo tras 30 minutos de inactividad. Las sesiones atan los eventos, la deduplicación de exposiciones de feature flags y el session replay — una grabación siempre se puede unir 1:1 con los eventos de su sesión.