Skip to main content
Product Management/notification-strategy

Notification Strategy

You need to design a multi-channel notification system with frequency controls and engagement metrics.

A client needs to design or overhaul their notification system across channels (email, push, in-app, SMS). Common when users are complaining about notification overload, engagement metrics are declining, or a product is adding new communication channels and needs a coherent strategy before shipping.


How it works

  1. You provide the product, available notification channels, user segments, and current notification volume
  2. The skill builds a multi-channel notification framework covering channel selection, frequency capping, personalization tiers, opt-in/opt-out flows, content templates, and engagement health metrics
  3. It returns a notification strategy document the product, engineering, and marketing teams can use to implement a system that respects user attention while driving engagement

Prompt

You are building a multi-channel notification strategy for a Kate Makrigiannis consulting engagement. Kate helps clients stop treating notifications as an afterthought and start treating them as a product surface that directly impacts retention and trust. Before writing, read knowledge/voice-tone-guide.md -- use the client-facing voice.

Inputs I will provide:

  • Product: {{PRODUCT}} (what the product does, key user actions, business model)
  • Notification channels available: {{CHANNELS}} (e.g., "email, push (iOS + Android), in-app, SMS" -- list what's currently live or planned)
  • User segments: {{USER_SEGMENTS}} (key segments -- e.g., "free users, paid users, enterprise admins, churning users")
  • Current notification volume: {{CURRENT_VOLUME}} (current state -- e.g., "we send 3 emails/week and 1-2 push/day" or "we have no system, sending ad hoc" or "users are complaining about too many notifications")
  • Context (optional): {{CONTEXT}} (what triggered this work -- engagement drop, channel expansion, user complaints, regulatory requirements)

Step 1: Notification audit and channel assessment

Current State Assessment

Evaluate the inputs and identify:

  • What notifications are being sent today (transactional, marketing, product, social)
  • Which channels are being used for which message types
  • Known pain points (over-sending, wrong channel, no personalization, no opt-out)

Channel Capability Matrix

ChannelBest ForUrgency LevelRich Content?Cost per SendUser Control
Email[Use cases]Low-MediumYes (HTML, images)LowUnsubscribe link
Push (mobile)[Use cases]Medium-HighLimited (title + body)FreeOS-level control
In-app[Use cases]LowYes (full UI)FreeDismissible
SMS[Use cases]HighNo (text only)Medium-HighOpt-out reply
[Other channels from inputs][Use cases][Level][Y/N][Cost][Control mechanism]

Step 2: Notification taxonomy

Classify every notification type by category and assign channels:

Message Type Classification

Message TypeCategoryPrimary ChannelFallback ChannelPriorityExample
Password resetTransactionalEmailSMSCritical"Reset your password"
Purchase confirmationTransactionalEmailPushCritical"Your order is confirmed"
New feature announcementProductIn-appEmailMedium"Try our new dashboard"
Weekly digestMarketingEmailNoneLow"Your weekly summary"
Friend activitySocialPushIn-appMedium"Alex commented on your post"
Inactivity re-engagementMarketingEmailPushMedium"We miss you"
[Product-specific types][Category][Channel][Fallback][Priority][Example]

Categories:

  • Transactional: User-triggered, expected, often legally required
  • Product: Feature updates, usage nudges, onboarding
  • Marketing: Campaigns, promotions, content
  • Social: User-to-user interactions, community activity

Step 3: Frequency capping rules

Per-Channel Caps

ChannelHard Cap (per day)Soft Cap (per week)Cool-down After Dismiss
Email[N] total[N] non-transactional[N hours/days]
Push[N] total[N] non-critical[N hours]
In-app[N] simultaneous[N] per sessionNext session
SMS[N] total[N] non-transactional[N days]

Aggregate Caps (across all channels)

  • Maximum total non-transactional notifications per user per day: [N]
  • Maximum total non-transactional notifications per user per week: [N]
  • When a cap is hit, prioritize by message priority tier (critical > high > medium > low)
  • Transactional messages are never capped

Priority Queue Logic

When cap is reached and a new notification triggers:

  1. If new notification priority > lowest queued notification priority, replace it
  2. If equal priority, use recency (newer wins)
  3. Dropped notifications are logged but not sent; review dropped-notification reports weekly

Step 4: Personalization tiers

Define four personalization tiers and map each notification type to its appropriate tier:

Tier 0: No Personalization

  • Same message to all recipients
  • Use for: system-wide announcements, legal notices, maintenance alerts
  • Example: "Scheduled maintenance on Saturday 2am-4am EST"

Tier 1: Segment-Based

  • Content varies by user segment (free vs. paid, role, plan tier)
  • Use for: feature announcements, marketing campaigns, onboarding sequences
  • Example: "New feature for Pro users" vs. "Upgrade to unlock [feature]"

Tier 2: Behavioral

  • Content varies by user behavior (usage patterns, engagement history, lifecycle stage)
  • Use for: re-engagement, usage nudges, milestone celebrations
  • Example: "You've created 10 projects this month -- here's a power tip"

Tier 3: Individual

  • Content is unique per user (recommendations, personalized digests, activity summaries)
  • Use for: weekly digests, recommendation engines, activity feeds
  • Example: "3 items need your review: [specific items]"

Personalization Mapping

Notification TypeCurrent TierTarget TierData RequiredImplementation Effort
[Type][0-3][0-3][What data is needed]Low / Medium / High

Step 5: Opt-in / opt-out flow design

Opt-In Strategy

  • Progressive permission: Don't ask for all channels at once. Earn each channel through demonstrated value.
  • Push notification priming: Show an in-app prompt explaining value before triggering the OS permission dialog
  • Email permission: Collect at signup with clear expectation-setting ("You'll receive [frequency] emails about [topics]")
  • SMS permission: Only request when high-urgency use case is demonstrated

Opt-In Flow

ChannelWhen to AskHow to FrameFallback if Declined
EmailSignup"Get [value] delivered to your inbox"In-app notifications only
PushAfter first value moment"Get notified when [specific valuable event]"Email fallback
SMSWhen user enables high-urgency feature"Get instant alerts for [urgent thing]"Push fallback

Preference Center Design

Users should be able to control:

  • Channel preferences per notification category (not per individual notification -- too granular)
  • Frequency preferences ("daily digest" vs. "real-time" vs. "weekly summary")
  • Quiet hours (no non-critical notifications between [time] and [time])
  • Pause all non-transactional notifications for [N] days

Opt-Out Flow

  • Every non-transactional message must include an easy opt-out mechanism
  • One-click unsubscribe for email (no confirmation page)
  • Opt-out from a category should not opt out from all categories
  • Opt-out confirmation message: acknowledge the change and link to preference center
  • Track opt-out reasons when possible (dropdown on unsubscribe: "too many," "not relevant," "switched to competitor," "other")

Step 6: Notification content templates

For each major notification type, provide a content template:

Template: [Notification Type]

  • Subject / Title: [Template with {{variables}}]
  • Body: [Template with {{variables}}, under character limit for channel]
  • CTA: [Primary action, one verb + object]
  • Fallback (no-CTA version): [For channels that don't support buttons]

Character limits by channel:

  • Push title: 50 characters
  • Push body: 150 characters
  • Email subject: 60 characters
  • SMS: 160 characters (1 segment)
  • In-app: flexible, but keep under 200 characters for banners

Step 7: Engagement metrics and health indicators

Per-Channel Metrics

MetricEmailPushIn-appSMSHealthy Range
Delivery rateTrackTrackN/ATrack> 95%
Open rateTrackTrackTrack (view)N/AEmail: 20-40%, Push: 5-15%
Click-through rateTrackTrackTrackTrackEmail: 2-5%, Push: 1-3%
Opt-out rateTrackTrackTrack (dismiss)Track< 0.5% per send
Complaint / spam rateTrackN/AN/AN/A< 0.1%

Fatigue Detection Signals

Monitor these indicators for notification fatigue:

  • Open rates declining week-over-week for 3+ consecutive weeks
  • Opt-out rate spiking above 1% on any single send
  • Push notification permission revocation rate increasing
  • Time-to-open increasing (users are ignoring and catching up later)
  • In-app dismissal rate above 80% without click

Fatigue Response Protocol

When fatigue is detected:

  1. Reduce frequency by 30% for the affected segment
  2. A/B test send times (current vs. shifted by 2-4 hours)
  3. Review content relevance -- are notifications adding value or just filling a schedule?
  4. Consider switching from push to digest format
  5. Re-test after 2 weeks; if metrics recover, stabilize at new frequency

Related skills: Pairs with /email-campaign-builder for email-specific campaign design. Uses /personalization-playbook for deeper personalization strategy. Feeds into /activation-optimization for onboarding notification sequences.

Example Output

Input

  • Product: Folia — a B2C personal finance app that helps users track spending, set savings goals, and get AI-generated budget recommendations. Revenue model is freemium (free tier with ads, Folia Plus at $9.99/month). Key user actions include linking bank accounts, categorizing transactions, reviewing weekly spending summaries, and hitting savings milestones.
  • Notification channels available: Email, push (iOS + Android), in-app. SMS is planned but not yet live.
  • User segments: Free users (68% of base), Folia Plus subscribers (24%), churning users (identified as 30+ days inactive, 8%)
  • Current notification volume: Sending approximately 5–6 emails/week per user (mix of marketing and product), 2–3 push/day, and in-app banners with no frequency logic. Users are actively complaining — App Store reviews mention "notification spam" and the unsubscribe rate on marketing emails hit 2.1% last month.
  • Context: Engagement drop triggered this work. DAU/MAU ratio fell from 34% to 26% over 90 days. The team suspects notification fatigue is a major contributor. SMS is also being evaluated for bill-due alerts, and the team wants a coherent strategy before adding another channel.

Output

Folia Notification Strategy

Prepared by Kate Makrigiannis Consulting Channels in scope: Email · Push (iOS + Android) · In-app · SMS (pre-launch planning)


Current State Assessment

Folia's notification system grew without a framework. What you have today is a volume problem masquerading as an engagement problem — and your users are telling you directly in App Store reviews.

What's being sent today:

  • Transactional: Account link confirmations, password resets (email only — correct)
  • Product: Spending summary emails, savings milestone push alerts, budget recommendation in-app banners
  • Marketing: Upgrade-to-Plus campaigns (email), feature announcements (email + push), win-back attempts for churning users (push)
  • Social/Behavioral: "You're on track!" encouragement push messages, triggered by no clear behavioral logic

Known pain points:

  • Email frequency (5–6/week) is 3–4x industry norm for a utility-first finance app
  • Push cadence (2–3/day) sends regardless of whether the user has opened the app recently
  • In-app banners have no session cap — a user who checks their balance three times in a day sees the same banner three times
  • No preference center exists; the only escape is full unsubscribe or disabling push at the OS level
  • Churning users and active Plus subscribers receive identical notification streams — no segmentation logic

Channel Capability Matrix

ChannelBest ForUrgency LevelRich Content?Cost per SendUser Control
EmailWeekly digests, upgrade campaigns, onboarding sequences, milestone summariesLow–MediumYes (HTML, images)LowUnsubscribe link
Push (iOS + Android)Real-time alerts (bill due, unusual spend, goal reached), time-sensitive nudgesMedium–HighLimited (title + body)FreeOS-level toggle
In-appFeature discovery, budget tips, upsell prompts, onboarding checklistsLowYes (full UI)FreeDismissible
SMS (planned)Bill-due alerts, large transaction flags, critical account events onlyHighNo (text only)Medium–HighSTOP reply opt-out

Channel verdict for Folia: Email should be reduced to 1–2/week maximum. Push should be need-triggered, not scheduled. In-app is your safest channel for non-urgent product messaging — lean into it. SMS should launch with a tight scope (bill alerts only) and explicit opt-in before you send a single message.


Message Type Classification

Message TypeCategoryPrimary ChannelFallback ChannelPriorityExample
Password resetTransactionalEmailSMS (when live)Critical"Reset your Folia password"
Bank account link confirmationTransactionalEmailIn-appCritical"Your Chase account is connected"
Unusual transaction detectedTransactionalPushEmailCritical"New $340 charge at Best Buy"
Bill due reminderTransactionalPushSMS (when live)High"Your Amex bill is due in 3 days"
Savings goal reachedProductPushIn-appHigh"You hit your Emergency Fund goal 🎉"
Weekly spending summaryProductEmailIn-appMedium"Here's where your money went this week"
AI budget recommendationProductIn-appEmailMedium"You could save $80/month on subscriptions"
Onboarding step nudgeProductIn-appEmailMedium"Link your second account to get the full picture"
Upgrade to Folia PlusMarketingIn-appEmailLow"Unlock unlimited goals — try Plus free for 30 days"
Feature announcementMarketingIn-appEmailLow"New: Bill tracking is here"
Inactivity re-engagement (30+ days)MarketingEmailPushMedium"Your budget hasn't been reviewed in a while"
Monthly financial health recapMarketingEmailNoneLow"Your October in numbers"

Frequency Capping Rules

Per-Channel Caps

ChannelHard Cap (per day)Soft Cap (per week)Cool-down After Dismiss
Email1 total2 non-transactional48 hours before next marketing email
Push2 total5 non-critical4 hours after any push
In-app1 simultaneous banner3 per weekNext session (not same session)
SMS (planned)1 total2 non-transactional7 days

Aggregate Caps (Across All Channels)

  • Maximum non-transactional notifications per user per day: 3
  • Maximum non-transactional notifications per user per week: 7
  • Transactional messages (password reset, unusual transaction, bank confirmation) are never capped
  • When cap is hit, priority order: Critical > High > Medium > Low
  • Dropped notifications are logged; review dropped-notification report in weekly growth standup

Segment-Level Adjustments

SegmentCap ModifierRationale
Free usersStandard caps applyBaseline experience
Folia Plus subscribers+1 push/week soft capHigher engagement intent; upgrade content irrelevant
Churning users (30+ days inactive)Email only; push suppressedOS-level permission likely already revoked; don't burn the channel

Personalization Tiers

Personalization Mapping

Notification TypeCurrent TierTarget TierData RequiredImplementation Effort
Weekly spending summary0 (same to all)3 (individual)Transaction categories, vs. prior weekMedium
Upgrade to Folia Plus01 (segment)Plan tier, feature usageLow
AI budget recommendation13 (individual)Spending patterns, recurring transactionsHigh
Inactivity re-engagement02 (behavioral)Last active date, last completed actionLow
Savings goal alert12 (behavioral)Goal progress %, goal typeLow
Feature announcement01 (segment)Plan tier, feature availabilityLow
Bill due reminder02 (behavioral)Bill amount, due date, payment historyMedium

Quick win: The weekly spending summary goes out identically to all users today. Swapping in the user's top spending category, their week-over-week delta, and their goal progress requires three data fields you already collect — and it converts a generic email into the kind of message users actually open.


Opt-In / Opt-Out Flow Design

Opt-In Flow

ChannelWhen to AskHow to FrameFallback if Declined
EmailSignup"Get your weekly money summary and savings tips — no more than twice a week