Variables & Conditions

Pass data between workflow steps with template variables and branch execution with condition nodes.

Template Variables

Template variables let you reference output from previous workflow steps in action config fields. Any field with a {{ }} icon supports template variables.

Syntax

{{@nodeId:NodeLabel.field}}
PartMeaning
@nodeIdThe internal ID of the source node
NodeLabelThe display label of the source node
.fieldPath to a specific field in the node's output

How It Works

When a step executes, its output is stored in a map keyed by node ID. The standard output format is:

{
  "success": true,
  "data": {
    "text": "Generated content here",
    "model": "claude-sonnet-4-20250514"
  }
}

When you reference {{@nodeId:Generate Text.text}}, the engine:

  1. Looks up the output for nodeId
  2. Automatically unwraps the data object
  3. Accesses the text field

Examples

Reference trigger input:

{{@triggerId:Webhook.event}}

Reference AI-generated text from a previous step:

{{@abc123:Generate Text.text}}

Reference nested fields:

{{@def456:Get Customer.data.email}}

Use in an email body (template textarea):

Hello {{@abc123:Get Customer.data.name}},

Your order {{@triggerId:Webhook.orderId}} has been processed.

Summary: {{@def456:Generate Text.text}}

Inserting Variables

You don't need to manually type the syntax. In template-enabled fields:

  1. Type {{ to start
  2. A dropdown appears showing available nodes and their output fields
  3. Select a node and field to insert the full reference

Supported Field Types

Template variables work in these config field types:

  • Template Input — Single-line text with variable support
  • Template Textarea — Multi-line text with variable support

Plain text, number, and select fields do not support template variables.

Condition Nodes

Condition nodes let you branch workflow execution based on boolean expressions.

Adding a Condition

  1. Click the + node to add a new action
  2. Select the Condition action (built-in system action)
  3. Connect the condition node to two downstream paths — one for true, one for false

Expression Syntax

Condition expressions evaluate to true or false. You can use:

Operators:

  • Comparison: ===, !==, >, <, >=, <=
  • Logical: &&, ||, !

Values:

  • Variables from previous steps: {{@nodeId:Label.field}}
  • String literals: "active", "high"
  • Number literals: 42, 3.14
  • Boolean literals: true, false

Expression Examples

Check if a status equals a value:

{{@abc123:Get Customer.status}} === "active"

Check a numeric threshold:

{{@def456:Score Lead.score}} > 80

Combine conditions:

{{@abc123:Get Customer.status}} === "active" && {{@def456:Score Lead.score}} > 50

Check for existence (truthy):

{{@abc123:Generate Text.text}} !== ""

Security

Condition expressions are validated before execution:

  • Only whitelisted operators are allowed (comparison, logical, literals)
  • Arbitrary code execution is blocked
  • Invalid expressions cause the condition step to fail with a clear error

Branching Behavior

When a condition evaluates:

  • True: Execution follows the "true" edge to the next connected node
  • False: Execution follows the "false" edge to the alternate path

Each branch can contain any number of subsequent action steps.

Data Passing Patterns

Linear Chain

The simplest pattern — each step reads from the previous one:

Trigger → Generate Text → Send Email
         (writes text)    (reads text)

Fan-Out

Multiple steps read from the same source:

        ┌→ Send Slack (reads classification)
Classify ┤
        └→ Create Ticket (reads classification)

Conditional Routing

Use a condition to route data to different paths:

Trigger → Score → Condition (score > 80)
                     ├→ True: Send Welcome Email
                     └→ False: Add to Review Queue

Tips

  • Reference only data produced by upstream steps (nodes that execute before the current one).
  • Test with realistic data to verify template variable resolution.
  • Use the Runs panel to inspect actual resolved values for each step.
  • Keep references simple — avoid deeply nested chains when a simpler design works.

Next Steps

How is this guide?

On this page