Skip to content

Dynamic Variables

Dynamic variables are a template system that allows referencing data from previous nodes, memory storage, and special functions within the configuration fields of any node.

When the engine processes a node’s configuration, it resolves all {{...}} expressions before executing it. This allows building dynamic values based on the information flowing through the workflow.


The simplest form of dynamic variable accesses the output data (data) of the immediately previous node.

  • {{field}} - Accesses data.field of the previous node
  • {{field.subfield}} - Accesses nested properties
  • {{field[0].name}} - Accesses array elements

Example:

If the previous node returns:

{
"email": "user@test.com",
"name": "Juan"
}

Then:

  • {{email}} resolves to user@test.com
  • {{name}} resolves to Juan

Allows accessing the result of any workflow node using its label.

  • {{@Node_Name.field}} - Accesses the result of a specific node by its label
  • Spaces in the name are replaced by underscores
  • Special characters are removed

Example:

{{@HTTP_Request.body.total}} gets the body.total field from the node whose label is “HTTP Request”.

This is useful when you need to access data from a node that is not the immediately previous one, but an earlier one in the flow.


Allows accessing previous nodes using their relative position in the execution flow.

  • {{#1.field}} - Previous node (1 step back)
  • {{#2.field}} - Two nodes back
  • {{#3.field}} - Three nodes back

This is useful when node names may change but the relative position remains stable.

Example:

If the flow executes: Webhook -> Transform -> HTTP Request, and we are at HTTP Request:

  • {{#1.resultado}} accesses the resultado field of Transform
  • {{#2.body}} accesses the body field of Webhook

Allow reading variables stored in the memorystorage system.

  • {{var.variable_name}} - Reads a variable stored in memorystorage
  • {{var.user.email}} - Accesses nested properties of the variable
  • Variables are created with the SetVariable node and read with GetVariable
  • They persist between workflow executions (memorystorage table)

Example:

If a variable named empresa_nombre was previously stored with the value "Floogos S.L.", then {{var.empresa_nombre}} resolves to Floogos S.L..


Built-in functions that generate dynamic values at execution time.

  • {{$guid}} - Generates a unique UUID v4
  • {{$timestamp}} - Current timestamp in milliseconds
  • {{$datetime}} - Current date and time in ISO 8601 format
  • {{$randomInt min max}} - Random integer between min and max

Examples:

  • {{$guid}} -> 3f2a7b1c-9d4e-4a8f-b6c2-1e5d7f9a0b3c
  • {{$timestamp}} -> 1679582400000
  • {{$datetime}} -> 2026-03-23T10:30:00.000Z
  • {{$randomInt 1 100}} -> 42

Allow including content conditionally based on the available data.

Basic if/else structure:

{{if data.status === 'active'}}
Welcome, active user
{{else}}
Your account is inactive
{{endif}}

Structure with elseif:

{{if data.amount > 1000}}
Large order
{{elseif data.amount > 100}}
Medium order
{{else}}
Small order
{{endif}}

Conditions are evaluated as JavaScript, so you can use operators such as ===, !==, >, <, >=, <=, &&, ||.


Allow iterating over data arrays to generate repetitive content.

Basic loop:

{{loop data.items}}
- Product: {{name}} - Price: {{price}}
{{endloop}}

Loop with limit:

{{loop data.items limit=5}}
{{name}}
{{endloop}}
  • limit controls the maximum number of iterations
  • Inside the loop, item properties are accessed directly by their name (without prefix)

Example: If data.items contains [{"name": "T-Shirt", "price": 20}, {"name": "Pants", "price": 40}], the result would be:

- Product: T-Shirt - Price: 20
- Product: Pants - Price: 40

Dynamic variables can be used in any text field of a node’s configuration. Some common examples:

  • URLs: https://api.example.com/users/{{user_id}}
  • Bodies: {"email": "{{@Form.email}}", "name": "{{@Form.nombre}}"}
  • SQL Queries: SELECT * FROM users WHERE id = '{{user_id}}'
  • Messages: Hello {{var.nombre}}, your order {{order_id}} is ready
  • Email subjects: Order confirmation #{{order_id}}
  • File names: report_{{$datetime}}.pdf
  • HTTP Headers: Bearer {{var.api_token}}

SyntaxDescriptionExample
{{field}}Field from previous node{{email}} -> email from previous node
{{field.subfield}}Nested property from previous node{{address.city}} -> city from address
{{field[0].prop}}Array element from previous node{{items[0].name}} -> name of first item
{{@Node_Name.field}}Field from a specific node by label{{@HTTP_Request.body.total}} -> body total
{{#N.field}}Field from a node N steps back{{#2.email}} -> email from 2 nodes back
{{var.name}}Variable from memorystorage{{var.empresa_nombre}} -> company name
{{$guid}}Generated UUID v43f2a7b1c-9d4e-...
{{$timestamp}}Current timestamp (ms)1679582400000
{{$datetime}}ISO 8601 date/time2026-03-23T10:30:00.000Z
{{$randomInt min max}}Random integer between min and max{{$randomInt 1 100}} -> 42
{{if ...}}...{{endif}}Conditional contentSee Conditionals section
{{loop ...}}...{{endloop}}Iteration over arraysSee Loops section

Below is a complete workflow that uses various types of dynamic variables:

Scenario: Processing an order received via Webhook

Section titled “Scenario: Processing an order received via Webhook”

1. Webhook Node (label: “Webhook”)

Receives the order data:

{
"order_id": "ORD-2024-001",
"customer_email": "cliente@email.com",
"total": 250.00
}

2. HTTP Request Node (label: “HTTP Request”)

Calls an external API to verify the order using the received ID.

  • URL: https://api.tienda.com/orders/{{order_id}}

Here {{order_id}} resolves to ORD-2024-001 taking it from the previous node (Webhook).

3. Decision Node

Evaluates the status returned by the API.

  • Condition: {{@HTTP_Request.status}} === 'confirmed'

Here {{@HTTP_Request.status}} accesses the status field of the result from the node with label “HTTP Request”.

4. SendMail Node (true branch)

Sends a confirmation email to the customer.

  • To: {{@Webhook.customer_email}}
  • Subject: Order confirmation {{@Webhook.order_id}}
  • Body:
Dear customer,
Your order {{@Webhook.order_id}} for a total of {{@Webhook.total}} EUR has been confirmed.
Thank you for trusting {{var.empresa_nombre}}.
Tracking ID: {{$guid}}
Confirmation date: {{$datetime}}

In this example:

  • {{@Webhook.customer_email}} gets the email from the Webhook node
  • {{@Webhook.order_id}} gets the order ID from the Webhook node
  • {{var.empresa_nombre}} reads the company name from memorystorage
  • {{$guid}} generates a unique tracking identifier
  • {{$datetime}} inserts the current date and time of the confirmation