Designing Notifications Users Don't Turn Off
Key takeaway
Send a notification only when the user needs to act or would genuinely want to know now. Match the channel to urgency — in-app for awareness, email for reference, push and SMS for time-critical — and let people tune categories rather than facing a single on-off switch.
Notification permission is granted once and lost permanently. Every unnecessary message spends a little of that credit, and the user's only recourse when it runs out is to switch everything off — including the messages that mattered.
Decide what qualifies
- Does the user need to do something? Approvals, expiries, failed payments, and blocked work qualify.
- Is it time-critical? If it can wait for their next visit, it belongs in an in-app inbox rather than a push notification.
- Did they ask for it — a watch, a subscription, an alert they configured? Explicit requests earn a channel.
- Is it about them specifically, or about your product generally? Product announcements are marketing and belong in a channel people opt into.
Match channel to purpose
- In-app — the default. No permission needed, no interruption, and available when the user is already engaged.
- Email — anything that needs to be kept, forwarded, or referenced: receipts, summaries, reports.
- Push — time-critical and personal. Deep link straight to the relevant screen; a push that opens a home screen wastes the interruption.
- SMS — reserve for genuinely urgent or security-related messages. It costs money and feels intrusive, which is exactly why it still works.
Respect the user's attention
- Batch and digest low-urgency events rather than sending each one. Ten individual alerts are worse than one summary.
- Deduplicate: one notification per event, not one per channel, unless the user asked for both.
- Respect quiet hours and time zones — a 3am push about a routine update is how apps get uninstalled.
- Never notify someone about their own action.
- Stop when they've seen it: if the user is already looking at the thing, don't also push it.
Give real control
Offer granular preferences per category and per channel, reachable in one click from every message. A single unsubscribe switch forces an all-or-nothing choice and you will lose. Default new categories to off for existing users, and watch your opt-out rate per notification type — it's the clearest feedback you'll get about which messages are worth sending.