ADR-0002 · Ingesta solo por API servidor a servidor (Zaraz → Jitsu → Unomi; SAP → n8n → Jitsu → Unomi)¶
- Estado: aceptado
- Decisores: área de TI / DevOps de Compulandia
- Fecha de la decisión: 2026-09-07 (revisión 1.1 del diseño de despliegue)
Contexto y problema¶
Unomi ofrece un tracker JavaScript y un endpoint context.json para que el navegador del cliente final hable
directamente con el CDP. En la evaluación se comprobó que el tracker empaquetado en 3.0.0 envía Content-Type:
text/plain y el servidor responde 415/500 sin un parche, que la cookie de perfil exige compartir dominio entre la
tienda y el CDP, y que ese camino deja endpoints sin autenticación expuestos a internet. Además la empresa ya
capturaba eventos web con Cloudflare Zaraz y los canalizaba por Jitsu.
Opciones consideradas¶
- Ingesta exclusivamente por API: Jitsu como única capa de mapeo hacia
POST /cxs/eventcollector - Tracker JavaScript de Unomi en la tienda con
context.jsonpúblico (parcheado) - Híbrido: tracker para web y API para SAP
Decisión¶
Solo API. Todos los orígenes (Zaraz para la web, n8n para SAP) entregan a Jitsu, y una única función de destino
transforma al contrato de Unomi y envía por cdp-api.compulandia.com.py con token de servicio de Cloudflare
Access. Consecuencia directa: Unomi no emite cookies, no necesita compartir dominio con la tienda, no requiere el
parche del tracker y ningún endpoint queda abierto al navegador del cliente final.
Consecuencias¶
Positivas¶
- Un solo punto de mapeo y validación (Jitsu); el contrato de entrada es un documento del repositorio.
- Superficie de ataque mínima:
cdp-apiexige token de servicio; la API administrativa además Basic auth. - La personalización en tiempo real no depende de una llamada del navegador a Unomi.
Negativas / deuda asumida¶
- No hay personalización en la página vía
context.json: los segmentos se consumen por API desde otros sistemas. - La fecha del evento es la de recepción (Unomi ignora
timeStamp): el histórico de SAP debe cargarse como propiedades del perfil, no como eventos. - Un evento rechazado por esquema responde
200 {"updated":0}: Jitsu no detecta el rechazo; hay que validar antes de enviar y vigilar el log de Unomi. - La fusión de identidad depende de que Jitsu envíe el
loginprotegido con el correo normalizado.