Ir al contenido

Eventos y properties

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)

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.

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.

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.