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