Skip to main content

How to Route an Alta Flow with the Router Step (Conditional Branches)

Use the Router step inside Alta Flows to split a workflow into conditional branches — match on text, numbers, dates, booleans, or lists, with AND/OR logic and an Otherwise fallback.

Written by Katie Supporté

Summary

The Router step in Alta Flows lets you split a workflow into multiple conditional branches — so each prospect, record, or event goes down the path that fits it. This guide covers how to add a Router, define branch conditions, group them with AND/OR, and choose how matching branches execute.

Who this is for

Anyone building a Flow in Alta (app.altahq.com/workflows) who needs to react differently based on the data flowing through the workflow — for example, routing US vs. EU leads, splitting "replied" vs. "no reply", or sending VIP accounts to a different downstream step.

Before you start

  • You need an existing Flow with at least a trigger configured. If you haven't built one yet, see How to Build and Manage Flows in Alta.

  • You need to know what field or value you want to branch on. The Router compares values from earlier steps (trigger output, previous action output) against text, numbers, dates, booleans, or lists.

Step 1: Add the Router step

  1. Open your Flow in the workflow editor.

  2. Click the + button between two steps (or after a trigger).

  3. In the step picker, choose the Router step.

  4. The canvas now shows two starting branches plus a non-removable Otherwise branch on the far right. Otherwise is the fallback — it runs when no other branch matches.

Step 2: Choose how branches execute

Open the Router step settings on the right panel. Under Execute, pick one:

  • Only the first (left) matching branch — Alta evaluates branches left-to-right and runs the first one whose conditions are true. Use this when branches are mutually exclusive (e.g., region routing).

  • All matching paths from left to right — every branch whose conditions are true runs. Use this when paths can overlap (e.g., tag both "enterprise" and "in-region" runs).

If no user-defined branch matches, the Otherwise branch runs.

Step 3: Name and configure a branch

  1. In the Branches list, hover a branch and click the Rename (pencil) icon. Use clear names like "US prospects" or "Replied yes" — they appear on the canvas and in run logs.

  2. Click the branch row to open its Execute If condition editor.

Step 4: Build a single condition

A condition has three fields:

  1. First value — usually a variable from a previous step (e.g., {{trigger.country}}).

  2. Operator — choose from the operator dropdown (see the full list below).

  3. Second value — what you're comparing against (e.g., US). For operators that don't need a second value (Exists, Is empty, Is true, etc.), this field is hidden.

For any (Text) operator, you'll also see a Case sensitive toggle — leave it off for the usual case-insensitive match.

All operators

  • Text: Contains, Does not contain, Exactly matches, Does not exactly match, Starts with, Does not start with, Ends with, Does not end with

  • List: Contains, Does not contain, Is empty, Is not empty

  • Number: Is greater than, Is less than, Is equal to

  • Date/time: After, Before, Equals

  • Boolean: Is true, Is false

  • Existence: Exists, Does not exist

Step 5: Combine conditions with AND / OR

Most real branches need more than one rule. Inside a branch:

  • Click + And to add another condition to the same group. All conditions in a group must be true. A separator labelled And If appears between them.

  • Click + Or to start a new group. Any group can match. An OR separator appears between groups.

So the structure is: (condition AND condition) OR (condition AND condition). Each row also has a Remove button if you need to drop a condition.

Step 6: Add, duplicate, or remove branches

  • Add Branch — click + Add Branch at the bottom of the Branches list. A new empty branch is inserted before the Otherwise fallback.

  • Duplicate — hover a branch and click the copy icon. The new branch is named "Branch name Copy" so you can tweak conditions instead of building from scratch.

  • Delete — hover and click the trash icon. The delete button only appears when you have more than two user-defined branches, because a Router needs at least two to make sense.

  • Otherwise — cannot be deleted, renamed, or moved. Drop your fallback steps directly onto it.

Step 7: Add steps to each branch

Click the + button at the start of any branch on the canvas and add the steps you want that path to run — a Slack message, a CRM update, an AI action, anything available in the step picker. Branches can have completely different downstream steps; they don't have to mirror each other.

Step 8: Publish and test

  1. Save and publish your Flow.

  2. Send a test event through the trigger (e.g., test webhook, manual run).

  3. Open the Runs tab to see which branch each event took. Each run logs the matched branch name, so it's easy to spot routing mistakes.

Tips and common pitfalls

  • Order matters in "first match" mode. Branches evaluate left to right. Put your most specific rules on the left and the broadest on the right.

  • Watch for the "Incomplete condition" warning. A condition with an empty first or second value is highlighted with a warning icon and will block publishing. Fill both sides, or switch to a single-value operator like Exists.

  • "Incomplete settings" on a branch means at least one condition inside it is incomplete. Click into the branch to fix it.

  • Match the operator to the data type. Comparing a number with a Text operator can produce surprises — use (Number) Is equal to for numeric IDs, not (Text) Exactly matches.

  • Default mode is "Only the first matching branch." If you expect a record to hit two paths and only one runs, switch Execute to "All matching paths from left to right."

  • Use Otherwise as a safety net. Even when you think conditions cover every case, send Otherwise to a logging step or notification so unmatched records don't disappear silently.


Related

Did this answer your question?