Identificar usuarios
Cómo funcionan visitantes, usuarios y sesiones, y cuándo llamar a identify() y reset().
LaunchPulse mide visitantes anónimos desde el primer momento. Si tu producto tiene cuentas, llamar a identify() conecta esas sesiones anónimas con un usuario real de tu base de datos.
Visitante, usuario, actor
Tres ids, y la diferencia importa cuando lees los números del panel.
| Id | Qué es |
|---|---|
visitor_id | El id anónimo por navegador. Se asigna automáticamente en init() |
user_id | El que defines con identify(). Vacío hasta que lo llames |
| actor | user_id si existe; si no, visitor_id |
El actor es la unidad que se usa para conversión, activación y los conteos de “personas”. De eso se trata identificar: sin eso, la misma persona en su laptop y en su teléfono son dos actores. Con eso, es una sola.
La métrica Visitantes del panel cuenta visitor_id distintos: es deliberadamente a nivel de navegador, para que siga siendo comparable identifiques o no.
identify()
lp.identify("user_8f21c");
Define el user id, lo guarda en la cookie _lp_vid y emite un evento $identify.
Pasa un id interno de usuario, nunca datos personales. El SDK advierte en consola si el valor parece una dirección de correo. Los correos terminan en tu almacén de analítica, en el registro de eventos y en todo lo que exportes. Un id de base de datos no.
// Bien
lp.identify(user.id);
// Mal — advierte, y mete un correo en tu analítica
lp.identify(user.email);
Llámalo apenas sepas quién es la persona: justo después del login, justo después del registro, y en cada carga de página cuando la sesión ya está autenticada. El valor persiste en la cookie, así que volver a llamarlo con el mismo id es inofensivo y mantiene la identidad correcta después de que la cookie expire o el usuario limpie el almacenamiento.
Llámalo antes de tu evento de primer valor, para que ese evento se pueda atribuir a un usuario. Mira Conversiones y activación.
// React, cuando carga tu sesión
useEffect(() => {
if (session?.user) window.lp?.identify(session.user.id);
}, [session]);
reset()
lp.reset();
Borra el user id y rota tanto el visitor id como el session id. Todo lo que venga después de la llamada es un navegador anónimo nuevo.
Llámalo al cerrar sesión. Llámalo en cualquier dispositivo compartido — un kiosco, una máquina de soporte, una laptop de demos — donde la siguiente persona no debe heredar la identidad de la anterior.
No lo llames en cada carga de página ni en cada cambio de ruta. Rotar el visitor id descarta 30 días de historial de atribución de ese navegador.
La cookie
La identidad vive en una cookie propia (first-party) llamada _lp_vid.
| Propiedad | Valor |
|---|---|
| Formato del visitor id | lpv_<tiempo en base36><10 caracteres aleatorios> |
| Vida del visitante | 30 días (Max-Age de la cookie) |
| Tiempo de inactividad de sesión | 30 minutos |
| Flags | Path=/, SameSite=Lax, Secure en https, Domain opcional |
Un visitante que vuelve dentro de esos 30 días es el mismo visitor_id. Después de 30 días sin visitas, vuelve como visitante nuevo.
Una sesión termina tras 30 minutos de inactividad. El siguiente evento después de esa pausa genera un session id nuevo.
Subdominios
Sin Domain, la cookie queda limitada al host: app.yourapp.com y www.yourapp.com serían visitantes distintos. Define cookieDomain para compartir identidad entre subdominios:
LaunchPulse.init("lp_pub_yourkey", { cookieDomain: ".yourapp.com" });
Normalmente el collector lo provee automáticamente. El SDK no incluye lista de sufijos públicos, así que nunca puede asignarle a tu cookie un alcance equivocado.
Atribución
La atribución se guarda en el visitante, y viene en dos sabores.
El primer contacto queda congelado por toda la vida del visitante. Lo que trajo a alguien la primera vez se queda adjunto a cada evento que envíe, durante 30 días:
first_sourcefirst_campaignfirst_landing_page
La atribución de sesión se refresca en cada sesión nueva:
session_sourcesession_mediumsession_campaignsession_landing_page
Entonces, si alguien te encuentra por un post en Hacker News, se va y vuelve una semana después por una búsqueda en Google, el primer contacto sigue diciendo Hacker News y la atribución de sesión dice Google. Eso es lo que te permite distinguir qué canal realmente adquiere personas de cuál solo las trae de vuelta.
Cómo se clasifica la fuente
- Los parámetros UTM mandan.
utm_sourcepasa a ser la fuente;utm_medium, ocampaignsi no hay medio, pasa a ser el medio. - Si no, el host del referrer, sin el
www., e ignorado cuando coincide con tu propio host. El medio esorganicpara google, bing, duckduckgo, yahoo, ecosia y brave, yreferralpara todo lo demás. - Si no,
direct/direct.
Parámetros UTM capturados: utm_source, utm_medium, utm_campaign, utm_content, utm_term.
Más sobre cómo leer esto en Fuentes y Dominios y referrers.
Privacidad
Las direcciones IP de tus visitantes se usan solo para derivar un país y luego se descartan. Nunca se almacenan. Sumado a la regla de “nada de datos personales en identify()”, eso mantiene tu analítica libre de datos personales por defecto. Mira Seguridad.
Identificar desde tu backend
Los eventos desde el servidor también llevan identidad: defines user_id en el payload en lugar de llamar a identify(). Mira Eventos desde el servidor. Usa el mismo id en ambos lados, o terminarás con dos actores para una sola persona.