Identidad y fusión de perfiles¶
Identificadores¶
| Identificador | Quién lo asigna | Regla |
|---|---|---|
profileId |
El origen (Jitsu / n8n). Web: web-<id anónimo estable>; SAP: sap-<código de cliente> |
Siempre el mismo para la misma persona; nunca uno por evento. Si no existe, Unomi crea el perfil. |
sessionId |
El origen. Web: sesión de Jitsu; SAP: sap-<código>-<fecha> |
Nunca reutilizar entre personas: una sesión ya ligada a un perfil atribuye los eventos a ese perfil aunque llegue otro profileId. |
| Correo electrónico | Se envía en el evento login (target.properties.email), normalizado (minúsculas, sin espacios) |
Clave de fusión entre orígenes. |
| Alias | Unomi, al fusionar | El id del perfil absorbido apunta al maestro; GET /cxs/profiles/<alias> devuelve el maestro. |
El evento login¶
Es un evento protegido: solo lo aceptan las peticiones con la cabecera X-Unomi-Peer igual a la clave
configurada y desde una IP autorizada. Lo envían Jitsu o n8n (nunca el navegador). Formato:
{
"sessionId": "web-sesion-123",
"profileId": "web-a1b2c3",
"events": [{
"eventType": "login",
"scope": "tienda-web",
"target": {"itemId": "cliente-42", "itemType": "user", "scope": "tienda-web",
"properties": {"email": "ana@ejemplo.com", "firstName": "Ana", "lastName": "Pérez", "sapCustomerId": "C000042"}}
}]
}
La regla de fusión¶
Validada en el banco de pruebas (eval-login-merge), a registrar en producción con el nombre definitivo:
{
"metadata": {"id": "login-fusion-por-correo", "name": "login: fusiona perfiles por correo y copia datos"},
"condition": {"type": "eventTypeCondition", "parameterValues": {"eventTypeId": "login"}},
"actions": [
{"type": "mergeProfilesOnPropertyAction", "parameterValues": {"mergeProfilePropertyName": "mergeIdentifier", "mergeProfilePropertyValue": "eventProperty::target.properties(email)"}},
{"type": "copyPropertiesAction", "parameterValues": {"singleValueStrategy": "alwaysSet"}}
]
}
Comportamiento, verificado:
- En el primer
loginde un perfil, Unomi guarda el correo ensystemProperties.mergeIdentifier(no enproperties) ycopyPropertiesActioncopiatarget.propertiesal perfil. - Si ya existe otro perfil con el mismo
mergeIdentifier, se fusionan. El maestro es el primer perfil que devuelve la búsqueda (en la práctica, el que declaró el correo antes), salvoforceEventProfileAsMaster: true. - El perfil absorbido se borra y su id queda como alias del maestro; sus sesiones y eventos se reasignan al maestro de forma asíncrona (menos de 1 s medido).
- Un evento posterior enviado con el id absorbido (cookie vieja, id de SAP) se atribuye al maestro.
Qué se conserva y qué se pierde en una fusión¶
| Dato | Resultado |
|---|---|
| Propiedades que solo tenía uno de los dos | Se conservan en el maestro |
| Propiedades en conflicto (ambos con valor) | Gana el perfil absorbido (defaultMergeStrategy sobrescribe el valor del maestro) |
| Segmentos | Unión |
| Consentimientos | Se conservan los vigentes |
systemProperties |
Se fusionan |
| Eventos y sesiones | Se reasignan al maestro |
scores (scoring) del absorbido |
Se pierden (no se fusionan) |
| Id del absorbido | Queda como alias; el documento de perfil desaparece |
Consecuencia para el diseño: si SAP es la fuente de verdad de un dato (nombre, categoría de cliente) y el perfil
SAP se fusiona en uno web, ese dato pisa al de la web. Si el orden es el inverso, la web pisa a SAP. Decidir por
propiedad qué fuente debe ganar y, si hace falta, reenviar un updateProperties desde SAP tras la fusión.
Aliases por API¶
| Operación | Endpoint |
|---|---|
| Listar aliases de un perfil | GET /cxs/profiles/{id}/aliases |
| Agregar un alias a mano (por ejemplo un id de otro sistema) | POST /cxs/profiles/{id}/aliases/{aliasId} |
| Quitar un alias | DELETE /cxs/profiles/{id}/aliases/{aliasId} |
| Leer un perfil por id o alias | GET /cxs/profiles/{idOAlias} |
Errores frecuentes¶
loginignorado sin rastro: faltaX-Unomi-Peer, o la IP de origen no está en la lista autorizada (UNOMI_THIRDPARTY_PROVIDER1_IPADDRESSES; en producción incluye la subred de la VPC).- Dos perfiles con el mismo correo que no se fusionan: el correo llegó con distinta normalización, o el
loginse envió antes de que la regla estuviera activa. - Eventos atribuidos al perfil equivocado:
sessionIdreutilizado.