Profundizamos en n8n, tipos de nodos, buenas prácticas y un workflow que te avisa si necesitarás paraguas

jul. 1, 2025

Este artículo forma parte de una serie:

En el capítulo anterior repasamos qué es la automatización de procesos y por qué herramientas como n8n se han vuelto imprescindibles para conectar servicios y reducir tareas manuales. Allí también mostramos cómo desplegar n8n en Docker en cuestión de minutos y cuáles son sus ventajas frente a soluciones privativas.

Retomando esa base, en esta entrega daremos un paso más: exploraremos la anatomía de n8n, aprenderemos a sacar partido a sus diferentes tipos de nodos y culminaremos con una automatización completa que enviará notificaciones cuando la probabilidad de lluvia supere un cierto umbral. Así tendrás una referencia práctica lista para adaptar a tus necesidades.

Tipos de nodos en n8n

La potencia de n8n reside en su amplio ecosistema de nodos, que ya supera las 350 integraciones. Cada nodo cumple una función concreta dentro del flujo de trabajo. Podemos agruparlos en varias familias principales:

Nodos Trigger

Inician el flujo cuando se cumple una condición. Ejemplos habituales son Cron, que ejecuta el workflow de forma periódica, o Webhook, que espera peticiones HTTP. También existen activadores de errores o eventos externos. Un ejemplo empresarial sería un flujo que lanza un informe cada madrugada mediante un Cron o un webhook que recibe pedidos de una tienda en línea para procesarlos automáticamente.

Nodos de transformación

Permiten modificar datos en mitad del flujo. Algunos de los más útiles son Set para definir campos, Function para ejecutar código personalizado, IF y Switch para tomar decisiones o Merge y SplitInBatches para combinar o dividir información.

Sirven para limpiar, transformar o ramificar los datos que viajan por tu workflow. Por ejemplo, puedes convertir unidades, validar campos obligatorios o dividir lotes de registros para procesarlos con calma.

Nodos de integración

Aquí encontramos conectores a APIs, bases de datos y servicios SaaS. El versátil HTTP Request cubre casi cualquier API REST, y además hay nodos específicos para plataformas populares. Piensa en conectores a CRM, herramientas de email marketing o bases de datos, incluso a modelos de Inteligencia Artificial. n8n actúa como puente entre sistemas que normalmente no hablan el mismo idioma.

Nodos de salida

Son los encargados de devolver datos o generar efectos externos. Pueden enviar correos electrónicos, publicar mensajes en canales de chat o responder a un webhook.

Son la parte visible de la automatización: pueden mandar correos, notificaciones o incluso crear registros en otros sistemas. Gracias a ellos cerramos el ciclo del workflow.

Expresiones y variables

n8n permite insertar valores dinámicos mediante expresiones del tipo {{$json.campo}}, así como variables de entorno con $env. El Expression editor facilita esta tarea mostrando una vista previa del resultado.

Puedes combinarlas con datos de la ejecución para construir URLs, mensajes personalizados o cálculos complejos. Gracias a la vista previa del editor es muy sencillo detectar errores antes de ejecutar el workflow.

Gestión de credenciales

Las conexiones a servicios externos se configuran como credential types. De esta forma, las claves no quedan incrustadas en los nodos y pueden reutilizarse de forma segura en distintos workflows.

Modularidad

Si un flujo crece demasiado siempre podemos reutilizar parte de la lógica con el nodo Execute Workflow, que ejecuta otros workflows como subrutinas. Profundizaremos en orquestaciones más complejas en futuras entregas.

Buenas prácticas iniciales

Al arrancar con n8n conviene adoptar algunas convenciones. Utiliza nombres descriptivos para los nodos y asigna un versión a tus workflows cuando vayas incorporando cambios. Aprovecha las variables de entorno para gestionar rutas, claves o umbrales de forma centralizada, y mantén las credenciales separadas de la lógica. Así podrás compartir tus automatizaciones sin exponer datos sensibles.

  • Prefiere nombres breves y significativos: “ConsultarMeteo” en lugar de “Paso1”.
  • Lleva un control de versiones incrementando un sufijo como v1, v2 cuando modifiques un workflow.
  • Centraliza valores variables en el menú Environment.
  • Guarda las credenciales en su sección para poder compartir el workflow sin exponer claves.

¿Lloverá hoy? Automatiza tu paraguas con n8n

Imagina que necesitas saber si la probabilidad de lluvia supera el 75 % en A Coruña para decidir si llevar paraguas al salir de casa. Con n8n y ntfy podemos montar una solución íntegramente open source que consulte la previsión en Open-Meteo y te envíe un aviso directo al móvil.

A grandes rasgos, el flujo se compone de los siguientes nodos:


    Schedule Trigger -> HTTP Request (Open-Meteo) -> Code (limpieza de datos) -> IF (¿Llueve?) -> Code (mensaje) -> HTTP Request (ntfy)

