Skip to main content

System Design Prompt: Multi-Channel Notification Service

Design a multi-channel notification service: email, SMS, push, and in-app with templates, preferences, batching, and delivery tracking.

Füllen Sie die Platzhalter aus

Edit the values, then copy your finished prompt.

Ihr Prompt
prompt.txt

                                

What this prompt does

This prompt asks the AI to design a multi-channel notification service delivering [daily_notifications] per day across [channels]. It covers ten requirements: multi-channel delivery including [extra_channels], a template engine using [template_format], per-channel per-category preferences, batching and digests over a [batch_window], delivery tracking and retries, priority routing, anti-fatigue rate limiting, A/B testing, an analytics dashboard, and a provider abstraction for vendor switching.

The structure works because notifications quietly accumulate complexity: every channel has its own delivery semantics, every user has preferences, and every provider can fail. Passing [daily_notifications] sizes the queue throughput, while [channels] and [extra_channels] define how many delivery adapters you build. [template_format] (like Handlebars with MJML for email) drives the rendering layer, and [batch_window] controls how aggressively notifications are grouped into digests to avoid fatigue. The provider-abstraction requirement is what makes vendor failover and switching possible without rewrites.

When to use it

  • You're building notifications into a SaaS product and need more than a single email send
  • You need per-channel, per-category user preferences done right
  • You want intelligent batching and digests over a [batch_window] to fight notification fatigue
  • You need a provider abstraction so you can fail over or swap vendors
  • You're designing priority routing so urgent messages bypass batching
  • You need delivery tracking and retries that account for each channel's quirks

Example output

Expect a design with a database schema (notifications, templates, preferences), a queue architecture for ingest and per-channel delivery, a template-rendering layer using [template_format], a batching/digest design keyed to [batch_window], a provider-abstraction interface with failover logic, and an analytics section covering delivery, open, and click rates. It reads like a backend RFC you could hand to a team.

Pro tips

  • Set [daily_notifications] to your real volume; it drives whether a single queue suffices or you need per-channel partitioning
  • Keep [channels] to what you'll genuinely support at launch — each one is a real adapter with its own failure modes
  • Use [template_format] that matches your team's skills; MJML is great for responsive email but adds a build step
  • Tune [batch_window] carefully — too long and notifications feel stale, too short and you defeat the anti-fatigue goal
  • Insist on the provider abstraction; hardcoding one vendor is the mistake that makes switching painful later
  • Ask the model to detail priority routing so urgent notifications skip the [batch_window] entirely

Frequently Asked Questions

Which channels does this design support?
It supports the `[channels]` you specify, defaulting to email, SMS, mobile push, and in-app, plus `[extra_channels]` like WhatsApp or Discord webhooks. Each channel becomes its own delivery adapter, so list only what you'll actually maintain.
How does it prevent notification fatigue?
Two mechanisms: intelligent batching that groups notifications within a `[batch_window]` into digests, and per-user rate limiting. Together they cap how often a single user is interrupted, while priority routing still lets genuinely urgent messages through immediately.
Can I switch notification providers later?
Yes — the provider-abstraction requirement is specifically there to decouple your code from any single vendor. With it in place you can fail over to a backup provider or migrate vendors without rewriting the delivery logic.
Does it handle user preferences per channel?
It includes opt-in and opt-out management at the per-channel, per-category level, so a user can receive billing alerts by email but disable marketing push. This preference layer is checked before any notification is dispatched.
Engr Mejba Ahmed

Need this built for real?

Engr Mejba Ahmed

AI Developer · Software Engineer

I'm Mejba — I design and ship production AI systems, automations, and full-stack apps. If you want this turned into a working solution for your team, let's talk.

Mehr in System Design Prompts

Engr Mejba Ahmed

Engr Mejba Ahmed

Claude Code Expert · Online

👋

Hey there!

Quick Actions

WhatsApp Instant reply

Chat on WhatsApp

+880 1723 741224 · Instant reply

Popular Questions

Engr Mejba Ahmed is connected
Engr Mejba Ahmed is typing...
Engr Mejba Ahmed avatar

✉ Want me to follow up? Drop your email

Engr Mejba Ahmed avatar

📞 Connect Directly

Choose how you'd like to reach me

WhatsApp

+880 1723 741224

Email

[email protected]

✓ Details sent! I'll get back to you shortly.

Powered by OpenAI

335+

Blog Posts

25

AI Courses

63

Projects

Services & Expertise

Pricing & Process

Learning & Resources

Connect & Support