Use Journey actions to control how and when users move through your Journey, personalize experiences, and test outcomes.

Wait

Delay the user’s Journey progression by a specific amount of time—minutes, hours, days, or weeks.

Use it to:

  • Space out messages and steps
  • Allow time for users to engage with a message before branching

A wait node with users currently waiting to progress in the journey


Wait until

Wait Until Action is currently in beta. To request access, contact support@onesignal.com with:

  • Your company name
  • Your OneSignal Organization ID
  • The OneSignal App ID(s) where you’d like access

Hold a user at this step until they meet specific conditions:

  • Entering a segment
  • Triggering a custom event (e.g., onboarding complete, purchase made)
  • Triggering a message event (e.g., message delivered, opened, or clicked)

You can set an expiration time. After the expiration:

  • Move users to a new step, or
  • Exit them from the Journey

You can also add multiple conditions and branch users based on the first condition they meet.

Wait Until user is in a segment or triggers a custom event


Time Window

Restrict when users can move to the next step in the Journey based on specific days and times.

Example: Only allow users to receive a message on weekends in the evening.

Screenshot showing an example of a time window node

How time window behavior works

If a user enters this node outside the allowed time:

  • OneSignal sets a timer to delay the user until the next available window
  • The entry time into the window is randomized

Example:
If your time window is Tuesdays from 1:00 PM to 6:00 PM PST, and a user hits the node on Monday, they may continue Tuesday at a random time like 5:45 PM.


Yes/No branch

Branch users based on segment membership or message behavior.

Segment membership

Create branches based on what segment a user is in.

Example:
If users are tagged by plan type:

  • “Free” branch = promote upgrade
  • “Paid” branch = highlight premium features

Message behavior

Branch based on interaction with previous messages in the Journey:

  • Push: Clicked, Delivered
  • Email: Clicked, Opened, Delivered

Note: Safari does not support Confirmed Delivery.


Split Branch

Randomly distribute users across different paths to test messaging, channels, or Journey flows.

An example of a 3-way split branch

Once a Journey is live, you cannot edit a Split Branch. To change the number of branches, create a new Journey.

How it works

  • Up to 20 branches
  • Set equal or custom percentage splits
  • Percentages round to whole numbers (e.g., 3-way split becomes 34/33/33)
  • Distribution may vary slightly with small sample sizes

Split branch settings

By default, users are re-randomized each time they re-enter a Journey.
To keep them on the same branch, turn off Randomize on re-entry.

Use the Tag User action to track which branch a user followed.

ABN Tests (Multivariate Testing)

Nest Split Branches to simulate more complex testing structures.

Example:
To split users equally across 3 variants:

  1. First branch: 33% vs 67%
  2. Under the 67% branch, add another 50/50 Split Branch

This gives ~33% on each path.

Control Groups

Test the impact of messaging by leaving one branch empty (no message nodes).

Choosing a winner

Once a winning variant is identified, update the branch to send 100% of traffic down that path.


Tag User

Use this action to apply or remove tags during a Journey.

Common use cases:

  • Track Journey progress (e.g., journeyStep: welcome)
  • Power in-app messages by tagging users at key moments
  • Exclude users from other Journeys using active tags

A simple onboarding/welcome flow

Example: onboarding flow control

  1. First step: Add a tag (e.g., onboardingJourney: active)
  2. Use this tag to create a segment for exclusion from other Journeys
  3. Last step: Remove the tag by setting the value to blank

A tag node settings to remove the tag from the user