User Control | What It Does to Your Alert | Where They Flip It |
Focus modes & classic DND | Anything not on the per-Focus “Allow List” arrives silently in Notification Center. A single toggle decides whether even time-sensitive pushes may break through. | Settings → Focus |
Scheduled Summary | Up to 12 daily digests batch low-urgency pushes; iOS re-orders that stack by on-device relevance (and can also generate summaries), so your promo may surface last—or never. Opt-in and managed per-app. | Settings → Notifications → Scheduled Summary |
Global kill-switches | At any moment the user can demote you to the Summary, revoke Time-Sensitive privileges, or turn notifications off entirely. One tap, no confirmation dialog. | Settings → Notifications → [Your App] |
Frequency policy | User reaction | Why it matters |
1 push/week | 10% mute the app, 6% uninstall | Even “gentle” blasts feel spammy to some cohorts. |
3-6 pushes/week | 40% opt-out | The tipping point where annoyance trumps value. |
Weekly cadence | +440% 90-day retention vs. none | Under-messaging kills growth. |
Daily-plus cadence | +820% 90-day retention vs. none | Frequency works—if messages stay relevant. |
Checkpoint | What Duolingo Does | Borrow-or-Improve Takeaway |
1. Navigation friction | 3-4 taps (Profile tab → Settings → Notifications). Respectable for a non-core flow. | Keep it 3 taps max if notifications are mission-critical to your app’s retention loop. |
2. Architecture | No global kill-switch. Five top-level buckets (Reminders, Friends, Leaderboards, Announcements, Friend Nudges) with 14 sub-toggles. | If you depend on push for habit-loops, skip the nuclear “Off” and segment by intent instead. |
3. Progressive disclosure | Main screen shows a one-line explainer plus a blue “ n notifications turned off ” badge per bucket. Zero red dots or exclamation marks. | Make “things you changed” visible without scolding the user—invite curiosity, don’t shame. |
4. Smart defaults | Everything ON at install. “Restore Default” appears only after the first edit (nice safety net). | Users are braver with toggles when there’s an easy undo. Add the reset button. |
5. Advanced levers | Practice reminder offers: Push/Email picker → smart-schedule toggle → manual time picker (disabled if smart-schedule is on). | Stack controls from simple to nerdy: channel → automation → manual override. |
6. Channel choice | 6 of 14 events support push, email, or both (marketing, product tips, social). Others are single-channel by design (e.g., streak save = push-only). | Only offer channel choice when the modality truly matters; otherwise pre-select. |
Checkpoint | What Discord Does | Borrow-or-Improve Takeaway |
1. Navigation friction | 3 taps via either the Notifications tab → … → Notification Settings path or Profile tab → Settings → Notifications. Settings access is available in multiple flows. | Redundant paths to settings = user trust. Don’t hide control behind just one obscure route. |
2. Architecture | No global toggle. Multiple layers of notification controls: app-wide, server-wide, channel-specific, and even stage event notifications. Defaults vary by scope (some servers default to “@mentions only”). | Deep hierarchy = flexibility, but also complexity. Offer power, but highlight defaults and overrides clearly. |
3. Progressive disclosure | Channel- and server-level overrides tucked under “+ Add a Channel or Category.” Muting options presented as dropdowns (15 minutes to “until I turn it back on”). | Great use of temporal muting. If you expect noise spikes (e.g., crypto chat), give users a snooze, not just a kill switch. |
4. Smart defaults | Defaults depend on server size or admin configs (e.g., “you won’t get mobile push notifications for non-@mention messages”). Push and in-app alerts toggled independently. | Smart defaults should adapt to context (e.g., large community = fewer pushes). Make the rationale transparent. |
5. Advanced levers | Suppress @everyone, @here, and Role Mentions. Highlight alerts. Stream alerts. Multi-channel overrides. Time-based mute. | Discord’s suppression toggles = chef’s kiss for power users. “Suppress highlights” = underrated win. |
6. Channel choice | Nearly every setting offers granular push vs in-app toggle control—especially for community alerts and mentions. | Consistency matters. If you offer both push & in-app toggles for one category, offer the same for others too. |
# | Checkpoint | What Tinder Does | Borrow-or-Improve Takeaway |
1 | Navigation friction | 3 taps: Profile icon → Settings → Notifications (same path on iOS, Android, and web). | Three taps is the sweet spot—anything deeper and users will rage-quit before they find the kill-switch. |
2 | Architecture | Two flat lists—Push and Email. Each list exposes 6-ish event toggles: • Matches• Messages• Likes / Super Likes• Top Picks (premium)• Boost reminders & promos• “Engagement” nudges (e.g., “You’ve got new likes waiting”) | Flat > nested when you only have a half-dozen events. Don’t invent categories just to look busy. |
3 | Progressive disclosure | No hidden drill-downs. All toggles are visible at once; premium-only events are labelled with a Gold/Platinum badge. | Show everything up front; badge paywalled features instead of burying them. |
4 | Smart defaults | All Match & Message alerts ON (both channels). Promos/Boost emails ON, push OFF. One-tap Pause My Account hides profile and mutes alerts. | Default to the core habit loop; tone down the marketing pings until users opt in. |
5 | Advanced levers | • “Pause my account” (hard mute + hide profile)• Hide from Top Picks / Swipe Surge (privacy + noise control) | A single “Pause everything” switch beats 10 micro-toggles when users need a break. |
6 | Channel choice | Every event appears twice—one push switch, one email switch. Users can kill inbox spam but keep real-time pushes (or vice-versa). | If you offer email and push, mirror the toggle set so users don’t have to guess where the noise comes from. |
# | Checkpoint | What Chase Does | Borrow-or-Improve Takeaway |
1 | Navigation friction | 3 taps: Profile icon → Manage alerts → Choose alerts. Same path on web and iOS. | Keep critical controls within three taps—banking apps prove it’s doable even inside heavy security shells. |
2 | Architecture | Two-level tree: Account-picker → Alert categories (Security, Account, Payments, Credit-card, etc.). Each category lists individual events. | If users juggle multiple accounts, force them to pick an account first—otherwise the toggle zoo gets ugly fast. |
3 | Progressive disclosure | Category lists stay collapsed until an account is chosen; within a category, delivery-method toggles (push, text, email) appear inline. | Show the next decision only after the previous one—reduces cognitive load in data-dense apps. |
4 | Smart defaults | Security/fraud alerts are always-on & non-editable. Everything else is opt-in. Users can “Stop using all alerts” or Pause alerts for a chosen date range. | Mandatory security alerts keep regulators happy; a global pause switch keeps users happy. |
5 | Advanced levers | • Custom thresholds (e.g., large-purchase = >$X) • Pause alerts (date range) • Alert history log with 30-day filter. | Threshold sliders turn generic “large purchase” pings into user-defined signal—steal that. |
6 | Channel choice | Every alert can be delivered by push, text, or email; users pick one, two, or all three per event. | Mirror the same toggle set for every channel so users instantly know where the noise is coming from. |
# | Check-point | What Amazon Does | Founder/PM Takeaway |
1 | Navigation friction | 3-4 taps: Menu (≡) → Settings → Notifications. Same path on Android & iOS. | Hides inside the burger menu, but still reaches the magic ≤3-tap rule. |
2 | Architecture | One flat list of topic buckets—no sub-screens: • Your Account (Important Messages)• Your Shipments (Shipment alerts) • Your Recommendations (Personalized deals) • Watched & Wait-listed Deals• Alexa/Dash shopping, etc. | If you only have ~6 alert types, keep them on one screen; needless nesting ≠ delight. |
3 | Progressive disclosure | Each bucket shows a one-line explainer; all toggles visible at once—no deep drill-downs or extra confirmation dialogs. | Zero surprises: users can scan, flip switches, and bail in <30 seconds. |
4 | Smart defaults | All order-related alerts ON; most promo/deal alerts ON; users complain because they have to opt-out of marketing. | Ship-status alerts are table-stakes, but make marketing pushes opt-in or risk mute-and-delete rage. |
5 | Advanced levers | None in-app. Thresholds, pause ranges, or channel scheduling live on the web dashboard, not the mobile app. | Sometimes “less is more”… but if your users need time-based mutes, surface them in-app, not on a website they’ll never open. |
6 | Channel choice | Mobile app toggles control push only. Email/SMS settings live in Account → Communication Preferences on the web. | Separate channel settings = cognitive tax. Mirror them in-app or at least link out with a one-tap deep link. |
# | Checkpoint | What Slack Does | Borrow-or-Improve Takeaway |
1 | Navigation friction | 2 taps: You tab → Notifications. Lightning-fast for an enterprise tool. | If notifications are your lifeline, surface them on the primary tab bar—no hamburger hunts. |
2 | Architecture | Three scopes, identical controls: • Workspace-wide (global) • Channel overrides (list & edit) • DM/Thread overrides (same UI) • Flat list of “General Settings” under the global panel. | Re-use the same component for every scope—users learn it once, apply everywhere. |
3 | Progressive disclosure | Global list shows advanced levers (Schedule, Timing, Keywords, Channel-Specific Notifications →). Each drill-down opens a lightweight sheet; nothing more than two levels deep. | Keep the rabbit-holes shallow: one sheet deep is plenty when settings proliferate. |
4 | Smart defaults | • Push ON for mentions & DMs, thread replies, huddle calls. • Quiet-hour Notification Schedule preset (00:30-22:00) • In-app previews ON. • Thread notifications ON. A global Pause notifications exists under the home tab (not in screenshots). | Default to the “never miss a mention” loop; everything else opt-in. Offer a single-tap Pause for sanity. |
5 | Advanced levers | • Notification Schedule (Every day, Weekdays, Custom hours) • Timing (Always, When inactive, When desktop idle) • Default Reminder Time wheel • My Keywords highlight list • Channel-Specific bulk editor • Built-in Troubleshoot Notifications wizard with one-tap Send test Time-Sensitive push | Quiet hours + idle-sensing + keywords = chef’s-kiss for productivity apps. Steal at least two. |
6 | Channel choice | Separate toggles for Push (mobile), In-app (banner while open). Email & desktop alerts live elsewhere, but mobile mirrors the critical ones. | Don’t clutter mobile with channels users can’t receive there—mirror only what matters. |
# | Checkpoint | What the best apps do | Back-of-the-napkin takeaway for your backlog |
1 | Navigation friction | Settings live three taps deep, max: More ⋯ → Settings → Notifications/Reminders. | If your users have to “organise their lives” before they can organise their alerts—you blew it. Keep it ≤ 3 taps. |
2 | Architecture | Two parallel tracks • Push / Badge alerts (due soon, overdue, project activity) • Reminders engine (scheduled pings, location, morning/evening review) Plus a Subscribed Email panel and per-workspace/project matrices (email ☑︎ / mobile ☑︎). | Separate “interrupt me now” pushes from “nag me later” reminders. Users grok the difference instantly. |
3 | Progressive disclosure | Top screen shows high-value toggles only. Dive one level to: • Morning / Evening overview sheets (time picker inside) • Per-project grids (two columns: Email 📧 / Push 📱) • Automatic Reminders picker (At due time ✓ │ None) Upgrade paywall appears only inside advanced reminder options. | Shallow rabbit holes: one sheet deep, then you’re done. Hide paywalls until the user asks for a power feature. |
4 | Smart defaults | • Badges show count of due & overdue tasks by default. • “At time of task” reminder auto-added to anything with a due time. • Morning/Evening digests off until user sets a time. • Snooze defaults to 15 min, but list offers 5 min → 1 day. | Default to actionable urgency; make mindfulness (“evening review”) opt-in. |
5 | Advanced levers | • Location-based pushes. • Onboarding assistant. • Custom notification sounds. • Individual per-item notifications. | Location-aware pushes and per item granularity. |
6 | Channel choice | Matrix UI: every event row has tiny email and push checkboxes; desktop notifications listed separately so mobile screen stays lean. | Mirror channels side-by-side so users can kill inbox spam without nuking real-time nudges. |
# | Checkpoint | What Airbnb Adds to Our Best-Practice Mix | Borrow-or-Improve Takeaway |
1 | Navigation friction | 3 taps: Account → Notifications → (Offers & Updates │ Account). Two top tabs keep promo chatter apart from mission-critical stuff. | Segment your settings UI by intent (marketing vs. transactional) so users can kill offers without crippling receipts. |
2 | Architecture | Flat lists of sub-categories (e.g., Trip planning, Guest messages). Each row shows the active channels (“On: Push”) and an Edit link that opens a bottom-sheet toggle trio. | Show the current state right on the list. “On: Push” beats mystery meat. |
3 | Progressive disclosure | Edit sheet exposes exactly three switches—Email, Push, SMS—nothing else. | Keep the channel matrix one tap away; any deeper and the user bails. |
4 | Smart defaults | • Travel-critical alerts = Push ON by default. • SMS defaults ON for edge-case categories (e.g., “Account activity”)—smart when users may be roaming without data. • One-tap Unsubscribe from all offers lives at the bottom of the promo tab. | If your users could be offline or abroad, offer SMS as a safety net. Provide a single “nuke-promo” switch to avoid GDPR headaches. |
5 | Advanced levers | None—and that’s the lesson. Airbnb decided channel picking + global unsubscribe is enough; timing and quiet hours stay at the OS level. | Don’t add levers unless they solve a real retention problem. Sometimes simple wins. |
6 | Channel choice | Always the same trio: Email ☑︎│Push ☑︎│SMS ☑︎. No exotic channels to confuse users. The Turn on notifications primer also surfaces a marketing switch before hitting iOS allow. | Consistency + primer opt-in = fewer opt-outs later and higher permission-grant rates. |
# | Checkpoint | What Substack Does Well | Why it Matters for Founders / PMs |
1 | Navigation friction | 3 taps: Account → Settings → Notifications. Two clear doors inside: Filters (noise gate) and Preferences (all the toggles). | Keep the “mute-me” switch within three taps, even in content-dense apps. |
2 | Architecture | Dual-pane model • Filters – single “Quality filter” toggle (ML hides low-value pings). • Preferences – six message buckets (Newsletter Delivery, Engagement, Messaging, Connections, Live, Marketing). Each bucket opens a sheet. | Separate relevance (Filter) from channel selection (Preferences); users grasp the mental model instantly. |
3 | Progressive disclosure | Bucket sheet shows a mini matrix: rows = events, columns = Email ☑︎ / Push ☑︎. A red Disable all button sits at the bottom. No scrolling inside the sheet. | One glance, one tap, done. Matrix UI trumps nested drill-downs when every row repeats the same channel set. |
4 | Smart defaults | • Newsletter delivery = Both email & push (users can switch to “Prefer push” or “Prefer email”). • Engagement/Connections = both channels ON. • Marketing’s “Suggested content” OFF by default. • Quality filter ON. | Default to “never miss core engagement,” keep promos polite, and pre-enable noise suppression—reduces early opt-outs. |
5 | Advanced levers | • Newsletter delivery preference radio set (push vs. email vs. both). • Quality filter ML toggle. • “Allow invites/chats from” scopes (Everyone / None). • Per-bucket Disable all kill switch. | Give power users a single, opinionated control (filter, invite scope) rather than 20 micro-toggles they’ll never touch. |
6 | Channel choice | Identical Email/Push columns everywhere. No SMS to clutter UI for a readership app. | Consistency breeds trust; if SMS isn’t core, don’t tease it. |