Each person's own hour.
The biggest lift most apps ever see from push is not better copy — it is sending when that person actually looks at their phone. Intelligent Delivery learns each device's hour from its own sessions and taps and sends then, spread across the day, with quiet hours and caps still enforced. Elsewhere this sits behind an upgrade. Here it is a radio button in the composer, free.
delayed_option on the API as OneSignalThree signals, one hour, no black box.
Every decision is explainable on the person's page in the console: which hour, and why.
Sessions and taps, by hour
Each session the SDK reports and each first tap on a push adds weight to that device's hour of day. Taps count for more than opens; replays never inflate. Old evidence decays over a month, so a person who moves timezones is followed, not fossilised.
Personal, blended with the app's pattern
Each device's hour is a blend of its own decayed history and the app-wide pattern in its local time — the more evidence a device has, the more personal the hour, and the profile shows the confidence. With no personal evidence it follows the app's pattern; a brand-new app with no history at all sends now, so a first install never waits a day for its welcome.
Spread, held, reported
Sends land inside the chosen hour, jittered so a campaign does not fire in one second, and never inside quiet hours or over a frequency cap. The report shows how far the spread has run and what basis each device got.
A per-person send can take up to a day to finish; the audience is fixed when sending starts. Exact rules in the API reference.
Same push, three people, three hours.
Sent at their 8am
Forty sessions in the morning window over the last month. Basis on their profile: personal.
Sent at their 11pm
Same push, same campaign, fifteen hours later — inside the app's quiet-hours setting? Then held until the window opens, and the report says so.
Sent at the app's hour
No personal history yet, so the app-wide pattern in their timezone decides. Basis: app-default. Next week they will have their own.
Compose, translate, summarise — nothing sends by itself.
A model in the console, on a short leash. It drafts into the form for you to review; it never presses send.
Grounded in what already worked
A plain-English prompt becomes a title, a body and a campaign name — written against your own app's best-performing messages, verbatim, plus feature-level patterns pooled across apps. Never another app's copy.
Every language row, filled
Add languages to a template and fill them in one click; personalization tokens pass through untouched. Review, then send.
Your audience, in plain English
On click, a few sentences on audience health, recent sends and one suggestion — for the teammate who does not read funnels.
Agents, with the caps still yours
OpenPush AI drafts segments and journeys for your approval, and your own coding agent can do the same over MCP — all inside the frequency caps, quiet hours and holdout floors the server enforces. A model proposes; the platform decides what can go out, and nothing sends until you confirm.
Model calls are server-side only; the provider is listed on the sub-processor page. No subscriber data is sent to the model.
Questions.
Is Intelligent Delivery free?
Yes, on every app, to a million MAU. It is a radio button in the composer and a field on the API.
Does it need a new SDK?
The learned-hour mode gets sharper with the session signal the current SDKs send; taps on pushes count on any version. The timezone mode needs nothing but a timezone on the device, which the SDK already reports.
What if I need a push out right now?
Choose "now". Transactional pushes — a code, a receipt, a security alert — should never wait for an hour, and the composer says so.
Does it work with Journeys?
Journeys send at the step they reach; per-person timing inside a journey step is on the roadmap. Quiet hours and caps apply inside journeys already.