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

# Condition

> Branch your workflow based on if/else logic.

The **Condition** node evaluates an expression and routes the workflow down one of two paths: **True** or **False**.

## Configuration

| Field        | Description                                                |
| ------------ | ---------------------------------------------------------- |
| **Field**    | The value to evaluate (reference a previous node's output) |
| **Operator** | The comparison operator                                    |
| **Value**    | The value to compare against                               |

### Available operators

| Operator                | Description                               |
| ----------------------- | ----------------------------------------- |
| `equals`                | Exact match                               |
| `not equals`            | Does not match                            |
| `greater than`          | Numeric comparison                        |
| `greater than or equal` | Numeric comparison                        |
| `less than`             | Numeric comparison                        |
| `less than or equal`    | Numeric comparison                        |
| `contains`              | String contains substring                 |
| `not contains`          | String does not contain substring         |
| `is empty`              | Value is null, undefined, or empty string |
| `is not empty`          | Value exists and is not empty             |

## Output handles

The condition node has two output handles:

* **True**: the workflow follows this path when the condition is met
* **False**: the workflow follows this path when the condition is not met

Connect downstream nodes to one or both handles.

### Branches that converge

If both the True and False branches eventually feed into the same downstream node, that node becomes an **implicit merge point**: it runs once, after whichever branch executed completes. This is how you run shared work "after either outcome" without duplicating the nodes on both sides.

```
                        ┌── True  → Send VIP email ──┐
Trigger → Condition ────┤                            ├── Log outcome
                        └── False → Send normal email ┘
```

`Log outcome` runs once, regardless of which branch the condition took. Same implicit-merge rule as [Parallel](/workflow-editor/nodes/parallel#branches-that-converge-on-a-shared-node): any node with two or more incoming connections is treated as a merge.

## Examples

### Check order value

* **Field**: `order.totalPrice`
* **Operator**: `greater than`
* **Value**: `100`

### Check if field exists

* **Field**: `customer.email`
* **Operator**: `is not empty`

### String matching

* **Field**: `order.status`
* **Operator**: `equals`
* **Value**: `fulfilled`

## Tips

* You can chain multiple condition nodes for complex logic (e.g., if A, then check B).
* Both the True and False branches are optional; you don't need to connect both.
* Use descriptive node labels like "Order > \$100?" so the workflow reads naturally.
