DEV Community

Krishna
Krishna

Posted on

Push Notifications That Earn Their Place

Most apps lose over half their opted-in users within a year. The cause is usually the app itself: wrong timing, generic copy, too many sends.

Before any push, ask one question:

Why would this person be glad their phone buzzed right now?

If the answer is "so our numbers go up", don't send it.

  1. Ask for permission after a win, not at launch Wait for the first real win: a saved result, a completed order. Show your own screen first. Trigger the system prompt only after they tap yes. Name the reason: "Get a message when your order ships", not "Enable notifications". On iOS, use provisional authorization for informational pushes.

Asking at launch gets about 40% opt-in on iOS. Asking after a win gets 70%+.

  1. Give every push a reason that belongs to the reader Noise Their reason We miss you! Come back and explore. Your draft from Tuesday is still here. New features just dropped. The export you asked about is live. 50% off, today only! The jacket you saved dropped to $48. Lead with the specific; only the first few words show on a locked phone. One push, one thing. No exclamation marks or emoji in the title. Never fake urgency or activity.
  2. Reach drifting users at their own hour

Two small jobs replace the campaign blast:

Nightly score: how likely each user is to return on their own (days away, first-week sessions, core action done, past taps).
Hourly send: users below the line, inside their usual open hours, not reached this week. Send the one message that fits. No match, no send.


Bonus: home Wi-Fi in the evening means the user has sat down. Infer it from connection type, open hour and a hashed IP. You don't need the SSID or location permission.

  1. Give every user a budget Rule Value Nudges per user 1 a week, max 2 Gap after any push 24 hours Quiet hours (local) 22:00 to 08:00 After 1 ignored push Wait 2 weeks After 2 ignored in a row Stop nudging Transactional (order shipped, reply received) Unlimited
  2. Get the platform basics right Android: one channel per kind of push ("Order updates", "Reminders"), named for users. Tokens: delete on FCM UNREGISTERED or APNs Unregistered. Re-register on every launch. Deep links: test them from a cold start. Rich media: only when the image is the content. Keep it under 100 KB.
  3. Measure opt-outs, not opens

Open rate flatters you. Track these instead:

Opt-out rate within 7 days of a push: under 0.5%
Opens that lead to the core action: above 30%
Opt-in rate on your own pre-prompt: above 60%
Dead-token rate per send: under 2%

Send fewer pushes and you'll keep more users.

Top comments (0)