← Toda la documentación

Modelo de datos

Visitantes, usuarios, actores, sesiones, conversiones y la lista completa de columnas que guarda cada evento.

Esta página define todos los términos que usa LaunchPulse y lista todas las columnas de un evento. Si algún número de la app no coincide con tu intuición, la definición probablemente está acá.

Conceptos base

ConceptoDefinición
Visitantevisitor_id, de la cookie _lp_vid. Anónimo, uno por navegador/dispositivo, duración de 30 días
Usuariouser_id, que defines con identify() usando tu id interno. El evento $identify se guarda, así que los recorridos se pueden reconstruir
Actoruser_id cuando existe, si no visitor_id. Es la unidad para conversión, activación, conteo de visitantes en alertas y conteos de “personas”
Sesiónsession_id, que rota tras 30 minutos de inactividad y con reset()
ConversiónUna definición que se aplica al consultar: un nombre de evento (alias incluidos) O un $pageview cuya ruta empiece con la ruta que configuraste. Un actor convierte en su primer evento coincidente
Primer valor / activaciónUn actor queda activado cuando dispara el evento de primer valor en o después del momento de su conversión
Tiempo hasta el valorMediana de segundos entre conversión y primer valor, entre los actores activados
AtribuciónPrimer contacto por defecto. Las fuentes se agrupan por first_source, congelado durante los 30 días de vida del visitante

Visitante vs. actor — el que confunde a todos

Los “Visitantes” del panel cuentan visitor ids distintos. Pero los convertidos y los activados cuentan actores distintos.

Esa diferencia es intencional. Un visitor id es por navegador, así que la misma persona en su laptop y en su teléfono son dos visitantes. En cuanto inicia sesión y llamas a identify(), ambos colapsan en un solo actor. Contar conversiones por actor significa que quien se registra en el móvil y se activa en el escritorio es un convertido, no dos.

Consecuencia práctica: una tasa de conversión no es una división limpia entre dos números de la misma pantalla. Es actores convertidos sobre la población de visitantes relevante, y si mucha de tu gente usa varios dispositivos, los conteos de actores serán más bajos que los de visitantes por diseño.

La activación se mide sobre los convertidos

La tasa de activación es activados ÷ convertidos, no activados ÷ visitantes. Quien nunca convirtió no puede activarse, así que no está en el denominador.

Además, la activación requiere el evento de primer valor en o después del momento de la conversión. Si tu app dispara el primer valor antes de la conversión, ese actor nunca cuenta como activado. La vista de prueba del onboarding advierte exactamente sobre esa inversión — mira Salir en vivo.

El detalle completo está en Conversiones y activación.

Atribución

La atribución es de primer contacto por defecto: la fuente de un visitante es la que lo trajo la primera vez, congelada durante los 30 días de vida de la cookie. Eso es first_source, first_campaign, first_landing_page, y es lo que agrupa el reporte de Fuentes.

También se registran campos a nivel de sesión (session_source, session_medium, session_campaign, session_landing_page), así que puedes desglosar insights por la fuente de una sesión concreta en lugar de la original del visitante. Mira Fuentes.

Dos comportamientos que sorprenden

1. La configuración es retroactiva

Tu evento de conversión, tu evento de primer valor y tus alias nunca se escriben dentro de los eventos guardados. Se aplican cuando corre una consulta.

Eso significa que cambiar cualquiera de ellos reinterpreta todo tu historial al instante. Sin reinstalar, sin volver a etiquetar, sin migración de datos, sin esperar a que se acumulen datos nuevos. Renombras tu evento de conversión y los números del trimestre pasado se recalculan en la siguiente carga de página.

Por eso los alias corrigen errores de tipeo de forma retroactiva, y por eso es seguro cambiar de opinión sobre qué cuenta como activación un mes después. Mira Alias de eventos.

2. Las columnas vacías desaparecen

El almacén analítico elimina las columnas que están completamente vacías para un proyecto. Si nunca enviaste un valor para algo, esa columna no existe en tu proyecto.

