The Notification Trap
A government agency launches a citizen-facing app. Users install it. Within two weeks, 40% have disabled notifications because the app sent them 15 updates about their application status — including "Your application is being reviewed" sent seven times as it moved between internal processing queues.
This is not a hypothetical. We inherited a project where the notification system had been designed as a mirror of the internal processing workflow, not as a user communication strategy.
What Citizens Actually Want to Know
The question to answer before designing a single notification: what information, if received at exactly the right moment, would make the citizen's life meaningfully better?
For a tax filing app: "Your return has been received and is being processed." Not: "Status changed to PROC_QUEUE_ASSIGNED."
For a permit application: "Your permit has been approved. Download it here." Not: 14 intermediate status updates.
Notification Taxonomy
Actionable: The user needs to do something. These should be immediate. "Your application requires an additional document." "Your permit is ready for collection."
Informational: The user might want to know, but no action is required. These can batch. Daily digest is appropriate.
Transactional: Confirmations of actions the user took. Always immediate, never batched.
Marketing: News, announcements, service updates. These require explicit opt-in, separate from functional notification permissions.
Technical Architecture
Delivery Infrastructure
We use Firebase Cloud Messaging (FCM) as the push delivery layer for React Native and Flutter apps. It's reliable, handles delivery receipts, and manages the complexity of iOS/Android platform differences.
For SMS fallback (critical in Nigeria where smartphones are not universal), we integrate with a local telco API for SMS delivery of critical notifications.
Preference Centre
Every notification type is separately toggle-able. Users should be able to opt out of informational updates without losing critical actionable notifications.
Preference settings sync to the server. If a user reinstalls the app, their preferences are restored.
Delivery Analytics
Track delivery rate, open rate, and action rate per notification type. Use this data to prune notifications that users consistently ignore — they're adding noise without value.
The Trust Equation
Every notification you send is a small withdrawal from the trust account the citizen has opened with the application. Irrelevant or excessive notifications drain that account. When the balance hits zero, the user turns off notifications or deletes the app.
Design notification systems as if each notification costs you something. Because it does.