Email / SMS Delivery Service — Detailed#
flowchart TB
subgraph Customer
APP([Customer apps])
end
subgraph Edge
GW[API Gateway]
AUTH[API key auth]
IDEM[Idempotency key]
end
subgraph Pipeline
Q[[Kafka per priority]]
TMPL[Template rendering]
LANG[Localization]
SUPP[Suppression list - unsub / bounce]
DEDUP[Dedup window]
end
subgraph Channels
EMAIL([Email workers + MTA])
SMS([SMS workers + carrier APIs])
WHATSAPP[WhatsApp Business API]
VOICE[Voice]
end
subgraph Providers
SES((SES / Sendgrid / Mailgun))
TWILIO((Twilio / MSG91 / carriers))
METAB[Meta Business APIs]
end
subgraph Reliability
RT[Routing per region/carrier]
FALL[Failover provider]
BR[Bounce reasons handler]
REC[Delivery receipts]
DLR([DLR ingest])
end
subgraph Data
CONT[(Contacts)]
HIST[(Send history + events)]
SUPP_DB[(Suppression DB)]
end
Customer --> Edge --> Pipeline
Pipeline --> Channels --> Providers
Providers --> Reliability --> Data
classDef client fill:#dbeafe,stroke:#1e40af,stroke-width:1px,color:#0f172a;
classDef edge fill:#cffafe,stroke:#0e7490,stroke-width:1px,color:#0f172a;
classDef service fill:#fef3c7,stroke:#92400e,stroke-width:1px,color:#0f172a;
classDef datastore fill:#fee2e2,stroke:#991b1b,stroke-width:1px,color:#0f172a;
classDef cache fill:#fed7aa,stroke:#9a3412,stroke-width:1px,color:#0f172a;
classDef queue fill:#ede9fe,stroke:#5b21b6,stroke-width:1px,color:#0f172a;
classDef compute fill:#d1fae5,stroke:#065f46,stroke-width:1px,color:#0f172a;
classDef storage fill:#e5e7eb,stroke:#374151,stroke-width:1px,color:#0f172a;
classDef external fill:#fce7f3,stroke:#9d174d,stroke-width:1px,color:#0f172a;
classDef obs fill:#f3e8ff,stroke:#6b21a8,stroke-width:1px,color:#0f172a;
class APP client;
class GW edge;
class AUTH,IDEM,TMPL,LANG,SUPP,DEDUP,WHATSAPP,VOICE,METAB,RT,FALL,BR,REC service;
class CONT,HIST,SUPP_DB datastore;
class Q queue;
class EMAIL,SMS,DLR compute;
class SES,TWILIO external;
Glossary & fundamentals#
Concepts referenced in this design. Each row links to its canonical page; the tag column shows whether it is a high-level (HLD) or low-level (LLD) concept.
| Tag | Concept | What it is | Page |
|---|---|---|---|
HLD |
API gateway / BFF | single ingress, auth, rate limit, routing | api-gateway |
HLD |
Pub/Sub & message brokers | topics, consumer groups, delivery semantics | pub-sub-pattern |
HLD |
Idempotency & retries | safe re-execution, backoff + jitter | idempotency-retries |
LLD |
REST API design | verbs, statuses, pagination, errors | rest-api-design |
LLD |
Async models | futures / async-await / coroutines / actors | async-models |