Skip to content
Launching Oct 10 — OpenPush is free forever to 1M MAU per app, every feature included. Get early access →
ProductJourneysLive ActivitiesPricingCompareDocsChangelogMigrate from OneSignalSign in
Home / Journeys
Journeys · free · no cap on active journeys

Lifecycle flows that
run themselves.

A journey is a small program your audience walks through: enter on a segment or an event, send a push, wait, branch on what the person did, tag them, split them into arms with a holdout. On OpenPush it is free, uncapped, and built in a visual editor that saves every revision.

Included on the free plan · segment and event entrances · yes/no and weighted splits · quiet hours and caps enforced inside · API and node reference →
01 · The pieces

Five node kinds. That is the whole vocabulary.

Enough to express every lifecycle flow we have ever shipped in a game — and few enough that a new teammate reads a journey in one look.

Entrance

Segment or event

Enter everyone in a segment as they join it, or enter one person the moment your app records an event like level_up or purchase. Exit rules: on session, on an event, or when they leave the audience. Re-entry after a cool-down you choose.

Push

Send a template

Any template, with personalization tokens, images and actions. Frequency caps and quiet hours apply inside the journey exactly as they do to a broadcast — held, not dropped.

Wait

Durable timers

From one minute to a year. Timers survive restarts, and pausing a journey shifts every waiting person by the length of the pause.

Yes / no

Branch on behaviour

Did they click, receive or confirm the last push? Are they in a segment right now? Two arms, evaluated live.

Split

Weighted arms and holdouts

Two to twenty arms with weights that sum to a hundred. An empty arm is a holdout — the control group you need to know whether the journey earns anything.

Tag

Write back to the person

Set or merge data tags as people move — so the next segment, and the next journey, already know what happened.

02 · Example — the welcome ladder

New players, first three days.

A segment entrance for players whose first session was in the last day; three pushes, each one skipped if the previous one was tapped.

Entrance · segment
New players

first_session within 24 hours; exit when they leave the segment

Push
Welcome to the flock

template "Welcome", with the player's name

Wait
1 day
Yes / no
Clicked the welcome?

yes → skip ahead · no → the nudge

Push
Your first reward is waiting

template "Daily Reward"

Tag
onboarding = done
{ "name": "Welcome ladder", "audience": { "kind": "segment", "included_segment_ids": ["seg_new_players"] }, "early_exit": { "when_not_in_audience": true }, "nodes": [ { "id": "n1", "kind": "send_push", "template_id": "tpl_welcome", "next": "n2" }, { "id": "n2", "kind": "wait", "seconds": 86400, "next": "n3" }, { "id": "n3", "kind": "yes_no", "condition": { "kind": "on_notification_action", "node_id": "n1", "action": "clicked" }, "yes": "n5", "no": "n4" }, { "id": "n4", "kind": "send_push", "template_id": "tpl_daily_reward", "next": "n5" }, { "id": "n5", "kind": "tag", "tags": { "onboarding": "done" } } ] }

Illustrative — the exact schema is in the Journeys API reference.

03 · Example — the event trigger

The moment someone levels up.

One line in your app — OpenPush.trackEvent("level_up", ["level": 10]) — enters that person into the journey within seconds. Every qualifying event starts its own run, so two level-ups are two rewards.

Entrance · event
level_up

where level is greater than or equal to 10

Push
Level 10 unlocked

template "Level Up Reward", the level filled in from the event

Tag
tier = veteran
Wait
2 days
Yes / no
In segment "Spenders"?

yes → done · no → one offer

Push
Nightfall skin, half price

template "Skin Sale A"

04 · Example — win-back with a holdout

Lapsed spenders, and proof it worked.

The journey vendors love to show you — with the part they leave out: a control arm. Without the holdout you cannot tell whether the push brought people back or they were coming anyway.

Entrance · segment
Lapsed spenders

last purchase over 30 days ago and level at least 20; exit on session

Split
90 / 10

ten percent are the holdout and get nothing

Push
Your base held

template "Comeback D7"

Wait
3 days
Yes / no
Came back?

a session exits the journey early — that is the win

Exit
Compared against the holdout

entered, completed, exited early — per arm

What is included

Segment and event entrances; push and in-app message steps; wait, wait-until-event and time windows; tag; yes/no on segment membership and on what the person did with the previous push; weighted splits with holdout; Live Activity and webhook steps; goals that end a run when the person converts; exit and re-entry rules; per-node counts; a visual editor with saved revisions; and the REST API. From your coding agent: the MCP server reads journeys and their stats and prepares journey drafts — activation stays with you, in the console. Personal journeys, opt-in per app, choose each person's next step from options you define. Email and SMS steps are not part of OpenPush.

Straight answers

Journeys questions.

How many journeys can I run?

As many as you like, with as many steps as you like. There is no plan tier that raises a cap, because there is no cap.

Do caps and quiet hours apply inside a journey?

Yes — exactly as they do to a broadcast. A push a journey wants to send during someone's quiet hours is held and released when the window opens; a push over their frequency cap is held, not dropped, and the journey's report shows it.

Can I see it before I trust it?

Yes. Install the OpenPush.ai App, link your phone, and the sample workspace lets you run the welcome ladder, the level-up trigger and the win-back journey against your own device in minutes — with the waits compressed so you are not waiting a day to see step two. The app →

Can I edit a journey that is running?

Yes. Every save is a revision; a live revision cannot remove a node someone is currently standing on, and pausing shifts every timer by the length of the pause. Resume, and nobody is skipped.

Build the whole lifecycle

Not one hop.

Free forever to 1M MAU · read the pledge