Skip to content
Flows

Branching

Create conditional navigation paths based on user responses.

Branching

Branching lets you send users down different paths in a flow based on what they select on a screen. Instead of building separate flows for each audience segment, a single flow can adapt in real time using Branch nodes.

How branching works

  1. A screen presents a component with selectable options (e.g., a radio group asking "What is your role?").
  2. The user selects an option.
  3. The flow reaches a Branch node. Its source can be the screen right before it or any earlier screen in the flow.
  4. The Branch node looks up the user's answer on its source screen and routes them to the matching path.

Each option maps to an outgoing edge on the Branch node. If a user selects "Product Manager", they follow the edge labeled "Product Manager". If they select "Engineer", they follow a different edge.

Branchable components

Not every component supports branching. The following component types produce a response that a Branch node can evaluate:

ComponentResponse value
RadioGroupThe selected option's value.
NPSThe numeric score (0--10).
RatingThe numeric rating value.
DropdownThe selected option's value.
CheckboxThe set of checked values.
ButtonThe button's action value.
QuizThe selected option's value.
ChipThe selected chip's value (single select).
SegmentedThe selected segment's value.

The Branch node's source screen has to contain a branchable component. By default the source is the screen right before the split; you can pick any earlier screen instead.

Setting up a Branch node

  1. Open your flow in the flow builder.
  2. Click the + Add Node button on the canvas and select Add Branch.
  3. Connect the flow to the Branch node. The screen right before it is preselected as the source.
  4. To branch on an answer given earlier, pick that screen in the source dropdown. Only screens the user passes before reaching the split are listed.
  5. Choose the component, and the Branch node reads its options.
  6. For each option, draw an edge from the Branch node to the screen you want the user to see next.

Branch edges are labeled with the option value they correspond to. These labels update automatically if you rename options in the component.

Branching on an answer from an earlier screen requires iOS SDK 1.3.0 or Android SDK 1.3.0. Older SDK versions take the split's default path for such splits. Splits that read the screen right before them work on every version.

Example: role-based onboarding

Suppose your onboarding flow asks users to choose their role with a RadioGroup that has three options: Designer, Developer, and Product Manager.

Start → Welcome Screen → Role Selection Screen → Branch
                                                    ├── "Designer"        → Design Tips Screen → End
                                                    ├── "Developer"       → API Intro Screen   → End
                                                    └── "Product Manager" → Dashboard Tour      → End

Each role sees a tailored follow-up screen. The rest of the flow (welcome screen, final screen) remains shared.

Saving responses as user attributes

When a user responds to a branchable component, you can save that response as a user attribute for future targeting and personalization. This is handled through the response save feature:

  1. The SDK captures the user's selection on the branchable component.
  2. The response is saved to the user's profile as an attribute (e.g., role = "Designer").
  3. Future flows can use this attribute in trigger conditions to target or exclude specific segments.

This creates a feedback loop -- responses from one flow inform the targeting of subsequent flows.

Saved response attributes overwrite any previous value for the same key. If a user completes the same flow twice and picks a different option, the attribute updates to the latest selection.

Branching vs. condition nodes

Both Branch nodes and Condition nodes create diverging paths, but they serve different purposes:

Branch nodeCondition node
InputUser's response on the source screen (the previous screen or any earlier one).A logical expression you define (user attributes, event properties).
TimingEvaluated after the user interacts.Evaluated before the user sees the next screen.
PathsOne per option value (many).Two: Yes or No.
Use casePersonalize the flow based on what the user answered.Skip or show screens based on existing user data.

You can combine both in the same flow. For example, use a Condition node early in the flow to check if the user is on a paid plan, and later use a Branch node to split based on a survey response.

Tips

  • Keep branches shallow -- deeply nested branches are harder to maintain. If you have more than two or three levels of branching, consider splitting into separate flows.
  • Preview each path -- use the preview feature to walk through every branch and verify the experience before publishing.

On this page