SolisReach
← Journal
Mobile Apps5 min read

Push notifications: the line between useful and an uninstall reason

Written by the SolisReach team

Push notifications are one of the few mobile app features that can genuinely improve retention meaningfully, or actively destroy it, with surprisingly little middle ground between those two outcomes in practice. A well-timed, genuinely relevant notification reliably brings a user back into the app. A poorly timed, generic one is consistently one of the most commonly cited reasons real users give for uninstalling an app entirely, based on both app store reviews and our own user interviews.

Ask permission at the right moment, never on first open

Requesting notification permission the instant an app first opens, before a user has experienced any real value from it whatsoever, gets denied considerably more often than asking after a genuinely meaningful first action, like completing a booking or finishing a useful onboarding flow. iOS in particular only lets an app ask for this permission once without extra friction involved, so the specific timing of that single ask genuinely matters enormously to long-term engagement.

Every notification needs to clearly answer "why now"

A generic "come back and check out the app" notification reads immediately as noise to most users. A notification tied to something specific and genuinely timely, a price drop on an item someone actually viewed, a relevant booking reminder, a real update on something the user is actively tracking, reads as genuinely useful instead. We push every client to tie each individual notification type to a specific, relevant trigger, rather than relying on a generic, scheduled re-engagement campaign sent to everyone at once.

Let users control frequency and category, not just a single on/off switch

A single all-or-nothing notification toggle means users who genuinely dislike just one specific notification type end up turning off every notification type at once, including the genuinely useful ones they'd otherwise have kept. Granular, category-level controls, order updates yes, promotional offers no, for instance, keep users meaningfully engaged with the specific notifications they actually value, while still cutting the ones that were quietly driving them toward uninstalling the app entirely.

How we test notification copy before it ships broadly

We run new notification copy past a small internal test group first, specifically asking one question: would you actually want to receive this on your own phone, unprompted, from an app you use. It's a low-tech test, and it catches a surprising number of notifications that sounded reasonable in a planning document but read as spammy the moment they're imagined landing on a real lock screen.

Anything that fails this simple gut check gets rewritten or cut before it ever reaches real users, since the cost of testing it live, a wave of uninstalls, is considerably higher than the five minutes this internal check takes.

Frequency caps that we default to across most client apps

Beyond category-level controls, we set a hard backend frequency cap on total notifications per user per week for essentially every client app, regardless of how many individual features or teams might otherwise want to send one, because even a series of individually well-justified notifications adds up to a genuinely overwhelming total volume once several product teams are each sending their own independently. A user doesn't experience notification fatigue as five separate reasonable messages. They experience it as one app that won't stop interrupting them.

We typically start new apps around a conservative cap of two to three notifications per week outside of genuinely time-sensitive transactional ones, like a booking confirmation or a delivery update, and adjust upward carefully based on actual opt-out and uninstall data rather than an internal team's assumption about what users can tolerate.

Beyond category-level controls, we set a hard backend frequency cap on total notifications per user per week for essentially every client app, regardless of how many individual features or teams might otherwise want to send one, because even a series of individually well-justified notifications adds up to a genuinely overwhelming total volume once several product teams are each sending their own independently.

Rich notifications versus plain text, and when the extra effort pays off

Modern push notifications can include an image, an inline action button, or even a small amount of interactive content directly in the notification itself, and we've found this genuinely lifts engagement for the right use case, a product photo on a price-drop alert, a quick accept-or-decline button on a booking request, meaningfully more than an equivalent plain-text notification saying the same thing.

The extra production effort isn't worth it for every notification type, though. We reserve rich notifications for the small number of high-value, high-frequency triggers where the lift in engagement clearly justifies the added design and technical work, and keep lower-priority, less frequent notifications as simple, fast-to-implement plain text.

What re-engagement looks like for a user who's already turned notifications off

A meaningful share of users deny or later revoke notification permission entirely, and treating that as a lost cause wastes a genuinely recoverable audience. We build a lighter, secondary re-engagement path for these users instead, typically email or an in-app message shown the next time they do open the app, rather than assuming the only path back is convincing them to re-enable push notifications specifically.

This secondary path has recovered meaningful engagement on more than one client app from users who'd already opted out of push entirely, which tells us the underlying issue for most of these users was rarely notifications as a concept, it was specifically how a previous experience with notifications had made them feel before they turned the feature off.

How we measure whether a notification strategy is actually working

Open rate on an individual notification tells only part of the real story, since a notification can get opened out of habit or curiosity without actually driving the meaningful behavior it was meant to encourage. We track a fuller funnel for every notification type: sent, opened, and then the specific downstream action it was designed to prompt, a completed booking, a resumed session, a finished purchase, so we're optimizing for genuine outcomes rather than just the easy, surface-level open rate metric.

Notification types that show a strong open rate but a weak downstream action rate get flagged for a rewrite or removal, since a notification that gets opened and then ignored is quietly training users to stop paying attention to that specific channel altogether, which costs more in the long run than simply not sending it in the first place.

We review this full funnel monthly for every client app with an active notification program, retiring or rewriting the weakest-performing notification types on a regular schedule rather than letting a stale, underperforming one linger indefinitely just because nobody got around to revisiting it.

Start a project

Want this applied to your site?

We run a Core Web Vitals and SEO audit before quoting any performance marketing engagement, and we're happy to share what we'd find on yours.