Push notifications people do not turn off
Permission is granted once and revoked permanently. Most apps spend that permission on the wrong messages in the first week and never get it back.
Notification permission is the only budget in your product that can go to zero and never recover. A user who disables notifications almost never re-enables them, and there is no flow you can build that changes that.
Most apps spend it badly, and they spend it early.
Do not ask on first launch
The system prompt on first launch is asked before the user knows what the app does, which means they are deciding whether to trust a stranger. Many say no, and that answer is effectively permanent.
Ask at the moment the value is obvious - when they have created the thing that would generate a useful alert. Explain what you will send first, in your own interface, before triggering the system prompt.
The pattern that works is a screen of your own that names one concrete message the user would want, with a continue button that triggers the real prompt and a dismissal that does not. Someone who declines your screen has cost you nothing, because the system prompt was never spent. They can be asked again next month. Someone who declines the system prompt is gone.
The test for whether to send
One question: would this user be annoyed if they missed it?
- Someone replied to you. Yes - send.
- Your order shipped. Yes - send.
- You have not opened the app in three days. No. That is your problem, not theirs.
- Check out our new feature. No.
The last two are where permission goes to die. They produce a measurable short-term bump and a permanent reduction in reachable audience, and the bump is what gets reported.
Every marketing push is a withdrawal from an account you cannot pay back into.
The measurement problem underneath it
Re-engagement campaigns survive because they are measured against the wrong thing. The dashboard shows sessions on the day of the send, and the number is real. What it omits is the cost, which lands quietly over the following weeks as the reachable audience shrinks.
If you want an honest number, track the size of the audience you can still reach as a series over time, next to the campaign dates. Most teams have never drawn that chart. The ones who do usually stop sending within a quarter, without anybody needing to win an argument.
Opt-out rate per campaign is the other number worth having. A send that produces a spike of disabled notifications has not performed well, however many sessions it produced.
Give them a dial before they find the switch
Granular notification settings feel like a retention risk and are the opposite. A user irritated by one category has two options: turn off that category, or turn off everything at the OS level.
If the only control you offer is all or nothing, you have chosen which one they pick.
Three or four categories is usually enough, and they should be named for what the user cares about rather than for how the backend is organised. People understand replies to me and order updates. Nobody knows what transactional means.
Batch anything that is not urgent
Five separate notifications for five events in a minute is five interruptions. One that summarises them is one. Batching is the cheapest improvement available to most apps and is almost never done, because it is easier to send on each event.
The rule we apply is that anything the user did not directly cause should wait. An alert triggered by a person, addressed to this person, goes immediately. Anything generated by the system can be collected and delivered once.
Respect the hours
A notification that arrives at three in the morning is remembered differently from the same notification at three in the afternoon, and the memory attaches to the app rather than the message.
Send non-urgent messages against the recipient's local time, not the server's. This is a small piece of work that is almost always skipped in the first version and almost always discovered after a user in another timezone complains. Urgent messages ignore the rule, which is what makes them urgent.
Write it as a person, not a campaign
A notification has roughly two lines before it is truncated, and it is read on a lock screen among messages from actual people. Text written in marketing register stands out as the one thing in that list nobody asked for.
Put the specific fact in the first few words. Order shipped, arriving Thursday is a notification. An exciting update about your recent order is an advertisement wearing a notification's clothes, and people learn the difference in about two sends.


