Skip to content

Condition split

The Condition split element lets you split a flow so that users follow different paths depending on their segment or tag values.

Define the user flow

Anchor link to

You can split the flow in two ways:

  • Segment: Split users based on whether they match an existing segment.
  • Tag: Split users into multiple branches based on tag values.
  • Event: Split users into branches based on values of an event attribute.

The Condition split element showing the options to split a flow by Segment or Tag

Split flow by segment

Anchor link to

To split a flow by segment:

  1. Select Segment as the condition for the user flow.
  2. Choose the segment you want to use, or create it from scratch right from the element. Learn more about creating Segments
  3. Click Save to apply the changes.

Condition split branches created by segment

  1. The flow will automatically create two branches:
    • Users in a segment: users who match the selected segment.
    • All other users: users who do not match the segment.

Configure a separate flow for each branch so that users receive content relevant to them.

Example

If you split the flow by the segment Premium subscribers, users in this segment can be routed to a flow that delivers a loyalty discount, while all other users follow a flow that shows an upgrade prompt.

Example of Condition Split flow for Premium vs. other users

Split flow by Tag

Anchor link to

To split a flow by Tag:

  1. Select Tag as the condition type.
  2. From the Tag dropdown, choose the tag you want to use (for example, Favourite_category). Ensure the required tag is created in advance. Learn more about tags
  3. Select the Condition (for example, is).
  4. Add one or more branches by specifying tag values (for example, Shoes, Dresses, Accessories).

You can create up to 10 branches per condition split.

  1. Click Save to apply the changes.

Condition Split branches created by tag values

  1. To compare the tag against another tag or an event attribute instead of a fixed value, see Compare branch values.
  2. Finally, create a separate flow for each branch to deliver personalized content based on the user’s tag.

Example

If you split the flow by the Favourite_category tag and define branches for Shoes, Dresses, and Accessories, users will be routed to the branch that matches their preference. All other users (for example, those without a specified category) will be routed to the All other users branch.

You need to create a separate flow for each branch, such as promotions for shoes, dresses, or accessories, to deliver personalized content.

Example of Condition Split flow for favourite clothing categories

Split flow by Event

Anchor link to

Use this option when you want to branch the journey based on the value of an event attribute collected earlier in the journey.

To split a flow by event attribute:

  1. Select Event as the condition type.
  2. In the Event from Journey dropdown, choose the event triggered earlier in the journey.
  3. Under Attribute, select the event attribute.
  4. For Date attributes, a Date frame dropdown appears next to Attribute: Specific date (default — pick an exact calendar date, same as before), Days ago, or Days ahead. Changing the attribute resets Date frame back to Specific date.
  1. Choose the condition logic, such as is, is not, is one of, is not one of, etc.

  2. Add one or more branches and specify a value for each. The value field’s label and how you fill it in depend on the operator:

    OperatorValue field labelHow to fill it in
    isWho has valueSTRING attributes: search suggested values based on previously recorded data as you type, or type your own value directly. Other attribute types: type the value directly.
    is notWho does not have valueSame as is.
    starts withWho has value starting withSame as is, STRING attributes only.
    ends withWho has value ending withSame as is, STRING attributes only.
    containsWho has value containingSame as is, STRING attributes only.
    is one ofWho has any ofSearch suggested values based on previously recorded data, for any attribute type. Type your own value and press Enter to add it as a separate branch value.
    is not one ofWho does not have any ofSame as is one of.
    greater or eqWho has value greater or equalINTEGER, DECIMAL, and DATE attributes only: type the value directly.
    less or eqWho has value less or equalSame as greater or eq.

    Picking a suggestion always fills the field with that suggestion’s full value — for contains, that means the full matching value, not just the substring you typed. The suggestion list is empty until Pushwoosh has recorded values for the selected event and attribute, which is expected for a newly created event or attribute.

  3. To compare the attribute against a tag or another event attribute instead of a typed value, see Compare branch values.

  4. Click Save to apply the configuration.

Condition Split branches created by event attribute

Example

