Design a Notification System
Design a system that sends push, email, and SMS notifications at scale. The hard problems are fanout to millions of recipients, at-least-once delivery, deduplication, and user preference enforcement.
What you will learn
- Design a multi-channel notification pipeline (push, email, SMS, in-app)
- Guarantee at-least-once delivery without sending duplicates to users
- Handle fanout to millions of recipients without blocking the triggering event
- Enforce user notification preferences and quiet hours
Every app sends notifications. A like on Instagram, a payment confirmation from your bank, a promotional offer from an e-commerce platform. Each event may trigger a push notification, an email, an SMS, or an in-app alert — or all four, depending on user preferences. The system that handles this is harder to build correctly than it appears: fanout, delivery guarantees, deduplication, throttling, and quiet hours all have to work together.
Functional requirements:
- Send notifications via push (iOS/Android), email, SMS, and in-app
- Triggered by internal events (new message, payment) or scheduled campaigns
- Respect user notification preferences (per-channel opt-out, quiet hours)
- Track delivery status: sent, delivered, failed
- Support batched marketing campaigns (millions of recipients)
Non-functional requirements:
- At-least-once delivery — never silently drop a notification
- No duplicates — same event should not notify the user twice
- Latency for transactional notifications (payment confirmed): < 10 seconds
- Latency for marketing campaigns: eventual (within minutes/hours is acceptable)
- High availability — notification service outage = users miss critical alerts
Create a free account to read the full chapter — advanced chapters, progress tracking, and quizzes are free with sign-up.