← Todos los recursos

n8n · RECURSO GRATUITO

Tu primer flujo en n8n: tres retos sin IA ni claves

Practica tres retos de diagnóstico en el navegador: interpreta datos, limpia un asunto y elige la rama. Después repítelos con n8n real. Tres retos originales con pistas y soluciones; no envían mensajes ni necesitan una API de pago.

20–35 minutos orientativos. Puedes parar y repetir a tu ritmo.

HTML independiente, imprimible como PDF. Sin registro.

Practica tres retos de n8n aquí

Laboratorio de diagnóstico. Analizas nodos y salidas ficticias ya preparadas. No se ejecutan n8n, expresiones, webhooks ni modelos. No necesitas instalar nada ni crear una cuenta para empezar. Después repite los tres retos en tu instancia de n8n con las instrucciones de más abajo.

Ir a n8n real

Preparando el diagnóstico…

Guardar en mi cuenta envía solo tus respuestas, notas y caso seleccionado. No guarda evidencias consultadas ni comprobaciones; no hay guardado automático. Sin cuenta puedes practicar y descargar tus respuestas. No escribas secretos ni datos personales. Puedes exportar o borrar estos guardados con las herramientas de privacidad de WordPress.

Repite los tres retos con n8n real

El playground analiza salidas preparadas. Construye ahora los nodos en tu instancia, ejecuta con datos ficticios y compara INPUT y OUTPUT. No necesitas comprar el curso para seguir estas instrucciones.

Qué necesitas: Para el playground basta un navegador con JavaScript, sin cuenta. Para repetir la práctica real necesitas una instancia propia de n8n. Puede ser local con Docker siguiendo la documentación oficial o una instancia que ya tengas; no hace falta contratar n8n Cloud para estos nodos. La instalación local requiere Docker, espacio y configurar tú la cuenta de propietario. No publiques el editor ni desactives su autenticación. Datos ficticios; no necesitas comprar el curso ni registrarte en Labs.

Tu resultado: Un flujo Manual Trigger → Edit Fields → Edit Fields → IF con dos salidas y una tabla de tres pruebas que puedas explicar.

1. Crea una solicitud ficticia

Crea un workflow nuevo e inactivo. Añade Manual Trigger y conéctalo a Edit Fields (Set). Usa asignaciones manuales y crea id=S-GRATIS y asunto con espacios alrededor de No imprime. Ejecuta todo el workflow y abre OUTPUT en vista JSON. Un item no es una ejecución: al repetir tendrás una nueva ejecución con otro resultado, no dos solicitudes acumuladas.

Campos de Edit Fields:
id (String): S-GRATIS
asunto (String):   No imprime  
Necesito una pista

Conecta los dos nodos. Escribe los valores como texto literal; todavía no hace falta una expresión.

Ver solución de este reto
Manual Trigger → Edit Fields
Salida esperada: {"id":"S-GRATIS","asunto":"  No imprime  "}

Las llaves muestran un objeto y cada campo tiene un nombre. Ejecutar otra vez no duplica un efecto externo porque todavía no existe ningún envío.

Comprueba: Un item con id y asunto de texto. Conserva la salida observada, no una captura de otra ejecución.

2. Limpia sin perder el original

Añade otro Edit Fields. Crea asunto_limpio como expresión y activa Include Other Input Fields para conservar id y asunto original. La normalización elimina espacios extremos, pero no decide si el asunto es suficiente. Prueba un texto normal, solo espacios y un campo ausente.

={{ String($json.asunto ?? "").trim() }}
Necesito una pista

Activa Expression en el valor. $json es el item actual; trim() no cambia las palabras del interior.

Ver solución de este reto
No imprime → No imprime
   (solo espacios) → texto vacío
Campo ausente → texto vacío

?? cubre null o ausencia. String garantiza texto y trim quita extremos. Esta práctica presupone entradas de texto o ausentes; el curso completo añade validación estricta del tipo para rechazar objetos.

