Saltearse al contenido

Variables Dinamicas

Las variables dinamicas son un sistema de plantillas que permite referenciar datos de nodos anteriores, almacenamiento en memoria y funciones especiales dentro de los campos de configuracion de cualquier nodo.

Cuando el motor procesa la configuracion de un nodo, resuelve todas las expresiones {{...}} antes de ejecutarlo. Esto permite construir valores dinamicos basados en la informacion que fluye a traves del workflow.


Sintaxis basica - Referencia al nodo anterior

Sección titulada «Sintaxis basica - Referencia al nodo anterior»

La forma mas simple de variable dinamica accede a los datos de salida (data) del nodo inmediatamente anterior.

  • {{campo}} - Accede a data.campo del nodo anterior
  • {{campo.subcampo}} - Accede a propiedades anidadas
  • {{campo[0].nombre}} - Accede a elementos de arrays

Ejemplo:

Si el nodo anterior retorna:

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

Entonces:

  • {{email}} se resuelve a user@test.com
  • {{name}} se resuelve a Juan

Permite acceder al resultado de cualquier nodo del workflow usando su etiqueta (label).

  • {{@Nombre_Nodo.campo}} - Accede al resultado de un nodo especifico por su label
  • Los espacios en el nombre se reemplazan por guiones bajos
  • Los caracteres especiales se eliminan

Ejemplo:

{{@HTTP_Request.body.total}} obtiene el campo body.total del nodo cuya etiqueta es “HTTP Request”.

Esto es util cuando se necesita acceder a datos de un nodo que no es el inmediatamente anterior, sino uno anterior en el flujo.


