Imagine: you launch a push campaign at 10:00 AM Monday, but half your users are in different time zones, and a third are already in the flow of tasks. One well-timed notification for a specific user is more effective than ten sent universally. Our team has implemented similar solutions for 20+ apps — we have 5+ years of experience in push notifications and 50+ completed projects. Contact us for an audit of your system.
Why Universal Send Time Is Inefficient?
Users open notifications at different times: morning checks, lunch breaks, evening leisure. Time zones and habits influence when a push will be noticed. Sending at an average time leads to missed notifications. According to Urban Airship, time-personalized notifications increase engagement by 25%. Savings in marketing budget due to higher CTR can reach 30–40%.
What Is Optimal Send Time Really?
The goal: for each user, predict the time of day they are most likely to open a notification. This is a classic regression or classification problem on time series with historical open data. Optimizing send time with machine learning notifications boosts CTR by 2–3 times compared to one-size-fits-all campaigns.
Input features for the model:
- Notification open history with timestamps (last 90 days)
- Day of week and hour for each event
- Content type (transactional, marketing, editorial)
- Device time zone
- Time of last in-app activity
Target variable: probability of open for each time slot (24 slots × 7 days = 168 binary classifiers or one multiclass).
Solution Architecture: From Heuristics to ML
Minimal non-ML option: heuristic based on aggregated statistics. Build a histogram of opens per hour for each user. Optimal time = hour with maximum opens in the last 30 days. Implemented in 1–2 weeks, works without ML infrastructure.
ML option: model at segment or individual user level. For segments (if per-user data is scarce): cluster users by activity patterns via K-Means or DBSCAN. Obtain clusters: "early birds" (6–9 AM), "office workers" (12–1 PM, 6–8 PM), "night owls" (9 PM–12 AM). Each cluster gets its own optimal send time.
For individual prediction: LightGBM with time features. Batch training once per day, inference at task scheduling time.
How to Implement Cold Start for New Users?
New user — no open history. Use a fallback strategy:
- 0–7 days: Segment average (no data)
- 7–30 days: Individual pattern (10+ events)
- 30+ days: Full individual (sufficient history)
This is implemented via a feature flag in a feature store: user:{id}:send_time_model = "cohort" | "individual", automatically updated when thresholds are crossed.
Technical Send Pipeline
- Marketer creates campaign in CMS with parameter
send_time = "optimal". - At launch, tasks are distributed into a queue with delayed timing.
- For each user:
optimal_hour = get_optimal_send_time(user_id)→ task placed in Bull Queue with delay until the next optimal slot (today or tomorrow). - Worker sends push at the scheduled time.
For time-sensitive campaigns, set max_delay = 24h — if the optimal time has passed today, send tomorrow; if also not available tomorrow, send within the next available window in a week.
Frequency Capping and Metrics
Don't overload users with notifications regardless of optimal time. Best practice: no more than 2–3 marketing pushes per user per week. Implementation via Redis: INCR user:{id}:push_count:{week} on each send, EXPIRE at end of week. Before sending, check the counter.
The combination of optimal send time + frequency cap + relevance scoring forms a complete push notification intelligence system. Track metrics: CTR lift, send distribution by hour, user coverage with sufficient data. Dashboard in Grafana or Metabase with daily updates. Model degradation triggers retraining.
Implementation Options
| Option | Description | Timeline |
|---|---|---|
| Heuristic | Histogram + Bull Queue | 1–2 weeks |
| ML Segments | Clustering + cluster time | 3–5 weeks |
| Individual ML | LightGBM per-user + feature store + A/B | 8–12 weeks |
What’s Included in the Work
- Audit of current notification system and requirements gathering
- Model selection (heuristic, segment ML, individual ML) and implementation
- Integration with your codebase (Swift, Kotlin, Flutter, React Native)
- Send pipeline setup (Bull Queue, schedule)
- Frequency capping and A/B test implementation
- Model deployment (feature store, batch prediction)
- Monitoring dashboard (CTR, coverage, hourly distribution)
- Documentation and team training
- Guaranteed post-launch support and access to our push intelligence expertise
The implementation cost is calculated after analyzing the current system and audience size. Typical ROI is 5x within the first 6 months. Request a consultation for an accurate proposal — contact us to discuss your project.