If you split the flow based on the event WorkoutTypeSelected and the attribute type, you can route users to personalized onboarding flows depending on their selected workout:

  • Users with type = cardio → receive cardio workout tips
  • Users with type = strength → receive a strength training plan
  • Users with type = yoga → receive a guided yoga session
  • Users who did not select a workout type (All others) → receive a push message with generic sports tips, ensuring they still get relevant onboarding content even without a specific preference.

Each branch then contains targeted message elements that deliver relevant content.

Example of condition split flow branches by event attribute

Compare branch values

Anchor link to

Each branch condition checks a selected field against a comparison target. The target can be a fixed value you define, another field from the same user’s profile, or a value captured from an earlier step in the journey.

Which option you choose determines how dynamic the comparison is: a fixed value applies the same rule to everyone, while a tag or event attribute evaluates each user against their own data.

Next to the value field, choose one of three comparison modes:

ModeWhen to useExample
ValueYou decide a fixed target. The same value applies to every user. Use when one answer works for the whole audience.Send a shoes promo only when Favourite_category is Shoes.
TagThe target is another field on the same user’s profile. Each user is compared against their own data. Only tags of a compatible type appear in the list.Send a “ready to redeem” message only when integer_tag is greater or equals that user’s Points.
Event attributeThe target comes from something the user did earlier in this journey. Select the event, then the attribute. Only type-compatible attributes are listed.From abandoned cart, check if totalPrice is greater or equals the user’s Free_shipping_threshold tag.

Dynamic comparison is available for the following operators:

  • Tag branches: is and is not for any tag type except LIST; greater or equals and less or equals for INTEGER, DECIMAL, and DATE tags; is one of / is not one of for LIST tags.
  • Event branches: is and is not for any attribute type except LIST; greater or equals and less or equals for INTEGER, DECIMAL, and DATE attributes; is one of / is not one of for LIST attributes.

Example scenarios

Anchor link to

Tag compared to another tag

Anchor link to

Use case: reward or unlock content only when a user’s score reaches a personal target stored on their profile.

Why: a fixed threshold (for example, greater or equals 100) treats everyone the same. Comparing integer_tag to each user’s own Points tag routes people based on their individual target.

How to set it up:

  1. Select Tag as the condition type.
  2. From the Tag dropdown, choose integer_tag.
  3. Set the condition to greater or equals.
  4. For the branch value, choose Tag, then select Points.

Users whose integer_tag is greater than or equal to their own Points follow this branch. Everyone else goes to All other users.

Condition Split branch comparing an integer tag to another tag

Tag compared to an event attribute

Anchor link to

Use case: after a purchase or cart event, decide whether the user’s stored score still covers the amount from that step.

Why: the amount is different for each session. Comparing the profile tag to the event’s totalPrice uses the real value from earlier in the journey instead of guessing a fixed value.

How to set it up:

  1. Select Tag as the condition type.
  2. From the Tag dropdown, choose integer_tag.
  3. Set the condition to greater or equals.
  4. For the branch value, choose Event attribute, then select the trigger event and the totalPrice attribute.

Users whose integer_tag is greater than or equal to the totalPrice from that earlier event follow this branch. Everyone else goes to All other users.

Condition Split branch comparing an integer tag to an event attribute

Event attribute compared to a tag

Anchor link to

Use case: after abandoned cart, check whether the cart already qualifies for free shipping or a bonus, then send the matching recovery message.

Why: cart total comes from the journey event. The free-shipping threshold can differ per user and is stored on the profile as the Free_shipping_threshold tag. Comparing totalPrice to each user’s own Free_shipping_threshold puts qualified carts on one branch (for example, “complete checkout for free shipping”) and the rest on another (for example, “add more to unlock free shipping”).

How to set it up:

  1. Select Event as the condition type.
  2. From Event from Journey, choose PW_AbandonedCart.
  3. Under Attribute, select totalPrice.
  4. Set the condition to greater or equals.
  5. For the branch value, choose Tag, then select Free_shipping_threshold.

Users whose abandoned-cart totalPrice is greater than or equal to their Free_shipping_threshold follow this branch. Everyone else goes to All other users.

Condition Split branch comparing an event attribute to a tag