Tres consecuencias con las que te vas a topar:

  • Los ingresos muestran 0 si nunca enviaste ingresos. No es un error: la columna no está. Mira Seguimiento de ingresos.
  • Un insight desglosado por una dimensión que nunca envías aparece como una tarjeta vacía. Desglosa por campaña UTM en un sitio que nunca recibió una etiqueta UTM y no hay nada que mostrar.
  • La vista de detalle de eventos muestra un conjunto de columnas distinto por proyecto. Dos proyectos, dos listas de columnas.

Columnas de evento

Todas las columnas que verás en la vista de detalle de eventos y en la exportación CSV.

ColumnaSignificado
timeMarca de tiempo del evento
received_atHora de recepción en el servidor, la autoritativa. Define el particionado
client_timeLo que reportó el navegador, acotado a [recepción − 5 min, recepción]
event_idId único del evento
project_idProyecto al que pertenece el evento
event_nameNombre del evento, p. ej. $pageview, signup
visitor_idId anónimo por navegador, de _lp_vid
session_idId de sesión, rota tras 30 min de inactividad o con reset()
user_idTu id interno, definido con identify()
ingest_sourcebrowser o server
hostnameHost desde el que llegó el evento
pathRuta de la página
urlURL completa de la página
referrerURL de referencia
utm_sourceutm_source de la URL
utm_mediumutm_medium de la URL
utm_campaignutm_campaign de la URL
utm_contentutm_content de la URL
utm_termutm_term de la URL
sourceFuente derivada para este evento
mediumMedio derivado para este evento
campaignCampaña derivada para este evento
session_sourceFuente atribuida a la sesión
session_mediumMedio atribuido a la sesión
session_campaignCampaña atribuida a la sesión
session_landing_pagePrimera página de la sesión
first_sourceFuente de primer contacto, congelada durante la vida del visitante
first_campaignCampaña de primer contacto
first_landing_pagePrimera página en la que aterrizó el visitante
countryCódigo de país ISO-3166 alfa-2
deviceTipo de dispositivo
browserNavegador
osSistema operativo
revenue_microsIngreso × 1.000.000, como entero
currencyMoneda del valor de ingreso
propertiesTus propiedades personalizadas

Notas sobre las que no se explican solas:

  • received_at es la autoridad. Es el momento en que el collector realmente recibió el evento, y es la base del particionado. client_time es una afirmación del navegador, así que se acota a la ventana [recepción − 5 minutos, recepción]: un dispositivo con el reloj muy desfasado no puede empujar eventos al futuro ni muy atrás en el pasado.
  • revenue_micros es un entero, no un decimal. $19.99 es 19990000. La aritmética entera evita el arrastre de coma flotante al sumar ingresos.
  • properties guarda lo que tú envíes. Mantén los datos personales fuera de ahí — mira Privacidad.

Estados del proyecto

EstadoComportamiento
setupOnboarding. Los eventos van solo al stream de depuración y nunca se guardan
activeLos eventos se guardan
pausedLos eventos se aceptan y se descartan
Borrado lógicoEl proyecto desaparece de la app; los datos analíticos se conservan

Semántica de los rangos

Cómo se construye cada rango de la app:

RangoVentanaAgrupación
todayDesde la medianoche UTCHora
7d / 30d / 90dN × 24 horas móvilesDía
12moDesde el día 1 del mes, 11 meses atrásMes
PersonalizadoSe ajusta a días UTC, tope de 12 mesesDía

El selector Local/UTC afecta solo la visualización. La agrupación siempre se calcula en UTC. Cambiar a Local reetiqueta el eje; no recalcula qué eventos caen en qué bucket. En una zona horaria distinta de UTC esto hace que las etiquetas se vean corridas respecto de los límites de cada bucket: es lo esperado, no una falla.

Qué sigue

SiguienteSolución de problemas

Hablemos

¿Dudas sobre LaunchPulse o quieres que te lo mostremos? Escríbenos y te responde una persona real.

O escríbenos a hello@launchpulse.dev