Skip to content

Template Interpolation

The engine resolves {{path}} placeholders in step parameters at runtime. This lets you personalize steps using instance context and previous step outputs.

Available paths

  • {{context.data.email}}Read from the instance's data context
  • {{context.config.sender}}Read from the instance's config context
  • {{outputs.send_email.status}}Read output from a previous step by block ID

Nested JSON paths and array indexing are supported. Missing paths resolve to null.

Fallback defaults

Use the | pipe syntax to provide a default value when a path is missing or null.

// Uses context.data.name, or "there" if missing
"Hello {{context.data.name|there}}"

// Numeric default
"Retry after {{context.data.delay_seconds|30}} seconds"

Expression support

Conditions in router routes and loop conditions support comparisons, arithmetic, logical operators, and parentheses.

// Comparisons
"context.data.opened == true"
"context.data.score >= 80"
"context.data.plan != "free""

// Logical
"context.data.opened == true && context.data.clicked == false"

// Arithmetic
"outputs.score_step.value * 2 > 100"

// Parentheses
"(context.data.tier == "pro" || context.data.trial == true) && context.data.active == true"