Comprueba: asunto_limpio no tiene espacios extremos y el id sigue presente. No has borrado asunto original.

3. Decide por dos caminos

Añade IF con una condición String sobre asunto_limpio, operación is not empty. En la salida true conecta un Edit Fields que añada estado=lista_para_revision; en false, otro con estado=incompleta. Conserva los campos de entrada en ambos. Ejecuta tres veces con los casos anteriores. Ninguna rama envía correos ni significa que alguien haya resuelto la solicitud.

IF: {{ $json.asunto_limpio }} → String → is not empty
true  → estado = lista_para_revision
false → estado = incompleta
Necesito una pista

Las dos salidas del IF representan condiciones opuestas. Etiqueta ambas para que el resultado sea visible.

Ver solución de este reto
Asunto: No imprime → lista_para_revision
Asunto: espacios → incompleta
Asunto: ausente → incompleta

El valor normalizado decide el camino. No uses asunto original para el IF porque una cadena con espacios puede parecer no vacía. Las dos ramas deben conservar id para poder explicar qué ocurrió.

Comprueba: Una ruta por caso, sin duplicados ni envíos. Puedes justificar por qué una entrada incompleta no sigue.

Tu turno

Cambia id a S-OTRO y el asunto a Necesito mi factura. Predice la rama. Después prueba asunto=null. Registra entrada, asunto_limpio y estado. Exporta el JSON y revisa que no contenga datos fijados personales ni credenciales antes de compartirlo.

Ver solución y explicación
S-OTRO + Necesito mi factura → lista_para_revision
S-OTRO + null → incompleta
Tabla de prueba: entrada | normalización | estado observado

La categoría del tema no importa para esta condición: solo comprueba que haya texto después de normalizar. Esto no es IA ni una revisión semántica. El siguiente paso sería validar el tipo, consultar un servicio y registrar efectos con control de duplicados.

Explícalo con tus palabras

  • ¿Qué diferencia hay entre el asunto original y asunto_limpio?
  • ¿Por qué recibir texto no autoriza a enviar una respuesta?
  • ¿Qué datos dejarías fuera de un export público?

Repite con datos distintos antes de marcarlo como practicado. Esta es una autoevaluación, no una certificación.

Si te atascas: dudas de esta práctica

Detente, lee el mensaje y vuelve al último paso que pudiste comprobar. No necesitas acertar a la primera.

¿Necesito pagar n8n Cloud o una API de IA?

Estos nodos no requieren una API de pago ni IA. Puedes utilizar una instancia local propia. Instalarla requiere Docker y configurar tu cuenta; si eliges un servicio comercial, revisa sus condiciones y coste por separado.

Veo la expresión escrita como texto.

Activa Expression en el valor de Edit Fields. La salida debe contener el texto normalizado, no las llaves de la expresión. Ejecuta todo el flujo de nuevo y revisa OUTPUT.

He perdido el identificador.

Revisa Include Other Input Fields en el nodo de transformación y en las dos salidas. No inventes un identificador nuevo para ocultar la pérdida: vuelve a conservar el original.

Las dos rutas parecen aceptar un asunto con espacios.

Comprueba que IF usa asunto_limpio y que el nodo anterior ejecutó trim. Quita datos fijados si estás reutilizando una salida de otra prueba.

Antes de dar la práctica por terminada

  • Puedo explicar el item que sale de cada nodo.
  • Conservo el asunto original y normalizo en otro campo.
  • Demuestro una ruta válida y otra incompleta sin enviar mensajes.

Si aún dudas, repite el paso con datos ficticios nuevos. Puedes guardar la práctica para continuar más tarde.

Para consultar un concepto: Documentación oficial de Edit Fields (Set).

Guarda tu siguiente paso

Todo el recurso es gratuito y puedes descargarlo sin cuenta. Si te registras, podrás guardar esta práctica y retomarla desde Mi cuenta.

Entrar y guardar Crear cuenta gratis

Crear una cuenta no te suscribe a correos promocionales.