Nodo Schedule Trigger

Ejecuta el workflow cada hora. También se puede activar manualmente para pruebas.

Puedes configurar la periodicidad con una regla cron y así controlar con qué frecuencia se consulta la previsión. Para pruebas, el Manual Trigger permite forzar la ejecución en cualquier momento.

Nodo HTTP Request — Open‑Meteo

Lanza una petición con las coordenadas de la ciudad y recibe la probabilidad de precipitación horaria.

La llamada incluye latitud y longitud de A Coruña y solicita solo la probabilidad de precipitación. Open-Meteo no requiere autenticación, por lo que resulta perfecto para un ejemplo rápido.

Nodo Code — limpieza de datos

Convierte el valor recibido en un número limpio (probClean) que podremos comparar cómodamente. Aquí eliminamos símbolos como “%” y nos aseguramos de que siempre trabajamos con un número. De paso copiamos el resto de datos que devuelve la API por si quisiéramos utilizarlos después.

Nodo IF — la lógica de decisión

Compara probClean con el umbral configurado (75 % en este ejemplo). Si la probabilidad es igual o mayor, el flujo continúa.

Nodo Code — construcción del mensaje

El umbral se puede guardar como variable de entorno para cambiarlo sin editar el flujo. Si la condición no se cumple, el flujo finaliza silenciosamente. Genera un texto breve con el porcentaje de lluvia actual y una recomendación de llevar paraguas.

Aprovechamos un pequeño script para componer el texto final, incluyendo la ciudad y el porcentaje obtenido. También indicamos el umbral configurado, por si deseamos ajustarlo más adelante.

Nodo HTTP Request — ntfy

Envía el mensaje al topic definido para que todos los dispositivos suscritos reciban la alerta.

Usamos el método POST para publicar en el topic. Puedes alojar tu propio servidor ntfy o utilizar el servicio público. El mensaje llega en segundos a todos los dispositivos suscritos.

Ajusta el flujo a tu ciudad (y zona horaria)

Antes de ponerlo en marcha asegúrate de personalizar la automatización: basta con cambiar la latitud y longitud en el nodo HTTP Request por las coordenadas de tu localidad, indicar la zona horaria que prefieras añadiendo o modificando el parámetro timezone de la llamada a Open-Meteo (por defecto está en auto, pero puedes usar valores como Europe/Madrid, America/Bogota, etc. para recibir los datos con la hora local correcta), ajustar el umbral —si 75 % te parece demasiado conservador puedes moverlo a 60 % o 90 % y guardarlo como variable de entorno para no editar el canvas— y, por último, renombrar el topic de ntfy o apuntarlo a tu propio servidor si prefieres mayor privacidad. Con esa ligera edición tendrás exactamente el mismo flujo —pero adaptado a tu realidad meteorológica, tu huso horario y a la frecuencia de consulta que desees configurar en el Schedule Trigger.

Cómo recibir las notificaciones

ntfy funciona mediante topics a los que puedes suscribirte tanto desde un navegador como desde sus aplicaciones móviles. Solo debes abrir https://ntfy.sh/n8n_rain_alert_coruna y permitir las notificaciones. En el móvil, instala la app oficial, pulsa en “Subscribe” e introduce el mismo topic. Cuando el flujo se ejecute y el umbral se cumpla, recibirás un aviso inmediato.

Para probar que todo funciona puedes reducir temporalmente el umbral de lluvia y lanzar el workflow manualmente.

Workflow completo listo para importar

