MongoDB

Designing a Notification System

Explore how to build a scalable notification system that handles push, email, and SMS notifications for millions of users.

S

srikanthtelkalapally888@gmail.com

Designing a Notification System

A notification system delivers real-time and scheduled alerts to users via push, email, or SMS.

Requirements

  • Support push, email, SMS
  • 10M notifications/day
  • Delivery guarantees (at least once)
  • User preferences (opt-out, quiet hours)

Architecture

Event Producers (Orders, Payments)
        ↓
   Notification Service
        ↓
     Kafka Queue
        ↓
  ┌─────┬─────┬────┐
 Push  Email  SMS

Key Components

Event Ingestion

Services publish events to Kafka topics.

Notification Service

  • Reads user preferences
  • Templates messages
  • Routes to appropriate channel

Channel Handlers

  • Push: Apple APNs, Firebase FCM
  • Email: SendGrid, SES
  • SMS: Twilio

Retry Logic

Send → Success → Mark delivered
Send → Fail → Retry (exp backoff)
                 ↓
          Dead Letter Queue

User Preferences

Store in Redis for fast lookup:

  • Allowed channels
  • Quiet hours
  • Notification types

Conclusion

A robust notification system uses message queues for decoupling, retry mechanisms for reliability, and preference management for user experience.

Share this article