How would you design a notification system (email / SMS / push) at scale?
Reviewed by Gurusankar M.
Short Answer
Accept notification requests via an API, enqueue them, and have workers fan out to channel providers (email/SMS/push) with retries, rate limits per provider, and a DLQ. Add user preferences/opt-outs, templating, idempotency (dedupe), and delivery tracking. Decouple everything with queues so spikes and provider outages don't cascade.
On this page
Concept Made Simple
Coffee Chat Question
“How would you design a notification system (email / SMS / push) at scale?”
Remember It Faster
Mind Map Answer
- Ingest
- API → queue (decouple)
- Workers
- fan out per channel/provider
- Reliability
- retries, DLQ, provider rate limits
- Rules
- preferences/opt-out, idempotency, tracking
Think Beyond the Expected
What If?
A campaign sends 10M notifications and a provider starts rate-limiting you — what happens?
The queue absorbs the backlog (backpressure) while workers respect the provider's rate limit and retry with backoff; failed sends go to a DLQ for inspection. Without the queue + rate-aware workers, you'd hammer the provider, get throttled/blocked, and drop notifications.
Real World
Notification platforms are queue-driven fan-out with per-provider rate limits, retries/DLQ, user preferences, and dedup; the queue is what makes million-scale bursts and provider hiccups survivable.
Interviewer's Expectation
Keywords they're listening for:
- API → queue → workers fan-out
- retries/DLQ
- per-provider rate limits
- preferences/opt-out
- idempotency + tracking
Common Mistakes
- Sending synchronously (spikes/outages cascade)
- No per-provider rate limiting
- No dedup → duplicate notifications
Best Practices
- Queue + rate-aware workers + DLQ
- Respect preferences/opt-outs
- Idempotent sends + delivery tracking
Follow-up Questions
- How do you dedupe / ensure idempotent sends?
- How do you handle user preferences and quiet hours?
- How do you track delivery/bounce status?
Continue Learning with AI
Take this question deeper with your favourite AI assistant. Pick a depth, copy the prompt, or open it directly — AI is your learning companion, not a shortcut.
Plain-language foundations
I'm preparing for a software engineering interview and want to understand this from scratch, as a beginner. Topic: Message Queues (System Design) Interview question: "How would you design a notification system (email / SMS / push) at scale?" Please: 1. Explain the core idea in simple, plain language, using an everyday analogy. 2. Define any technical terms you use. 3. Walk through one small, concrete example. 4. Finish with a single sentence I can easily remember. Keep the tone friendly and assume I'm new to this topic.
Was this answer helpful?
Affiliate links
Tools for Your Developer Workspace
Equipment for a comfortable, productive setup.
As an Amazon Associate I earn from qualifying purchases.
- MonitorView on Amazon : BenQ EW2790U 27-inch Monitor (opens in a new tab)
BenQ EW2790U 27-inch Monitor
- LaptopView on Amazon : Acer Aspire One Laptop (opens in a new tab)
Acer Aspire One Laptop
- Office ChairView on Amazon : Wakefit Gravita Ergonomic Office Chair (opens in a new tab)
Wakefit Gravita Ergonomic Office Chair