Saltar a contenido

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

  1. Ingesta exclusivamente por API: Jitsu como única capa de mapeo hacia POST /cxs/eventcollector
  2. Tracker JavaScript de Unomi en la tienda con context.json público (parcheado)
  3. 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-api exige 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 login protegido con el correo normalizado.