# Branch

Send the run down different paths by condition.

## Do things in Branch

Add a **Branch** step. Choose the row to see all its fields.

- [Evaluate Conditions](https://docs.gorunner.io/apps/branch#fields-f-evaluate): Route execution into the matching arm, then continue below the branch.

Later steps read a step’s output by its name: see [Use data from earlier steps](https://docs.gorunner.io/build/use-data-from-earlier-steps).

For a step-by-step guide, see [Branch and loop](https://docs.gorunner.io/build/branch-and-loop).

Not in your list? See [When an app isn’t here](https://docs.gorunner.io/apps/when-an-app-isnt-here#q-not-in-list).

## For developers

In the API, which calls apps pieces, Branch is `pieceId: "branch"` with `actionId: "evaluate"`. [Get an app](https://docs.gorunner.io/api/apps/get-app) returns every field.

It computes from its inputs only (`pure`). See [How versions and side effects work](https://docs.gorunner.io/apps#q-versions).

### Branch › Evaluate Conditions

Route execution into the matching arm, then continue below the branch. The workflow always carries on afterwards. To stop unless a condition holds, use the Filter app.

- **Branches · Required**: Define condition branches. Each branch has a set of conditions that must be met.
- **Execution Mode · Optional**: How to handle multiple matching branches. Options: Execute first matching branch, Execute all matching branches. Default: Execute first matching branch.

Source: https://docs.gorunner.io/apps/branch
