# Decision

> Decision node for splitting flows into two paths based on boolean conditions.

## What it does

Splits a process into two paths based on a JavaScript true/false condition.

## Configuration reference

| Field | Required | Default | Description |
|---|---|---|---|
| **Expression** | Yes | None | JavaScript expression that evaluates to a boolean. Access upstream output with `$vars.<nodeName>.<property>`. |
| **True branch label** | No | `True` | Label shown on the true/yes output handle. |
| **False branch label** | No | `False` | Label shown on the false/no output handle. |

## Writing condition expressions

Conditions use the same JavaScript environment as the Script node:

```javascript
// Simple comparison
$vars.httpRequest1.output.statusCode === 200

// Multiple conditions
$vars.data.status === "approved" && $vars.data.amount > 1000

// Null check
$vars.script1.output != null

// String check
$vars.user.role === "admin"
```

The expression accepts any JavaScript value — it doesn't need to be a strict boolean. Any truthy value takes the true branch; any falsy value takes the false branch.

## Examples

### Example 1 — Branch on HTTP status code

**Expression:** `$vars.httpRequest1.output.statusCode === 200`

- **True** → process the response
- **False** → handle the error

### Example 2 — Approval gate

**Expression:** `$vars.reviewForm1.output.approved === true`

- **True** → continue process
- **False** → notify requester of rejection

### Example 3 — Null guard

**Expression:** `$vars.fetchUser1.output != null`

- **True** → proceed with user data
- **False** → handle missing user

## When to use this vs Switch

| Use Decision when... | Use Switch when... |
|---|---|
| You have exactly two outcomes (yes/no, pass/fail, approved/rejected) | You have three or more outcomes |
| The condition is a single boolean expression | You're matching a value against multiple cases |

## Related pages

- **[Switch node](node-switch.md)** — for three or more branches
- **[Variables and data flow](variables-and-data-flow.md)** — `$vars` syntax and expression patterns
- **[Error handling](flow-error-handling.md)** — handling failures vs conditional branching
