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

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


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


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