> ## Documentation Index
> Fetch the complete documentation index at: https://docs.os.default.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Logic and timing steps

> Branch the workflow on conditions or percentages, or pause it for a set amount of time.

These steps control the shape of a workflow: send it down different paths based on conditions
or a fixed split, or pause it before the next step runs.

<Note>
  Add a step in the **Workflows** builder with **Add Node**.
</Note>

## Multi-Branch

Splits the workflow into paths and sends it down the first one whose conditions match.

You define the branches on the step itself:

* Add a branch and give it a name, for example `Enterprise`.
* Set its conditions, for example the company size is greater than `500`. Conditions can be
  combined with **and** / **or**.
* A default **Else** branch catches anything that matches no other branch. You cannot remove
  the Else branch.

Branches are checked in order, and the first match wins. For example, branch on company size
to route enterprise leads to one path and everyone else to the Else branch.

## Run Experiment

Splits the workflow into paths by a fixed percentage instead of a condition. Use it for A/B
tests, canary rollouts, or sampling a percentage of leads.

You define the branches on the step itself: add a branch, give it a name, and set its
percentage weight. Weights across all branches must add up to 100.

Run Experiment appears once it is enabled for your workspace.

| Field              | What it does                                                                                   | How to use it                                                                                                                                                                                                          |
| ------------------ | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Assignment key** | The value used to keep the same lead in the same branch every time.                            | Optional. Pick an email or domain value from an earlier step. Defaults to the trigger person's email; when no value can be resolved, each run is assigned independently instead of staying consistent for that person. |
| **Experiment key** | Namespaces this step's split so it doesn't share assignments with another Run Experiment step. | Optional. Defaults to this step. Only set it if you want two Run Experiment steps to share the same assignment.                                                                                                        |

For example, add branches `Variant A` (50) and `Variant B` (50) to send half of leads down
each path, with the same lead always landing in the same variant on repeat visits.

## Time Delay

Pauses the workflow for a set amount of time, then continues automatically.

| Field          | What it does      | How to use it                                                            |
| -------------- | ----------------- | ------------------------------------------------------------------------ |
| **Time Delay** | How long to wait. | Set a duration in seconds, minutes, hours, and days, for example 2 days. |

For example, add a 1-day delay after a meeting is booked before sending a follow-up.

{/* TODO screenshot: Run Experiment step with two weighted branches */}

{/* verified against product:
   logic FE → apps/default-fe/.../node-sidebar/logic/LogicNodeConfigContent.tsx
   logic + time-delay behavior
     → apps/default-api/.../workflows/registry/nodes/{logic/logic,time-delay/time-delay}.ts
   Run Experiment (percentage-split node, display.label "Run Experiment")
     → apps/default-api/.../workflows/registry/nodes/logic/percentage-split.ts
     feature-flagged (FEATURE_FLAGS.ENABLE_PERCENTAGE_SPLIT_NODE); documented normally per
     house convention for built-but-flag-gated features (not a "coming soon" case).
   NOTE: branches are edge-defined; registry-driven labels may false-flag in the lint. */}