Permite acceder a nodos anteriores usando su posicion relativa en el flujo de ejecucion.

  • {{#1.campo}} - Nodo anterior (1 paso atras)
  • {{#2.campo}} - Dos nodos atras
  • {{#3.campo}} - Tres nodos atras

Es util cuando los nombres de los nodos pueden cambiar pero la posicion relativa se mantiene estable.

Ejemplo:

Si el flujo ejecuta: Webhook -> Transform -> HTTP Request, y estamos en HTTP Request:

  • {{#1.resultado}} accede al campo resultado de Transform
  • {{#2.body}} accede al campo body de Webhook

Permiten leer variables almacenadas en el sistema de memorystorage.

  • {{var.nombre_variable}} - Lee una variable almacenada en memorystorage
  • {{var.usuario.email}} - Accede a propiedades anidadas de la variable
  • Las variables se crean con el nodo SetVariable y se leen con GetVariable
  • Persisten entre ejecuciones del workflow (tabla memorystorage)

Ejemplo:

Si previamente se almaceno una variable llamada empresa_nombre con el valor "Floogos S.L.", entonces {{var.empresa_nombre}} se resuelve a Floogos S.L..


Funciones integradas que generan valores dinamicos en el momento de la ejecucion.

  • {{$guid}} - Genera un UUID v4 unico
  • {{$timestamp}} - Timestamp actual en milisegundos
  • {{$datetime}} - Fecha y hora actual en formato ISO 8601
  • {{$randomInt min max}} - Numero entero aleatorio entre min y max

Ejemplos:

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

Permiten incluir contenido de forma condicional basandose en los datos disponibles.

Estructura basica if/else:

{{if data.status === 'active'}}
Bienvenido, usuario activo
{{else}}
Su cuenta esta inactiva
{{endif}}

Estructura con elseif:

{{if data.amount > 1000}}
Pedido grande
{{elseif data.amount > 100}}
Pedido mediano
{{else}}
Pedido pequeno
{{endif}}

Las condiciones se evaluan como JavaScript, por lo que se pueden usar operadores como ===, !==, >, <, >=, <=, &&, ||.


Permiten iterar sobre arrays de datos para generar contenido repetitivo.

Bucle basico:

{{loop data.items}}
- Producto: {{name}} - Precio: {{price}}
{{endloop}}

Bucle con limite:

{{loop data.items limit=5}}
{{name}}
{{endloop}}
  • limit controla la cantidad maxima de iteraciones
  • Dentro del loop, se accede a las propiedades del item directamente por su nombre (sin prefijo)

Ejemplo: Si data.items contiene [{"name": "Camiseta", "price": 20}, {"name": "Pantalon", "price": 40}], el resultado seria:

- Producto: Camiseta - Precio: 20
- Producto: Pantalon - Precio: 40

Las variables dinamicas se pueden usar en cualquier campo de texto de la configuracion de un nodo. Algunos ejemplos comunes:

  • URLs: https://api.example.com/users/{{user_id}}
  • Bodies: {"email": "{{@Form.email}}", "name": "{{@Form.nombre}}"}
  • Consultas SQL: SELECT * FROM users WHERE id = '{{user_id}}'
  • Mensajes: Hola {{var.nombre}}, tu pedido {{order_id}} esta listo
  • Asuntos de email: Confirmacion de pedido #{{order_id}}
  • Nombres de archivos: reporte_{{$datetime}}.pdf
  • Headers HTTP: Bearer {{var.api_token}}

SintaxisDescripcionEjemplo
{{campo}}Campo del nodo anterior{{email}} -> email del nodo anterior
{{campo.subcampo}}Propiedad anidada del nodo anterior{{address.city}} -> ciudad de la direccion
{{campo[0].prop}}Elemento de array del nodo anterior{{items[0].name}} -> nombre del primer item
{{@Nombre_Nodo.campo}}Campo de un nodo especifico por label{{@HTTP_Request.body.total}} -> total del body
{{#N.campo}}Campo de un nodo N pasos atras{{#2.email}} -> email de 2 nodos atras
{{var.nombre}}Variable de memorystorage{{var.empresa_nombre}} -> nombre de la empresa
{{$guid}}UUID v4 generado3f2a7b1c-9d4e-...
{{$timestamp}}Timestamp actual (ms)1679582400000
{{$datetime}}Fecha/hora ISO 86012026-03-23T10:30:00.000Z
{{$randomInt min max}}Entero aleatorio entre min y max{{$randomInt 1 100}} -> 42
{{if ...}}...{{endif}}Contenido condicionalVer seccion Condicionales
{{loop ...}}...{{endloop}}Iteracion sobre arraysVer seccion Bucles

A continuacion se muestra un workflow completo que utiliza varios tipos de variables dinamicas:

Escenario: Procesamiento de un pedido recibido por Webhook

Sección titulada «Escenario: Procesamiento de un pedido recibido por Webhook»

1. Nodo Webhook (label: “Webhook”)

Recibe los datos del pedido:

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

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

Llama a una API externa para verificar el pedido usando el ID recibido.

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

Aqui {{order_id}} se resuelve a ORD-2024-001 tomandolo del nodo anterior (Webhook).

3. Nodo Decision

Evalua el estado devuelto por la API.

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

Aqui {{@HTTP_Request.status}} accede al campo status del resultado del nodo con label “HTTP Request”.

4. Nodo SendMail (rama true)

Envia un correo de confirmacion al cliente.

  • Para: {{@Webhook.customer_email}}
  • Asunto: Confirmacion de pedido {{@Webhook.order_id}}
  • Cuerpo:
Estimado cliente,
Su pedido {{@Webhook.order_id}} por un total de {{@Webhook.total}} EUR ha sido confirmado.
Gracias por confiar en {{var.empresa_nombre}}.
ID de seguimiento: {{$guid}}
Fecha de confirmacion: {{$datetime}}

En este ejemplo:

  • {{@Webhook.customer_email}} obtiene el email del nodo Webhook
  • {{@Webhook.order_id}} obtiene el ID del pedido del nodo Webhook
  • {{var.empresa_nombre}} lee el nombre de la empresa desde memorystorage
  • {{$guid}} genera un identificador unico de seguimiento
  • {{$datetime}} inserta la fecha y hora actual de la confirmacion