Template Syntax
Templates make step configuration dynamic. They can read the trigger payload, earlier step outputs, workflow variables, connections, and environment values.
{{ fetch-customer.body.email }}{{ initial.accountId | default: "unknown" }}QuickFlo uses two expression forms:
- Liquid returns values and text inside step fields.
- JSONLogic evaluates branches and data predicates in If, Switch, Filter, Reduce, and Classify steps.
Choose the reference
Section titled “Choose the reference”| You need to | Read |
|---|---|
| Reference trigger data, step outputs, variables, connections, or execution context | Variables and step outputs |
| Transform strings, arrays, objects, dates, numbers, or phone values | Liquid filters |
| Write an If condition, Switch case, or data predicate | Conditions and branching |
| Define the expected shape and defaults for workflow input | Initial Data |
Three rules
Section titled “Three rules”- Reference a step by its step ID:
{{ fetch-customer.body }}, not{{ steps.fetch-customer.body }}. - Use autocomplete instead of guessing a field path. It reflects the data available at the current step.
- Use a Liquid expression inside a JSONLogic operand when a condition needs workflow data:
{ "==": ["{{ fetch-customer.body.status }}", "active"] }Preserve template text
Section titled “Preserve template text”Use {% literal %} when another system should receive unresolved template syntax:
{% literal %}Hello {{name}}, your order {{orderId}} is ready{% endliteral %}The result is the raw string Hello {{name}}, your order {{orderId}} is ready.
Recursive values
Section titled “Recursive values”QuickFlo resolves templates recursively, up to five levels. An environment value can therefore point to another template:
{{ $env.MY_CONNECTION }}If MY_CONNECTION contains {{$connections.production-api}}, QuickFlo resolves the connection object. This is how environment connection redirection works.