Event-Driven Notification Platform · View 06 of 26 · 2 · Structure
Channel Abstraction
The five-step contract every channel implements, and what differs between them.
Copy
PNG
PDF
⋯
Editable source
SVG
draw.io
All views
Resolve address
Resolve address
Render
Render
Throttle
Throttle
Dispatch
Dispatch
Confirm
Confirm
Email
Email
Verified address
from PII Vault
Verified address...
MJML to HTML
plus text alternative
MJML to HTML...
200 msg/s per tenant
200 msg/s per tenant
Postal MTA
SES on failover
Postal MTA...
Bounce and open
provider webhook
Bounce and open...
SMS
SMS
E.164 MSISDN
country validated
E.164 MSISDN...
GSM-7 segmenter
160 char parts
GSM-7 segmenter...
Carrier TPS cap
per route
Carrier TPS cap...
Jasmin SMSC
SMPP bind
Jasmin SMSC...
DLR receipt
DLR receipt
Push
Push
Device token set
per platform
Device token set...
FCM and APNs payload
4 KB limit
FCM and APNs payload...
1 per device per min
1 per device per min
FCM HTTP v1
APNs direct
FCM HTTP v1...
Token invalidation
prunes dead devices
Token invalidation...
In-app
In-app
Inbox identity
no external contact
Inbox identity...
JSON card
action buttons
JSON card...
None
pull-limited
None...
Centrifugo
WebSocket fan-out
Centrifugo...
Read receipt
Read receipt
Webhook
Webhook
Endpoint and secret
Vault path
Endpoint and secret...
JSON envelope
stable schema
JSON envelope...
50 rps per endpoint
50 rps per endpoint
HMAC-signed POST
customer endpoint
HMAC-signed POST...
2xx or retry
5 attempts
2xx or retry...
Chat
Chat
Channel or user ID
Channel or user ID
Block Kit blocks
Adaptive Card for Teams
Block Kit blocks...
Workspace tier cap
Workspace tier cap
Slack chat.postMessage
Teams Graph
Slack chat.postMessage...
Message timestamp
edit and thread
Message timestamp...
Channel Abstraction — One Contract, Six Adapters
Channel Abstraction — One Contract, Six Adapters
Application we own
Application we own
External / third party
External / third party
Queue / topic
Queue / topic
Adding a channel means implementing one interface — resolve, render, throttle, dispatch, confirm — plus a provider client. No core service changes.
Adding a channel means implementing one interface — resolve, render, throttle, dispatch, confirm — plus a provider client. No core service changes.
v 1.0 · owner Data & AI Global Practice · date 2026-08
v 1.0 · owner Data & AI Global Practice · date 2026-08
Text is not SVG - cannot display
The contract
Resolve address, render, throttle, dispatch, confirm — five methods, one interface
The core platform knows the interface and nothing about SMTP, SMPP, APNs or Block Kit
Adding voice or WhatsApp is one adapter and one provider client, with no change above the delivery plane
What genuinely differs
Throttling is per-channel physics: carrier TPS for SMS, per-device rate for push, endpoint capacity for webhooks
Confirmation ranges from a synchronous 250 for SMTP to an asynchronous DLR minutes later for SMS
Only email and SMS carry a real delivery receipt; the others confirm acceptance only, and the dashboards say so
Deliberately omitted
Voice, deferred to phase 2 — the contract already fits it
Retry behaviour, which is common across adapters and lives on view 17
◀ Integration and Interface Catalogue
All views
Template and Content Lifecycle ▶