Endpoint de Identificación
El endpoint /api/visitors/identify permite vincular un visitante anónimo con información de identificación conocida, como un ID de lead, correo electrónico o cualquier otro identificador personalizado. Esto permite unificar el seguimiento entre sesiones, dispositivos y estados de autenticación.
Especificación de la API
- URL:
/api/visitors/identify - Método:
POST - Formato de datos: JSON
- Autenticación: API Key en encabezado
X-SA-API-KEY
Parámetros del Request
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
site_id | string | Sí | Identificador único del sitio |
visitor_id | string | Sí | ID del visitante anónimo generado por el script de tracking |
lead_id | string | Sí* | Identificador único del lead en tu sistema (*al menos uno de lead_id o traits debe proporcionarse) |
segment_id | string | No | ID del segmento al que pertenece el lead |
traits | object | Sí* | Atributos del lead para identificación (*al menos uno de lead_id o traits debe proporcionarse) |
timestamp | number | No | Marca de tiempo en milisegundos |
Estructura de traits
El objeto traits puede incluir cualquier propiedad para identificar y enriquecer el perfil del lead:
{
"email": "email@ejemplo.com",
"phone": "+34123456789",
"name": "Nombre Completo",
"first_name": "Nombre",
"last_name": "Apellido",
"gender": "female",
"age": 32,
"birthday": "1990-01-15",
"social_networks": {
"facebook": "username",
"twitter": "username",
"instagram": "username",
"linkedin": "username",
"github": "username",
"youtube": "username",
"tiktok": "username"
},
"address": {
"street": "Calle Principal 123",
"city": "Madrid",
"state": "Madrid",
"postalCode": "28001",
"country": "España"
},
"company": {
"name": "Empresa SA",
"industry": "Tecnología",
"employee_count": 120
},
"subscription": {
"plan": "premium",
"status": "active",
"started_at": "2023-01-01"
}
}Ejemplo de payload
Identificación básica
{
"site_id": "site_123abc",
"visitor_id": "vis_abcd1234",
"lead_id": "lead_5678",
"segment_id": "seg_premium",
"timestamp": 1646123456789
}Identificación con atributos detallados
{
"site_id": "site_123abc",
"visitor_id": "vis_abcd1234",
"lead_id": "lead_5678",
"segment_id": "seg_premium_users",
"traits": {
"email": "usuario@ejemplo.com",
"phone": "+34612345678",
"name": "Ana García",
"first_name": "Ana",
"last_name": "García",
"social_networks": {
"linkedin": "ana-garcia",
"twitter": "anagarcia",
"github": "anagarcia"
},
"subscription": {
"plan": "premium",
"status": "active",
"started_at": "2023-06-15"
},
"company": {
"name": "Empresa Innovadora SL",
"role": "Marketing Manager"
}
},
"timestamp": 1646123456789
}Respuesta
{
"success": true,
"visitor_id": "vis_abcd1234",
"lead_id": "lead_5678",
"segment_id": "seg_premium_users",
"profile_id": "prof_987654",
"merged": true,
"merged_ids": ["vis_previous1", "vis_previous2"]
}Códigos de estado HTTP
200 OK: Identificación exitosa400 Bad Request: Parámetros inválidos o faltantes401 Unauthorized: API key inválida o faltante403 Forbidden: El sitio no tiene permisos para usar esta funcionalidad429 Too Many Requests: Se ha excedido el límite de peticiones500 Internal Server Error: Error en el servidor
Gestión de errores
En caso de error, la respuesta incluirá detalles sobre el problema:
{
"success": false,
"error": {
"code": "invalid_parameters",
"message": "Se debe proporcionar al menos lead_id o traits",
"details": {
"missing_fields": ["lead_id or traits"]
}
}
}Fusión de perfiles
Cuando un visitante anónimo se identifica con un lead_id que ya existe, los perfiles se fusionan automáticamente:
- Se crea un perfil unificado (si no existe)
- Se vinculan todos los
visitor_idal mismo perfil - El historial de eventos y sesiones de todos los perfiles vinculados se unifica
- Las propiedades de los perfiles se combinan, dando prioridad a los datos más recientes
Propiedades reservadas
Algunas propiedades en traits tienen un significado especial y se mapean directamente a columnas en la base de datos:
| Propiedad | Tipo | Descripción | Mapeo en Base de Datos |
|---|---|---|---|
email | string | Correo electrónico principal del lead | Columna email |
phone | string | Número de teléfono principal del lead | Columna phone |
name | string | Nombre completo | Columna name |
position | string | Posición o cargo del lead | Columna position |
birthday | string | Fecha de nacimiento (formato ISO: “YYYY-MM-DD”) | Columna birthday |
origin | string | Origen del lead (web, facebook, referido, etc.) | Columna origin |
social_networks | object | Objeto con los usernames de redes sociales | Columna JSONB social_networks |
address | object | Objeto con información de la dirección | Columna JSONB address |
company | object | Objeto con información de la empresa | Columna JSONB company |
subscription | object | Objeto con información de suscripción | Columna JSONB subscription |
Estructura de social_networks
El objeto social_networks puede incluir los siguientes campos:
| Red Social | Tipo | Descripción |
|---|---|---|
facebook | string | Username de Facebook |
twitter | string | Username de Twitter |
instagram | string | Username de Instagram |
linkedin | string | Username de LinkedIn |
github | string | Username de GitHub |
youtube | string | Username de YouTube |
tiktok | string | Username de TikTok |
Actualización de propiedades
Cada vez que se llama al endpoint identify, las propiedades del lead se actualizan:
- Las propiedades nuevas se añaden
- Las propiedades existentes se sobrescriben con los nuevos valores
- Las propiedades que no se incluyen en el request no se modifican
ID Unification y Cross-Device Tracking
La identificación permite vincular múltiples dispositivos y sesiones al mismo lead:
-
Navegación en diferentes dispositivos: Cuando un lead inicia sesión desde distintos dispositivos, todos sus
visitor_idse vinculan al mismolead_id -
Tracking anónimo e identificado: El historial de navegación anónima se conserva y vincula al perfil cuando el lead se identifica
-
Reconexión de perfiles: Si un lead elimina cookies y regresa, el perfil se reconecta al identificarse nuevamente
Límites y cuotas
- Tamaño máximo de payload: 100KB
- Propiedades máximas en traits: 100
- Peticiones por minuto: 100 por IP
- Profundidad máxima de objetos anidados: 5 niveles
Buenas prácticas
-
Identificar lo antes posible: Llama al endpoint
identifytan pronto como tengas información del lead (login, registro, etc.) -
Mantener consistencia: Usa los mismos identificadores y estructura de
traitsen todas tus aplicaciones -
Identificación progresiva: Actualiza gradualmente el perfil del lead a medida que recopiles más información
-
Privacidad de datos: Solo recopila y envía los datos necesarios respetando las políticas de privacidad
-
Consistencia en campos clave: Usa formatos estándar para email, teléfono, fechas y otros datos estructurados
Prueba el endpoint
Puedes probar el endpoint directamente desde aquí:
Prueba el endpoint de identificación
Utiliza este formulario para probar el endpoint de identificación de visitantes con diferentes parámetros y ver la respuesta en tiempo real.