Variables Dinamicas
Que son las Variables Dinamicas
Sección titulada «Que son las 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 adata.campodel 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 auser@test.com{{name}}se resuelve aJuan
Referencia por nombre de nodo (@)
Sección titulada «Referencia por nombre de nodo (@)»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.
Referencia por posicion relativa (#)
Sección titulada «Referencia por posicion relativa (#)»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 camporesultadode Transform{{#2.body}}accede al campobodyde Webhook
Variables de memoria (var)
Sección titulada «Variables de memoria (var)»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 especiales ($)
Sección titulada «Funciones especiales ($)»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
Condicionales
Sección titulada «Condicionales»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}}limitcontrola 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: 40Donde se pueden usar
Sección titulada «Donde se pueden usar»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}}
Tabla resumen
Sección titulada «Tabla resumen»| Sintaxis | Descripcion | Ejemplo |
|---|---|---|
{{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 generado | 3f2a7b1c-9d4e-... |
{{$timestamp}} | Timestamp actual (ms) | 1679582400000 |
{{$datetime}} | Fecha/hora ISO 8601 | 2026-03-23T10:30:00.000Z |
{{$randomInt min max}} | Entero aleatorio entre min y max | {{$randomInt 1 100}} -> 42 |
{{if ...}}...{{endif}} | Contenido condicional | Ver seccion Condicionales |
{{loop ...}}...{{endloop}} | Iteracion sobre arrays | Ver seccion Bucles |
Ejemplo completo
Sección titulada «Ejemplo completo»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