ADR-038: Notifications
Estado
Accepted — 2026-08-23
Contexto
Hay dos familias de mensajes que no se deben mezclar:
- Collections email (ADR-020) — send-as del dominio del cliente al Customer (deudor).
- Product notifications — a Users de la Organization (invite, reset password, “promise broken”, digest).
IVPrior es omnicanal (push/SMS). IVPrior V1 no.
Decisión
| Canal | V1 | Destinatario |
|---|---|---|
| Collections mailbox | Sí (ADR-020) | Customer / Contact |
| Transactional email | Sí (invite, reset, mailbox disconnected) | User |
| In-app (Task / badge) | Sí — la cola Tasks es la notificación operativa | User |
| Email digest “needs attention” | Opcional P1 | User |
| Push / SMS / WhatsApp | No | — |
- Transactional email: adapter propio (Resend, SES o SMTP). From de IVPrior, no send-as del cliente.
- Domain events (DOC-004) → job → canal. El dominio no importa el SDK de mail.
- Opt-out de collections no silencia invite/reset (son transaccionales).
- No hay centro de notificaciones tipo inbox de producto en V1 (IVPrior S-103). Tasks + email bastan.
Consecuencias
- Dos puertos:
MailboxPort(collections) yTransactionalMailPort(producto). - Copy transaccional en
en-US. Sin tono de cobrador.