How to migrate Pipedream workflows to n8n
Updated 2026-10-21 · 10 min read
To migrate Pipedream to n8n you export each project from Pipedream, convert every workflow into n8n workflow JSON, import that JSON into n8n, then reconnect credentials and switch your webhook senders to the new URLs. There is no one-click path: Pipedream offers an export tool but names no replacement, and n8n only imports its own JSON format. This guide walks through each step and is honest about which parts can be automated and which stay manual.
The deadline matters. Pipedream Workflows shuts down on March 31, 2027, and all Workflows data, including connected account credentials, is deleted by April 30, 2027. Details are in Pipedream shutdown: dates and what still works.
The short version
- Export each Pipedream project (Project → Settings → Export Workflows) and download the ZIP from the project's File Store.
- Get a report of what will convert cleanly and what needs work, before you spend time on it.
- Convert the workflows to n8n JSON.
- Import the JSON into n8n (one by one in the editor, or in bulk through the n8n API).
- Recreate credentials and environment values in n8n.
- Handle npm packages in code steps (self-hosted n8n, or rewrite).
- Test, publish, and move webhook senders to the n8n URLs.
- Turn off the Pipedream workflow once n8n handles live traffic, well before March 31, 2027.
What moves automatically and what stays manual
This table is the core of the migration plan. "Automatic" means the converter produces a working n8n node; you still test it. "Manual" means a person has to do something, usually because Pipedream does not export the data.
| Pipedream | n8n | Automatic? | Why |
|---|---|---|---|
| HTTP trigger | Webhook node | Yes | The URL changes, so senders must be updated by hand |
Custom HTTP response ($.respond, Return HTTP response) |
Webhook set to respond with a Respond to Webhook node | Yes | Check status codes and headers in a test call |
| Schedule (interval or cron) | Schedule Trigger | Yes | Check the timezone: n8n uses the workflow or instance timezone |
| Email trigger | Email trigger over IMAP | Partly | Pipedream gave each workflow its own address; in n8n you point it at a mailbox you own |
| Form trigger | n8n Form Trigger | Mostly | Field labels carry over; styling does not |
| App event sources (new row, new message…) | Closest n8n trigger node, or a Webhook | Partly | Credential needed; some sources have no n8n trigger |
| Node.js code step | Code node (JavaScript) with a compatibility layer | Mostly | steps.x, $.export, $.flow.exit, $.respond are emulated; no fetch, URL or process in the n8n sandbox, so test after import |
| npm packages in code | Code node | Manual on Cloud | n8n Cloud allows only crypto and moment |
| Python step | Code node (Python) | Partly | Imports need a self-hosted allowlist; Python data stores are not converted |
| Go and Bash steps | none | Manual | Rewrite in JavaScript or Python |
| If/else, Switch | If node, Switch node | Partly | We try to rebuild them; check every branch condition by hand after import |
| Common pre-built actions (HTTP, Slack, Google Sheets…) | HTTP Request node with an n8n credential | Mostly | Response shape can differ from the Pipedream action |
| Other pre-built actions | Placeholder Code node | Manual | Flagged red in the report |
$.flow.delay |
Wait node | Manual | Split the step and add a Wait node |
$.flow.rerun |
none | Manual | Rebuild with Wait + loop or a sub-workflow |
| Data store calls in JS code | Workflow static data, Data table recommended | Partly | Records are not in the export; move them separately |
| Connected accounts, OAuth tokens | n8n credentials | Manual | Not exported by Pipedream |
| Environment variables, secrets | n8n credentials or Variables | Manual | Not exported; secret props are <redacted> |
| Event history | none | Not possible | Not exported |
The rows marked manual are Pipedream's export rules, not converter gaps. The export docs list what is left out: secret values, connected accounts, environment variables, event history, data stores, File Store files and the code of private multi-file components.
Step 1. Export your Pipedream projects
Pipedream's export works per project:
- Open the project and click Settings in the left navigation.
- Click Export Workflows at the bottom of the settings panel. The archive is built in the background.
- Open File Store in the project navigation and download
project_export-<project_id>.zip.
Each project holds one export at a time; delete the old ZIP to export again. One export holds up to 500 workflows or 256 MB of workflow content, whichever comes first. If you hit the limit, manifest.json marks the rest as skipped_export_limit, and the docs suggest moving workflows into another project and exporting that one.
Plan requirement. The export lands in a File Store, and the docs say your plan must include File Stores. The File Stores page lists them for the Advanced plan and above. If your workspace has no File Stores but already uses GitHub Sync (the docs don't state its plan tier), the synced repository is the other input you can work from. Otherwise you are copying code steps by hand.
Inside the ZIP:
manifest.jsonwith every workflow and a status:exported,skipped_never_deployedorskipped_export_limit, plus per-stepwarningsabout values you must re-enter.- One JSON file per workflow with
name,description,inactive,settings,triggers,stepsanddeployments(the steps inside if/else and switch branches). Each file holds the latest deployed version.
Workflows that were never deployed are skipped. If a draft matters, deploy it before exporting. More detail: How to export Pipedream workflows.
Step 2. Find out what will break before you start
A migration estimate is mostly a count of code steps, npm imports, connected apps, data stores and webhooks. You can read every JSON file yourself, or drop the ZIP into our free report. It runs in your browser and marks each workflow:
- Green: converts without manual edits; you test and publish.
- Yellow: converts, but needs something from you, such as credentials, an npm decision or a data store move.
- Red: some steps need hand work, for example Go steps,
$.flow.rerunor actions with no mapping.
The report also lists the credentials to create, the npm packages per workflow, the data stores in use and the webhooks whose URLs will change, with an hour estimate for the manual part.
Step 3. Convert the workflows to n8n JSON
The difficult part is code. A Pipedream Node.js step is a component:
export default defineComponent({
async run({ steps, $ }) {
const order = steps.trigger.event.body;
$.export("total", order.amount * 1.2);
return { id: order.id };
},
});
n8n's Code node works on items instead: you read input with $input.all() or $('Node name') and return an array of { json: {...} } objects. Either you rewrite each step by hand, or a compatibility layer wraps the original run() so steps.<name>.$return_value, $.export, $.flow.exit and $.respond still behave the same. Our converter does the wrapping and keeps step names, so references between steps stay intact. In n8n 2.x the Code node sandbox has no fetch, URL, URLSearchParams, AbortController or process, and built-in modules such as fs are blocked unless allow-listed. Our converter inserts a fetch shim built on this.helpers.httpRequest, a helper n8n doesn't document for the Code node, so test every converted code step after import. More detail: Pipedream code steps to the n8n Code node.
Branches need care too. The export keeps if/else and switch steps in deployments, separate from the main steps list. A converter that only reads steps loses everything inside a branch. Ours reads deployments and tries to rebuild the branches as n8n If, Switch and Merge nodes. We haven't yet seen a real export with branches, so those workflows are marked yellow: check every branch condition by hand after import.
The report and 1 workflow are free. Full export: $3 per workflow, $19 minimum — coming soon. Import the free workflow and see it run first; see pricing.
Step 4. Import the JSON into n8n
For a few workflows, use the editor. In n8n, open the workflow menu and choose Import from File (n8n 2.x also has Import from URL, which the n8n 3.0 notes list as retired), or paste the JSON on the canvas (n8n docs).
For many workflows, use the n8n public API: POST /api/v1/workflows with an API key in the X-N8N-API-KEY header (authentication docs). Create the key under Settings → n8n API. The API is not available during the n8n Cloud free trial. The full export (coming soon) includes an import script that sends every workflow through the API, so you won't post them by hand. Self-hosted instances can also use n8n import:workflow --separate --input=<dir>, which n8n plans to deprecate at some point.
Step-by-step: Import workflow JSON into n8n.
Step 5. Recreate credentials and settings
Pipedream never exports tokens, so every app connection is new in n8n:
- Connected accounts (Slack, Google, HubSpot…): create an n8n credential for each app and select it in the matching nodes. n8n tests a credential when you save it.
- Environment variables: Pipedream does not export them. Put API keys in n8n credentials where a node supports them. n8n Variables (
$vars) exist on Cloud Pro and Enterprise and on self-hosted Business and Enterprise. - Secret props: anything Pipedream marked secret arrives as
<redacted>. Thewarningslist inmanifest.jsontells you where.
Pipedream never shows secret values again after you save them, so get them from each provider's dashboard or rotate the keys. Non-secret values you can still copy until April 30, 2027. More detail: Pipedream secrets to n8n credentials.
Step 6. Decide what to do with npm packages
Pipedream installs any npm package you import, with no package.json. n8n works differently:
- n8n Cloud: the Code node can load only
cryptoandmoment. - Self-hosted n8n: with external task runners (the
n8nio/runnerssidecar that n8n recommends), extend the runners image to install the packages, then allow-list them underNODE_FUNCTION_ALLOW_EXTERNALin the launcher config filen8n-task-runners.json(docs).
So a workflow with npm imports means one of three things: self-host n8n, replace the package with an n8n node (HTTP Request instead of axios or got), or rewrite the code without it. Full setup: npm packages in n8n.
Step 7. Test, publish and switch webhook senders
In n8n 2.x a workflow goes live when you publish it (n8n docs). Until then, edits are saved as drafts, and production webhooks and schedules don't run.
A safe order for each workflow:
- Run it in the editor with test data. The Webhook node has a separate test URL (
/webhook-test/...) that listens for 120 seconds after you click "Listen for test event". - Publish it. The production URL (
/webhook/...) is now live. - Point the sender (Stripe, GitHub, your app) at the new URL. Many senders let you add a second endpoint, so you can run both for a short time and compare.
- Watch the n8n Executions tab for a few days.
- Turn off the Pipedream workflow.
Schedules are easier: publish the n8n version, then turn off the Pipedream one so a job does not run twice. Webhook details: Pipedream HTTP trigger to n8n Webhook.
Step 8. Move the data Pipedream does not export
- Data stores are not in the export. Pipedream's data store docs show a sample action that posts records in chunks to an external endpoint. In n8n, Data tables are the closest match. See Pipedream data stores to n8n.
- File Store files are not in the export either. Download them from the project's File Store.
- Event history cannot be exported. Copy by hand anything you need for audits now.
How long does a migration take?
It depends almost entirely on code. A workflow with an HTTP trigger and two Slack actions takes minutes once credentials exist. A workflow with five code steps, three npm packages and a data store takes hours if you rewrite it. That is why the report comes first: count the red and yellow workflows, then decide whether to convert, rewrite, or drop workflows nobody uses.
Common mistakes
- Exporting too late. Exports need an active workspace with File Stores. Do it now, even if you migrate later.
- Forgetting never-deployed workflows. They are skipped. Deploy drafts you want to keep.
- Assuming webhook URLs carry over. They don't. Make a list of every external sender.
- Choosing n8n Cloud for npm-heavy code. Check the npm list in the report first. See n8n Cloud vs self-hosted.
- Leaving both versions on. A schedule running in Pipedream and n8n sends every email twice.
Where to go next
- Check a single code step for free: code step checker
- Compare the platforms first: Pipedream vs n8n
- Not sure n8n is the right target: Pipedream alternatives
- Start the report: convert your export
moveworkflows is an independent tool and is not affiliated with Pipedream, Workday or n8n. Product names are used only to describe compatibility.
FAQ
- Is there an official Pipedream to n8n import?
- No. Pipedream ships an export tool and does not name a replacement. n8n imports its own workflow JSON, not Pipedream's format, so the export has to be converted first.
- Do my connected accounts and secrets move to n8n?
- No. Pipedream redacts secret props and does not export connected accounts, OAuth tokens or environment variables. You create the credentials again in n8n.
- Will my Pipedream webhook URLs keep working?
- No. The *.m.pipedream.net endpoints belong to Pipedream Workflows. After the move, every sender has to call the new n8n production webhook URL.
- Can I run npm packages from my code steps in n8n?
- On n8n Cloud the Code node can only load crypto and moment. On self-hosted n8n you install the package in the task runner image and allow-list it in the runner config (NODE_FUNCTION_ALLOW_EXTERNAL).
- What does the converter cost?
- The report and 1 workflow are free. Full export: $3 per workflow, $19 minimum — coming soon. There will be no subscription and no account.
- Do my files leave the browser?
- No. The report and the conversion run in your browser. The export ZIP is not uploaded to our server.
Related
Sources
- https://pipedream.com/docs/workflows
- https://pipedream.com/docs/workflows/export-workflows
- https://pipedream.com/docs/workflows/data-management/file-stores
- https://pipedream.com/docs/workflows/git
- https://pipedream.com/docs/workflows/building-workflows/code/nodejs
- https://pipedream.com/docs/workflows/building-workflows/triggers
- https://docs.n8n.io/build/manage-workflows/export-and-import
- https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code
- https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook
- https://docs.n8n.io/connect/n8n-api/authentication
- https://docs.n8n.io/build/understand-workflows/save-and-publish-workflows