# Condition

Use **Condition** when you want a workflow to take a different path depending on the value of an earlier step's output or a start input. The Condition step evaluates a boolean expression and routes execution down a **TRUE** or **FALSE** branch. Both branches must eventually rejoin at a single merge step before the workflow can continue.

Reach for this step when you need if/else logic, gated steps (for example, only send an email when a score is above a threshold), or lightweight A/B splits inside a workflow.

## Configuration

| Option             | Required | Description                                                                                                                                                      |
| ------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name               | No       | Label for the step in the workflow canvas.                                                                                                                       |
| Condition          | Yes      | The boolean expression that decides which branch runs. Built in the **Condition builder** as one or more rows, optionally nested in `AND` / `OR` / `NOT` groups. |
| Branches rejoin at | —        | Read-only. Shown once both branches converge on a merge step.                                                                                                    |

Add this step from the **Utilities** group in **Search steps...**. In the step picker, the label is **Condition**.

When you insert a Condition, Fetch Hive automatically creates an empty **TRUE** branch and an empty **FALSE** branch that both initially point at whatever step used to follow the insertion point. Use the `+` handles on each branch to add steps into that side of the branch from the canvas.

### Operators

The **Condition builder** supports these operators:

* Group operators: `AND`, `OR`, `NOT` — combine multiple rows or negate a sub-expression.
* Leaf operators:
  * `equals`, `does not equal`
  * `>`, `>=`, `<`, `<=`
  * `contains`, `starts with`, `ends with`
  * `is one of`
  * `exists`, `is empty` — take only a left-hand operand

### Operands

Each clause compares a **left** operand against a **right** operand (except `exists` and `is empty`, which only take a left operand).

Operands are either:

* A **workflow variable** — click **Insert Variable** to reference a start input (`{{variable_name}}`) or a previous step's output (`{{step_2.output.score}}`).
* A **literal value** — type a string, number, boolean, or array directly into the right-hand field.

## Output

Click **Run** in the step header to test the Condition. Fetch Hive shows the evaluated boolean result and a trace of the resolved left/right operands in **Output** after the run completes.

During a real workflow run, only one branch executes — the one matching the boolean result. The step's base reference is:

```
{{STEP_IDENTIFIER.output}}
```

Which resolves to `true` or `false` for later steps that want to reference the branch decision itself.

## Example

Add **Condition** from the **Utilities** group in **Search steps...**.

Set **Name** to something like `Score above threshold`.

In the **Condition builder**:

1. On the left operand, click **Insert Variable** and pick `{{step_2.output.score}}`.
2. Choose the `>` operator.
3. On the right operand, pick **Literal** and type `70`.

Click **Run** to confirm the expression evaluates the way you expect against the last test output. Then add the "send email" step into the **TRUE** branch on the canvas so it only runs when the score is above 70. The **FALSE** branch can stay empty (it rejoins the merge step directly) or you can add an alternative path.

## Notes

* The expression must be complete before saving. Every row needs both a left and right operand (except `exists` / `is empty`, which only take a left operand).
* The evaluator is lenient with numeric-looking strings — comparing `"70"` to `70` works as you would expect.
* A Condition can only be removed when both branches are empty. Removing a Condition cascades deletes every step inside the TRUE and FALSE branches, so clear the branches first if you want to keep those steps.
* Both branches must converge at a single merge step for the workflow to be valid. Fetch Hive surfaces a warning if the branches don't rejoin.
* Conditions cannot be nested inside another Condition branch yet.

See also: [Creating and Editing](/workflows/creating-and-editing.md), [Testing and Iteration](/workflows/testing-and-iteration.md), and [Error Handling](/workflows/error-handling.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fetchhive.com/workflows/workflow-steps/utility/condition.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