Si prefieres saltarte la configuración nodo por nodo, a continuación encontrarás el archivo JSON del workflow íntegro; basta con copiarlo y pegarlo en n8n › Workflows › Import from Clipboard para tener la automatización funcionando en tu instancia en cuestión de segundos.


    {
    "name": "Coruña Rain Alert",
    "nodes": [
        {
        "parameters": {
            "url": "https://api.open-meteo.com/v1/forecast",
            "options": {},
            "queryParametersUi": {
            "parameter": [
                {
                "name": "latitude",
                "value": "43.3618987"
                },
                {
                "name": "longitude",
                "value": "-8.4516519"
                },
                {
                "name": "hourly",
                "value": "precipitation_probability"
                },
                {
                "name": "forecast_days",
                "value": "1"
                },
                {
                "name": "timezone",
                "value": "Europe/Madrid"
                }
            ]
            }
        },
        "id": "0917a643-5f2c-4de8-b8bd-40c00ac3b0e5",
        "name": "Open-Meteo",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 2,
        "position": [
            40,
            -200
        ]
        },
        {
        "parameters": {
            "conditions": {
            "options": {
                "caseSensitive": true,
                "leftValue": "",
                "typeValidation": "strict",
                "version": 1
            },
            "conditions": [
                {
                "id": "64159b0b-7a8c-4def-a4a1-e8f5a00fe66d",
                "leftValue": "={{ $json.probClean }}",
                "rightValue": 75,
                "operator": {
                    "type": "number",
                    "operation": "gte"
                }
                }
            ],
            "combinator": "and"
            },
            "options": {}
        },
        "id": "0a5e5968-5208-439a-b0d2-a8292a96ee93",
        "name": "¿Llueve?",
        "type": "n8n-nodes-base.if",
        "typeVersion": 2,
        "position": [
            460,
            -200
        ]
        },
        {
        "parameters": {
            "requestMethod": "POST",
            "url": "https://ntfy.sh/n8n_rain_alert_coruna",
            "options": {},
            "queryParametersUi": {
            "parameter": [
                {
                "name": "message",
                "value": "={{ $json.message }}"
                }
            ]
            }
        },
        "id": "994383f0-ea3c-4e3e-a989-c67d68df124c",
        "name": "Enviar a ntfy",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 2,
        "position": [
            880,
            -280
        ]
        },
        {
        "parameters": {
            "rule": {
            "interval": [
                {
                "field": "hours"
                }
            ]
            }
        },
        "type": "n8n-nodes-base.scheduleTrigger",
        "typeVersion": 1.2,
        "position": [
            -200,
            -200
        ],
        "id": "eca394a8-e246-46cf-9e45-6e69ecbae4f7",
        "name": "Schedule Trigger"
        },
        {
        "parameters": {},
        "type": "n8n-nodes-base.manualTrigger",
        "typeVersion": 1,
        "position": [
            -200,
            -380
        ],
        "id": "96a4b090-8254-4c42-9658-a64a7ef06877",
        "name": "When clicking ‘Test workflow’"
        },
        {
        "parameters": {
            "jsCode": "const CITY_NAME = $json.CITY_NAME || 'A Coruña';\nconst THRESHOLD = 75;                   // mismo valor que en tu IF\nconst prob      = $json.probClean ?? 0; // por seguridad\n\nconst message = `🌧️ Alerta de lluvia en ${CITY_NAME}\\n` +\n                `Probabilidad actual: ${prob}% (umbral ${THRESHOLD}%)\\n` +\n                `¡No olvides el paraguas!`;\n\nreturn [{ json: { message } }];"
        },
        "type": "n8n-nodes-base.code",
        "typeVersion": 2,
        "position": [
            680,
            -280
        ],
        "id": "244b1f1a-7a9b-46c5-88c5-c3bcf80303c7",
        "name": "Code"
        },
        {
        "parameters": {
            "jsCode": "const raw = $json.hourly.precipitation_probability[0] ?? '';\nconst clean = Number(String(raw).replace('%','')) || 0;\nreturn [{\n  json: {\n    ...$json,        // copia todas las claves originales\n    probClean: clean // añade / sobrescribe esta clave\n  }\n}];"
        },
        "type": "n8n-nodes-base.code",
        "typeVersion": 2,
        "position": [
            260,
            -200
        ],
        "id": "d4f605da-6510-457f-b6ff-91e759cb0a40",
        "name": "Code1"
        }
    ],
    "pinData": {},
    "connections": {
        "Open-Meteo": {
        "main": [
            [
            {
                "node": "Code1",
                "type": "main",
                "index": 0
            }
            ]
        ]
        },
        "¿Llueve?": {
        "main": [
            [
            {
                "node": "Code",
                "type": "main",
                "index": 0
            }
            ],
            []
        ]
        },
        "Schedule Trigger": {
        "main": [
            [
            {
                "node": "Open-Meteo",
                "type": "main",
                "index": 0
            }
            ]
        ]
        },
        "When clicking ‘Test workflow’": {
        "main": [
            [
            {
                "node": "Open-Meteo",
                "type": "main",
                "index": 0
            }
            ]
        ]
        },
        "Code": {
        "main": [
            [
            {
                "node": "Enviar a ntfy",
                "type": "main",
                "index": 0
            }
            ]
        ]
        },
        "Code1": {
        "main": [
            [
            {
                "node": "¿Llueve?",
                "type": "main",
                "index": 0
            }
            ]
        ]
        }
    },
    "active": true,
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "ab2de324-0140-4cb4-82e2-d29794c8ba9a",
    "meta": {
        "instanceId": "eb33e9aab61107ad66c5bf7e89f3f25d9b300db2d14bc727d66c421b052d77fc"
    },
    "id": "IHLf3xhUSf20uGAB",
    "tags": []
    }

Hemos conocido los distintos tipos de nodos de n8n, varias buenas prácticas para comenzar con buen pie y un ejemplo real que demuestra lo sencillo que es conectar servicios abiertos para resolver problemas cotidianos. En las próximas entregas veremos cómo usar webhooks bidireccionales, sub‑workflows, colas de trabajo e incluso integraciones con IA para ampliar nuestras automatizaciones.

Happy Coding!

comments powered by Disqus

Artículos relacionados

Quizá te puedan interesar