Notifications
The notifications service is a thin adapter in front of Novu, the canonical notifications provider. Every email, SMS, push and in-app notification flows through Novu workflows. Templates, channel routing, digesting and quiet-hours all live there, not here. This service holds the platform-side preference and delivery records.
Field reference: full columns, types and nullability live in the catalog: glossary terms
NotificationPreference,NotificationLog. This page is the narrative.
What this service owns
NotificationPreference: one row per member (party_locatorisUNIQUE): thepreferred_channel(free text, defaultEMAIL) and the deliveryemail/phone.NotificationLog: a delivery record per outbound notification: the sourceevent_id(UNIQUE, the idempotency key: one log per event),channel,status, subject/body,failure_reasonandattempt_count. This is the historical/adapter record; live routing is Novu's.
How it fits
Callers trigger Novu workflows (POST /v1/events/trigger) with a flat payload; Novu owns the per-channel content and branching. Subscribers are identified by party_locator. The Go olly-notifications service remains the contract other services call until they move to Novu directly.
Caveats
preferred_channel,channelandstatusare freeTEXT(no DB CHECK).- Per-event opt-outs are not in this service; they are Novu subscriber preferences. The plural
NotificationPreferencesconcept (a richer per-event model) is aspirational; the implemented entity is the singularNotificationPreference.
