azure
System Design
intermediate
Multi-channel notification delivery

Notification System

System Design Classic

A notification system must reliably deliver messages across push, email, SMS, and in-app channels while respecting user preferences and rate limits. This Azure-native architecture uses Event Grid for fan-out — a single notification event triggers channel-specific delivery pipelines via Service Bus queues, each processed by Azure Functions with independent scaling and retry policies. Essential for product teams adding reliable multi-channel notifications with user preferences, rate limiting, and delivery tracking.

Data Flow

Notification API
Notification Service
User Preferences
Event Fan-out
Email Queue
Push Queue
SMS Queue
Email Sender
Push Sender

Share this architecture with your network

Service Breakdown (9 services)

Other9 services
Notification API
  • Accepts notification requests with channel preferences
  • Validates payloads and deduplicates repeat sends
  • Routes to the appropriate delivery pipeline
Notification Service
  • Orchestrates delivery across push, email, and SMS
  • Applies user preferences and quiet-hours rules
  • Tracks delivery status and handles retries
Event Fan-out
  • Distributes notification events to channel handlers
  • Supports topic-based routing for targeted delivery
  • Decouples producers from delivery implementations
Email Queue
  • Provides reliable enterprise message brokering
  • Supports topics and queue-based messaging
  • Guarantees at-least-once delivery
Push Queue
  • Provides reliable enterprise message brokering
  • Supports topics and queue-based messaging
  • Guarantees at-least-once delivery
SMS Queue
  • Provides reliable enterprise message brokering
  • Supports topics and queue-based messaging
  • Guarantees at-least-once delivery
Email Sender
  • Executes event-driven functions without managing servers
  • Scales based on event volume with consumption billing
  • Supports durable functions for stateful workflows
Push Sender
  • Executes event-driven functions without managing servers
  • Scales based on event volume with consumption billing
  • Supports durable functions for stateful workflows
User Preferences
  • Provides globally distributed multi-model database
  • Guarantees single-digit ms reads worldwide
  • Supports five consistency levels

Scaling Strategy

Event Grid fans out notification events to channel-specific Service Bus queues, each processed by independent Azure Functions. This allows email, SMS, and push to scale independently. Cosmos DB stores user preferences with low-latency reads via change feed integration. Rate limiting per user and per channel is enforced at the Function level using Redis Cache token bucket counters.

Related Architectures