Expresiones en n8n: Cómo Usar Variables y Datos Dinámicos

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.