Expresiones n8n variables dinámicas es uno de los usos más prácticos de n8n. Las expresiones de n8n son uno de los conceptos más poderosos de la plataforma. Te permiten hacer referencia a datos de nodos anteriores, transformar valores y crear lógica dinámica dentro de tus workflows. En esta guía completa aprenderás todo sobre ellas.
¿Qué son las Expresiones en n8n?
Las expresiones son fragmentos de código JavaScript que puedes usar dentro de los campos de configuración de los nodos. Se escriben entre dobles llaves: {{ expresión }}.
Por ejemplo, si quieres usar el email de un item recibido en el nodo anterior, escribirías: {{ $json.email }}
Variables Principales de n8n
$json
Accede a los datos JSON del item actual. Es la variable más usada.
{{ $json.nombre }}→ Valor del campo «nombre»{{ $json.usuario.email }}→ Email dentro del objeto «usuario»{{ $json.items[0].precio }}→ Precio del primer elemento del array «items»
$node
Accede a los datos de un nodo específico por su nombre.
{{ $node["Webhook"].json.body.email }}→ Email del body del nodo «Webhook»{{ $node["Google Sheets"].json[0].nombre }}→ Primer registro del nodo Google Sheets
$items
Accede a todos los items de un nodo. Útil cuando necesitas datos de múltiples registros.
{{ $items("Webhook")[0].json.email }}→ Email del primer item del Webhook
$now y $today
Variables de fecha y hora muy útiles para workflows programados.
{{ $now }}→ Fecha y hora actual (objeto DateTime){{ $today }}→ Fecha de hoy{{ $now.toFormat('dd/MM/yyyy') }}→ Fecha formateada
$runIndex
Índice de la ejecución actual dentro de un loop. Empieza en 0.
Funciones Más Útiles
Manipulación de Strings
{{ $json.nombre.toUpperCase() }}→ NOMBRE EN MAYÚSCULAS{{ $json.nombre.toLowerCase() }}→ nombre en minúsculas{{ $json.nombre.trim() }}→ Elimina espacios al inicio y final{{ $json.texto.includes('palabra') }}→ true/false si contiene la palabra{{ $json.nombre + ' ' + $json.apellido }}→ Concatenar strings
Manipulación de Números
{{ $json.precio * 1.21 }}→ Precio con IVA (21%){{ Math.round($json.precio) }}→ Redondear al entero más cercano{{ $json.precio.toFixed(2) }}→ Dos decimales
Manejo de Fechas con Luxon
n8n incluye la librería Luxon para manejo de fechas:
{{ $now.toFormat('yyyy-MM-dd') }}→ Fecha en formato ISO{{ $now.plus({ days: 7 }).toFormat('dd/MM/yyyy') }}→ Fecha en 7 días{{ DateTime.fromISO($json.fecha).toFormat('dd MMMM yyyy') }}→ Parsear y formatear fecha
Operadores Ternarios (condicionales)
Los operadores ternarios son muy útiles para valores condicionales:
{{ $json.activo ? 'Activo' : 'Inactivo' }}{{ $json.descuento > 0 ? $json.precio * (1 - $json.descuento) : $json.precio }}
Cómo Activar el Editor de Expresiones
En cualquier campo de configuración de un nodo, verás un pequeño icono de relámpago o el símbolo {} a la derecha. Al hacer clic en él, cambias entre modo literal y modo expresión. En modo expresión puedes escribir tus expresiones dinámicas.
Errores Comunes con Expresiones
- «Cannot read property of undefined»: El campo que intentas acceder no existe. Usa
$json.campo ?? 'valor por defecto' - Expresión devuelve [object Object]: Estás accediendo a un objeto, no a un valor. Navega más profundo con punto:
$json.objeto.propiedad - Fecha en formato incorrecto: Usa Luxon para parsear y formatear correctamente
Ejemplo Práctico: Procesar Datos de un Formulario
Supón que recibes este JSON de un formulario:
{ "nombre": " juan perez ", "email": "JUAN@EMAIL.COM", "precio": 29.999, "fecha_nacimiento": "1990-05-15" }
En el nodo Set puedes transformar los datos:
- Nombre limpio:
{{ $json.nombre.trim().split(' ').map(w => w[0].toUpperCase() + w.slice(1)).join(' ') }} - Email en minúsculas:
{{ $json.email.toLowerCase() }} - Precio formateado:
{{ $json.precio.toFixed(2) }} € - Edad:
{{ Math.floor(DateTime.fromISO($json.fecha_nacimiento).diffNow('years').years * -1) }} años
Conclusión
Las expresiones de n8n son fundamentales para crear workflows dinámicos y potentes. Una vez que las dominas, puedes transformar, filtrar y manipular datos de cualquier forma sin necesidad de código complejo.


