Template Syntax
Voodflow uses a {{double-brace}} syntax to inject dynamic values into text fields — node labels, email subjects, URLs, message bodies, and any field that accepts a string.
Basic Field Access
{{field_name}}Reads a top-level key from the current execution context (merged input + variables).
Examples
| Template | Resolves to |
|---|---|
{{email}} | The email key from the previous node's output |
{{input.name}} | Explicit input namespace, key name |
{{item.price}} | Field price of the current For Each iteration item |
{{variables.api_key}} | A workflow variable set by Set Variable node |
Nested Access (Dot Notation)
{{order.customer.address.city}}Traverses nested objects/arrays using dot notation. Equivalent to data_get($context, 'order.customer.address.city').
Special Variables
| Tag | Description |
|---|---|
{{now}} | Current datetime formatted per VOODFLOW_DATE_FORMAT |
{{date}} | Alias for {{now}} |
{{timestamp}} | Unix timestamp (integer) |
{{workflow.id}} | The ID of the current workflow |
{{workflow.name}} | The name of the current workflow |
{{execution.id}} | The ID of the current execution |
Array Access
To access a specific element of an array, use numeric indexing:
{{items.0.name}} → first item's name
{{items.1.price}} → second item's priceFallback / Default Values
If a tag cannot be resolved (the key does not exist), it renders as an empty string "". There is no built-in fallback syntax; use the Expression node or PHP Code node if you need conditional defaults.
Usage Contexts
Node Configuration Fields
Most text fields in node configurations support {{tags}}:
To Email: {{item.email}}
Subject: Order #{{order.id}} confirmed
Body: Dear {{customer.name}}, your order total is {{order.total}}
URL: https://api.example.com/users/{{user_id}}/profileHTTP Request — URL & Headers
URL: https://api.openai.com/v1/chat/completions
Header: Authorization: Bearer {{variables.openai_token}}Send Webhook — Body Payload
The Send Webhook node resolves {{tags}} in its body templates before sending.
Send Mail / Send WhatsApp — Body
Full HTML bodies support {{tags}}:
<h1>Hi {{item.first_name}} {{item.last_name}},</h1>
<p>Your invoice #{{invoice.number}} for €{{invoice.total}} is ready.</p>Expression Syntax
The Expression node extends the template syntax with mathematical and string operations:
{{input.subtotal}} * 1.22
$upper($trim({{input.name}}))
{{quantity}} >= 10 ? 0.15 : 0.05
$dateFormat({{created_at}}, "d/m/Y")See Expression Node for the full function reference.
Escaping Braces
To output a literal {{ or }} in a template, escape with a backslash:
\{{not_a_tag\}}Renders as the literal text {{not_a_tag}}.