Skip to main content

Architecture

System map​

The API saves the notification and its outbox record together in PostgreSQL. The relay moves work to Redis; the worker processes each delivery. PostgreSQL remains the source of truth if queue processing is temporarily interrupted.

An HTTP 202 Accepted response means the request was accepted. External delivery happens asynchronously; it does not mean the recipient has received or read the message.

Credential boundaries​

The API key stays on your backend. The backend derives the account and user IDs from its authenticated session. A frontend-supplied account ID alone is not proof of membership.

Data mapping​

Your applicationNotify
Organization owning your integrationNotify tenant
Product deployed in stagingApplication in staging
Product deployed in productionSeparate application in production
Customer organization or workspace IDCustomer account external_key, then request account_key
User ID inside that customer organizationrecipient.external_user_id or token recipient_external_id
Business event nameevent_key
Stable event/transaction ID plus event typeIdempotency-Key
Message contentPublished template and variables, or explicitly permitted raw content

Runtime deployment​

The standard Docker stack has five long-running services: API, relay, worker, PostgreSQL, and Redis. A migration service runs once and exits. Docusaurus and Swagger are static assets served by the existing API container through the documentation domain. Node is used only to build the documentation.

Read Environment and URLs for public entry points and Implementation guide for the application-side work.