MediumExperience level: 3-5 years · 8-15 years1 min read

How would you design a notification system (email / SMS / push) at scale?

Reviewed by Gurusankar M.

Asked inAmazonMicrosoftDeloitte
#notifications#fanout#queue#provider#idempotency
Report issue

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

  1. How do you dedupe / ensure idempotent sends?
  2. How do you handle user preferences and quiet hours?
  3. 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.
Open inChatGPTGeminiClaude

Was this answer helpful?

Affiliate links

Equipment for a comfortable, productive setup.

As an Amazon Associate I earn from qualifying purchases.