Skip to main content
Engineering6 min readSeptember 18, 2025

Push Notification Architecture That Doesn't Annoy Users

How to build push notification systems that users keep enabled — delivery architecture, segmentation, frequency management, and measuring what works.

James Ross Jr.
James Ross Jr.

Strategic Systems Architect & Enterprise Software Developer

Push notifications are the most powerful engagement tool in mobile apps and the easiest to abuse. The difference between a notification system users appreciate and one they disable within a week comes down to architecture and restraint.

I have built notification systems for apps with hundreds of thousands of users. The technical architecture matters, but the product decisions around when and why to notify matter more.

Delivery Architecture

The delivery pipeline for push notifications involves more moving parts than most developers expect. Your backend generates a notification event, which feeds into a processing service that resolves targeting rules, renders the notification content, and dispatches to Apple's APNs and Google's FCM.

Build this as an asynchronous pipeline from the start. Notification delivery should never block your main application logic. Use a job queue — BullMQ with Redis, or a managed service like AWS SQS — to decouple event generation from delivery. This lets you handle burst traffic (a flash sale notification going to 100,000 users) without impacting your application's response times.

Store device tokens carefully. Users have multiple devices, tokens expire and rotate, and users can uninstall without your server knowing. Maintain a token registry that maps users to their active tokens, handles token refresh callbacks from APNs and FCM, and cleans up invalid tokens when delivery fails. A stale token database wastes resources and can trigger rate limiting from Apple and Google.

For delivery reliability, implement retry logic with exponential backoff. APNs and FCM are highly available but not infallible. A transient 503 should trigger a retry, not a lost notification. But set a maximum retry window — a notification that is 4 hours late is worse than no notification at all.

Delivery receipts matter for understanding your actual reach. FCM provides delivery analytics through the Firebase console. APNs offers less visibility, but you can track open rates by including a callback URL in your notification payload that fires when the user taps the notification.

Segmentation and Targeting

Sending the same notification to every user is the fastest path to high opt-out rates. Effective notification systems segment users and target messages based on behavior, preferences, and context.

Start with user-defined preferences. Let users choose notification categories — order updates, promotional offers, social activity, system alerts — and respect those choices absolutely. This is both a product decision and a legal requirement under GDPR and similar regulations.

Layer behavioral segmentation on top of preferences. A user who has not opened the app in two weeks should not receive the same notifications as a daily active user. New users in their first week benefit from onboarding prompts. Power users want alerts about new features. Segment your audience and craft messages for each segment.

Time-zone-aware delivery is essential for any app with a geographically distributed user base. A notification at 3 AM is not just ineffective — it damages trust. Store the user's timezone (or infer it from their device) and schedule delivery within appropriate hours. I typically use a delivery window of 9 AM to 9 PM local time, with exceptions for truly time-sensitive events like security alerts.

Frequency Management

The single most important product decision in notification strategy is how often you send. Too many notifications and users disable them. Too few and you lose the engagement channel entirely.

Implement a frequency cap at the system level. No user should receive more than a defined number of non-critical notifications per day, regardless of how many events trigger them. I typically start with a cap of 3-5 non-transactional notifications per day and adjust based on engagement data.

Aggregate related notifications. If a user receives 12 likes on a post in an hour, send one notification summarizing the activity, not twelve individual alerts. Batching requires a brief delay before sending — usually 5-15 minutes — to collect related events into a single notification.

Distinguish between transactional and marketing notifications. Transactional notifications (order shipped, payment received, security alert) should always be delivered immediately regardless of frequency caps. Marketing notifications (new feature, weekly digest, promotional offer) should respect frequency limits and user activity patterns.

Track opt-out rates by notification type. If a particular notification category has a high disable rate, that is a signal that you are sending too often or the content is not valuable. This data should feed back into your product decisions, not just your engineering metrics. The same analytics mindset that drives product decisions should govern your notification strategy.

Measuring Effectiveness

The metrics that matter for push notifications are delivery rate, open rate, conversion rate, and opt-out rate. Track all four and watch for trends.

Delivery rate tells you about your technical infrastructure — are notifications reaching devices? Open rate tells you about relevance — are users interested? Conversion rate tells you about value — did the notification lead to a meaningful action? Opt-out rate tells you about fatigue — are you sending too much?

A/B test notification copy, timing, and frequency. Small changes in wording or send time can meaningfully affect open rates. But test one variable at a time, and give tests enough volume to be statistically significant.

The best notification systems I have built share a common trait: they treat every notification as a promise to the user that what is inside is worth their attention. Keep that promise and users keep notifications enabled. Break it, and you lose the channel entirely. When planning your mobile app development, design your notification strategy as carefully as you design your core features.