Cómo migrar tus workflows de Pipedream a n8n
Actualizado el 13 de octubre de 2026
n8n no puede leer directamente una exportación de Pipedream, así que migrar significa convertir cada workflow al formato JSON propio de n8n: exportar tus proyectos de Pipedream, mapear cada trigger, paso y expresión a un nodo de n8n, reescribir los pasos de código o envolverlos en una capa de compatibilidad, recrear las credenciales y, al final, importar y hacer el cambio. Planea terminar antes de que Pipedream Workflows deje de funcionar el 31 de marzo de 2027, porque todos los datos de Workflows se borran a más tardar el 30 de abril de 2027.
Los pasos de esta guía sirven tanto si haces la conversión a mano como si usas una herramienta. La última sección explica qué partes automatiza Workflow Exit.
Antes de empezar
Necesitas tres cosas:
- Las definiciones de los workflows. El ZIP oficial de exportación del proyecto, un repositorio de GitHub Sync o el JSON de los workflows obtenido con la API REST de Pipedream. Consulta cómo exportar workflows de Pipedream.
- Una instancia de n8n. n8n Cloud o n8n 2.x self-hosted (en tu propio servidor). La elección depende sobre todo de tus pasos de código (paso 3).
- Acceso a cada app conectada. Las credenciales no se transfieren, así que alguien tiene que iniciar sesión en Slack, Google, Stripe y las demás apps para autorizar a n8n.
Pipedream Workflows está en modo de mantenimiento desde el 30 de septiembre de 2026. Workflows ya no recibirá novedades, así que no tiene sentido esperar.
Paso 1: exporta cada proyecto de Pipedream
En Pipedream, abre el proyecto, selecciona Settings, haz clic en Export Workflows y descarga project_export-<project_id>.zip desde el File Store del proyecto (documentación de Pipedream). El ZIP contiene un manifest.json y un archivo JSON por workflow con los triggers, los pasos, el código, las props configuradas y el contenido de las ramas.
Lee manifest.json antes que nada. Su lista warnings nombra cada prop secreta que se reemplazó por <redacted>, y el campo status muestra los workflows que quedaron fuera porque nunca se desplegaron o porque la exportación alcanzó su límite de 500 workflows o 256 MB.
Paso 2: haz inventario y clasifica
Antes de convertir nada, separa los workflows en tres grupos:
- Sencillos: trigger HTTP o programado (schedule), acciones de apps, pasos de código pequeños sin imports de npm.
- Requieren adaptación: pasos de código que importan paquetes npm, usan data stores, llaman a
$.flow.delayo$.flow.suspend, o leen en el código los tokens de cuentas conectadas. - Manuales: triggers de email, fuentes de eventos (event sources) privadas, componentes privados cuyo código no está en la exportación.
El informe de migración gratuito hace esta clasificación por ti. Arrastra el ZIP a la página: el informe califica cada workflow y lista los paquetes npm, las variables de entorno, los secretos ocultos y las cuentas conectadas que intervienen. Se ejecuta en tu navegador y la exportación no se sube.
Paso 3: elige entre n8n Cloud y self-hosted
Esta decisión depende sobre todo de npm. En n8n Cloud, el nodo Code solo puede usar dos módulos, crypto y moment, y el código Python no puede importar ninguna biblioteca, ni siquiera la estándar. n8n self-hosted puede habilitar cualquier paquete instalado mediante NODE_FUNCTION_ALLOW_EXTERNAL (documentación de n8n).
Si la mayoría de tus imports son clientes HTTP (axios, got, node-fetch) y bibliotecas de fechas, n8n Cloud te sirve: n8n trae this.helpers.httpRequest y Luxon integrados. Si dependes de SDKs, parsers o bibliotecas de Python, alojar n8n por tu cuenta te ahorra mucha reescritura. Los detalles están en la guía Pasos de código de Pipedream en n8n Cloud (en inglés).
Paso 4: mapea los triggers
| Trigger de Pipedream | Nodo de n8n | Notas |
|---|---|---|
| HTTP / Webhook | Webhook | URL nueva. Configura Respond como "Using 'Respond to Webhook' Node" si el workflow llama a $.respond. |
| Schedule (cada N, o cron) | Schedule Trigger | Usa la zona horaria del workflow o, si no tiene una configurada, la de la instancia. |
| Form | Form Trigger de n8n | La URL del formulario cambia. Revisa los nombres de los campos y cuáles son obligatorios. |
| Email (dirección única de Pipedream) | IMAP Email o Gmail Trigger | La dirección cambia. Paso manual. |
| Fuente de eventos de una app (p. ej., fila nueva, issue nuevo) | El nodo trigger de esa app en n8n, si existe | Si no existe, un Schedule Trigger más un HTTP Request que consulte la API periódicamente. |
| Fuente personalizada privada | Ninguno | Hay que reconstruirla a mano. Solo se exporta la clave del componente. |
Paso 5: mapea pasos, ramas y expresiones
Este es el mapeo central de conceptos. Casi todo es mecánico una vez que conoces las equivalencias.
| Concepto de Pipedream | Equivalente en n8n | Notas |
|---|---|---|
steps.trigger.event |
$('trigger').first().json |
En los webhooks, el cuerpo de la petición está en .body. |
steps.x.$return_value |
Item de salida del nodo x |
Un nodo Code convertido puede guardar el valor en una clave $return_value. |
$.export("name", value) |
Un campo en el item de salida del nodo | Se lee con $('x').first().json.name. |
$.respond({ status, headers, body }) |
Nodo Respond to Webhook | El nodo Webhook debe estar configurado para responder a través de él. |
$.flow.exit() / acción End Workflow |
return [] en un nodo Code, o un nodo If |
Si no hay items de salida, los nodos siguientes no se ejecutan. |
$.flow.delay(ms) / acción Delay |
Nodo Wait, Resume: After Time Interval | Para $.flow.delay en código, divide el paso en el punto de la llamada. |
$.flow.suspend() |
Nodo Wait, Resume: On Webhook Call | Envía $execution.resumeUrl donde usabas la URL de reanudación de Pipedream. |
$.flow.trigger(workflowId, payload) |
Nodo Execute Sub-workflow | El workflow llamado necesita un Execute Sub-workflow Trigger. |
| Bloque If/Else | Nodo If (dos ramas) o nodo Switch (más) | Pipedream ejecuta la primera rama que cumple la condición. |
| Bloque Switch | Nodo Switch | Mantén el orden de las reglas: decide qué rama se ejecuta. |
Data store (prop data_store, $.service.db) |
Datos estáticos del workflow (static data) o Data Tables | Los datos estáticos son de cada workflow; las Data Tables se comparten dentro de un proyecto. |
process.env.NAME |
$vars.NAME o $env.NAME |
$vars requiere un plan con Variables; $env solo funciona en self-hosted. |
Cuenta conectada (this.slack.$auth) |
Credencial de n8n en un nodo | Los nodos Code no pueden leer credenciales. |
Prop secreta (<redacted>) |
Credencial o Variable | Hay que volver a ingresar los valores. |
$.send.http / $.send.email |
Nodo HTTP Request / Send Email | |
Acción del registro de componentes (p. ej., slack-send-message) |
El nodo de la app en n8n, o HTTP Request | Consulta las notas por app (en inglés). |
Las expresiones de las props configuradas siguen el mismo patrón. Una prop de Pipedream como esta:
{{steps.trigger.event.body.email}}
se convierte en esta expresión de n8n, suponiendo que el nodo Webhook se llama trigger:
{{ $('trigger').first().json.body.email }}
Ponles a los nodos de n8n los mismos nombres que tenían los pasos en Pipedream. Así las expresiones siguen siendo legibles y cada referencia $('step_name') corresponde exactamente a un paso.
Paso 6: convierte los pasos de código
Cada paso de Node.js de Pipedream es un export default defineComponent({ ... }) con un método run({ steps, $ }). Un nodo Code de n8n es el cuerpo de una función que lee los nodos anteriores con $('name') y debe devolver un array de items, cada uno con la forma { json: { ... } }. La documentación del nodo Code de n8n también aclara que no se admiten las sentencias import, así que los módulos se cargan con require.
Un paso pequeño:
// Pipedream
export default defineComponent({
async run({ steps, $ }) {
const email = steps.trigger.event.body.email;
$.export("domain", email.split("@")[1]);
return { email };
},
});
// n8n Code node (Run Once for All Items)
const email = $('trigger').first().json.body.email;
return [{ json: { domain: email.split("@")[1], $return_value: { email } } }];
Los pasos más grandes requieren más trabajo: reemplazar los clientes HTTP por this.helpers.httpRequest, las bibliotecas de fechas por Luxon, process.env por Variables y los data stores por datos estáticos. Hay ejemplos de antes y después para cada caso en qué se rompe en los pasos de código en n8n Cloud (en inglés).
Paso 7: recrea credenciales, secretos y variables
Ningún secreto sobrevive a la exportación. Para cada workflow:
- Crea una credencial de n8n por cada cuenta conectada y selecciónala en los nodos correspondientes.
- Vuelve a ingresar las props secretas ocultas, ya sea en una credencial o como Variable de n8n. Las Variables están disponibles en n8n Cloud Pro y Enterprise, y en self-hosted Business y Enterprise.
- Pasa las variables de entorno de Pipedream a Variables, o a
$enven n8n self-hosted. Desde n8n 2.0,N8N_BLOCK_ENV_ACCESS_IN_NODEvaletruepor defecto, así que los nodos Code no pueden leer variables de entorno a menos que cambies ese ajuste (cambios incompatibles de n8n 2.0).
Por diseño, los nodos Code de n8n no pueden acceder a las credenciales. Si un paso de código de Pipedream usaba this.github.$auth.oauth_access_token, la solución limpia es mover esa llamada a la API a un nodo HTTP Request que use una credencial de GitHub en n8n.
Paso 8: importa en n8n
n8n ofrece varias vías de importación (documentación de exportación e importación):
- Editor: menú del workflow, Import from File, un JSON a la vez.
- CLI del servidor (self-hosted):
n8n import:workflow --input=workflow.json. n8n ahora recomienda su n8n CLI independiente y su formato de paquetes para mover workflows entre instancias, y planea declarar obsoletos los comandos de importación de la CLI del servidor en una fecha todavía sin definir. - API REST pública:
POST /api/v1/workflowscon un encabezadoX-N8N-API-KEY. La API de n8n está disponible en n8n Cloud Starter, Pro y Enterprise y en todas las ediciones self-hosted, pero no en la prueba gratuita de Cloud.
Los workflows se importan sin publicar. En n8n 2.x, un workflow se publica en lugar de activarse con un interruptor.
Paso 9: prueba, ejecuta en paralelo y haz el cambio
- Publica un workflow a la vez. Usa primero la URL de prueba del nodo Webhook y después la URL de producción.
- Reenvía eventos de muestra que hayas guardado y compara los resultados con lo que producía Pipedream. El historial de eventos no está en la exportación, así que guarda muestras antes de necesitarlas.
- Actualiza cada emisor de webhooks con la nueva URL de producción de n8n.
- Vigila la lista de Executions de n8n durante unos días y luego desactiva el workflow en Pipedream.
- Ten en cuenta que los datos estáticos del workflow solo se guardan en workflows publicados que se inician con un trigger o un webhook, no en las ejecuciones de prueba manuales (documentación de n8n). Los contadores y las claves de deduplicación se verán vacíos mientras pruebas en el editor.
Guías para cada parte de la migración
Todas estas guías están en inglés:
- Exportar en el plan Free o Basic: GitHub Sync, la API REST y una CLI local cuando el botón Export no está disponible.
- Repositorios de GitHub Sync: qué contiene
workflow.yamly cómo convertirlo. - Bloques if/else, switch y filtros: If, Switch, Merge y Loop Over Items, y cómo se conservan las reglas.
- Triggers HTTP y webhooks: URLs nuevas, autorización y respuestas personalizadas.
- Programaciones: cron, intervalos y zonas horarias.
- Pasos de código en Python: qué funciona en n8n Cloud y qué en n8n self-hosted.
- Pasos de código de Node.js en n8n Cloud y data stores y archivos del File Store.
Qué automatiza Workflow Exit
Workflow Exit es una herramienta independiente, sin vínculo oficial con Pipedream, Workday ni n8n. Automatiza los pasos 2 a 6 y el paso 8, y convierte el paso 7 en un checklist.
Informe gratuito. Carga el ZIP de exportación, un repositorio de GitHub Sync o el JSON de workflows de la API REST. El informe se ejecuta por completo en tu navegador y le asigna a cada workflow un semáforo (se convierte automáticamente, necesita una reescritura con IA o una revisión rápida, o requiere trabajo manual), con los triggers y sus equivalentes en n8n, las acciones con y sin mapeo automático, los paquetes npm y si n8n Cloud puede ejecutarlos, las variables de entorno, los secretos ocultos, las cuentas conectadas que hay que recrear, los data stores y los datos del File Store que hay que guardar antes del 30 de abril de 2027, una estimación de horas y un destino recomendado.
Conversión de pago. Por cada workflow recibes un JSON de workflow de n8n listo para importar:
- Webhook, Schedule Trigger o Form Trigger para el trigger.
- Nodos If y Switch para los bloques if/else y switch, un nodo Wait para las esperas y Respond to Webhook para
$.respond. - Pasos de código convertidos en nodos Code de n8n con una capa de compatibilidad que reconstruye
steps,$.export,$.flow.exit, las props dethis, los data stores (sobre los datos estáticos del workflow) y el axios de@pipedream/platform(sobrethis.helpers.httpRequest). La capa se probó ejecutando workflows convertidos en n8n 2.x. - Expresiones de props reescritas, por ejemplo, de
{{steps.trigger.event.body.email}}a{{ $('trigger').first().json.body.email }}. - Reescritura opcional con IA de los pasos de código que importan paquetes npm que n8n Cloud no puede cargar.
- Un
CHECKLIST.mdcon las credenciales que hay que crear, las Variables de n8n para los secretos ocultos, las URLs de webhook que hay que cambiar y los pasos del cambio definitivo, además de un README y un script de importación masiva que usa la API pública de n8n.
Lo que no hace: no puede mover credenciales, el contenido de los data stores ni el historial de eventos, no puede conservar tus URLs de webhook, y los triggers de email y las fuentes privadas siguen siendo manuales.
El precio es un pago único: Starter, US$49 (hasta 25 workflows); Team, US$149 (hasta 100); Agency, US$399 (hasta 500); el primer workflow es gratis. Más detalles en la página de precios. Si todavía estás decidiendo a dónde ir, lee Pipedream vs n8n y la comparativa de alternativas (ambas guías en inglés), o empieza por el informe gratuito y deja que los números decidan.
Preguntas frecuentes
¿n8n puede importar directamente una exportación de Pipedream?+
No. A octubre de 2026, n8n no tiene ningún importador para exportaciones de Pipedream. n8n importa su propio JSON de workflow (nodos y conexiones), así que primero hay que convertir cada workflow de Pipedream a ese formato, a mano o con un conversor.
¿Los pasos de código de Pipedream funcionan en n8n sin cambios?+
No tal como están escritos. Los nodos Code de n8n no ofrecen steps, $.export, $.respond ni props de data store, no admiten sentencias import y en n8n Cloud solo pueden hacer require de crypto y moment. El código necesita una reescritura o una capa de compatibilidad que reconstruya los helpers de Pipedream.
¿Mis URLs de webhook se mantienen al pasar a n8n?+
No. Los triggers HTTP de Pipedream usan URLs *.m.pipedream.net o un dominio personalizado de Pipedream. Los nodos Webhook de n8n reciben URLs nuevas en tu instancia de n8n, así que durante el cambio hay que actualizar cada servicio que envía webhooks.
¿Conviene migrar a n8n Cloud o a n8n self-hosted?+
n8n Cloud funciona bien si tus pasos de código solo hacen llamadas HTTP, manejan fechas y usan JavaScript simple. Si muchos pasos dependen de paquetes npm, SDKs o bibliotecas de Python, n8n self-hosted te permite instalar esos módulos y habilitarlos con NODE_FUNCTION_ALLOW_EXTERNAL.
¿Cómo paso las cuentas conectadas de Pipedream a n8n?+
No se pueden transferir. La exportación solo contiene un authProvisionId, y Pipedream borra los tokens a más tardar el 30 de abril de 2027. Crea en n8n una credencial equivalente para cada app y selecciónala en los nodos que la necesitan.
¿Cuánto cuesta una conversión automática de Pipedream a n8n?+
El informe de Workflow Exit es gratis. La conversión es un pago único: Starter, US$49 (hasta 25 workflows); Team, US$149 (hasta 100); Agency, US$399 (hasta 500). El primer workflow se convierte gratis.