WEWorkflow ExitFree report

How the converter works

Updated October 13, 2026

Workflow Exit turns a Pipedream export into n8n workflow files you can import. The conversion runs as a pipeline with six stages:

  1. Read the input.
  2. Normalize it into one internal model.
  3. Analyze every trigger and step.
  4. Emit n8n nodes and connections.
  5. Wrap code steps in a compatibility layer, and rewrite with AI only where needed.
  6. Validate the result.

The free report uses stages 1 to 3, and they run in your browser. Conversion uses all six.

1. Input formats

The converter reads three kinds of input:

  • The official project export. This is the project_export-<project_id>.zip file that Pipedream writes to your project's File Store. It contains a manifest.json and one JSON file per workflow, with triggers, steps, code, configured props and control flow branches. Pipedream's export needs a plan that includes File Stores. See how to export Pipedream workflows.
  • A GitHub Sync repository. If you synced a project to GitHub, upload the repository as a ZIP. It has a workflow.yaml per workflow and the code of each step. Trigger settings are not in it. The converter infers the trigger type from how your steps use the event, and flags it for you to check.
  • Workflow JSON files, for example ones you fetched yourself from the Pipedream REST API. We never ask for your Pipedream API key in the web app.

Pipedream redacts secrets in every format. Secret props become <redacted>. Connected accounts become an account ID, with no token.

2. One internal model

Each format is parsed into the same internal model: a project with workflows, and each workflow with its triggers and steps. A step is one of three kinds:

  • code, with its language and source;
  • action, with its registry key and version, for example slack-send-message;
  • control flow: if/else, switch, filter, delay or end, with the steps inside each branch.

Every prop keeps its state. It can be a plain value, a redacted secret, a connected account, or a value picked from a dropdown. The later stages work only on this model, so supporting a new input format means writing one parser, not a new converter.

3. Analysis

The analyzer rates every trigger and step:

  • Green: converts automatically.
  • Yellow: converts with AI help, or needs a short manual review.
  • Red: needs manual work.

A workflow gets the rating of its worst step.

For code steps, the analyzer parses the source and records what it uses. That includes npm imports (grouped into packages n8n has a built-in replacement for, API SDKs, and packages that need self-hosting), Pipedream helpers such as $.respond, $.flow.delay and $.send, data stores, the File Store, environment variables and /tmp.

It also collects the accounts to reconnect, the secrets to re-enter, and an estimate of the hours needed by hand compared with the converter. This is the free report.

4. Emitting n8n workflows

The emitter builds the n8n workflow JSON from the model:

  • Triggers. HTTP becomes a Webhook node, plus a Respond to Webhook node when your code calls $.respond. Schedules become a Schedule Trigger with the same cron or interval. Forms become a Form Trigger. Registry sources with a known mapping become the matching n8n trigger node.
  • Actions. Actions in the mapping table become native n8n nodes with their parameters filled in. Pipedream HTTP request actions become HTTP Request nodes.
  • Control flow. If/else, switch and filter blocks become If, Switch and Filter nodes, with the rules converted. A delay becomes a Wait node.
  • Expressions. References such as {{steps.get_user.$return_value.email}} become n8n expressions like {{ $('get_user').first().json.$return_value.email }}. Node names match your Pipedream step names, so references stay readable.

Steps the emitter cannot map get a placeholder node with a TODO note and your original props, so nothing disappears silently.

5. Compatibility layer and AI rewrite

Compatibility layer

Node.js code steps are not rewritten by default. Your original component is kept as it is. A compatibility layer is added above it, rebuilding what Pipedream provided on top of n8n's Code node:

  • steps reads the output of earlier nodes;
  • this holds the step's props, with redacted secrets read from n8n Variables;
  • $.export and return become the node's output;
  • $.flow.exit stops the branch;
  • axios, fetch and @pipedream/platform calls go through n8n's built-in HTTP helper;
  • process.env reads n8n Variables;
  • data stores are kept in n8n workflow static data.

This keeps your logic exactly as you wrote it, and it needs no AI.

AI rewrite

Some steps cannot run on your n8n target even with the layer. Examples include code that imports a package n8n Cloud cannot load, Python steps, and code that uses $.flow.delay, $.flow.suspend or $.send.email. Actions with no mapping are another case. For these, the converter builds an HTTP Request node from the action's public source code.

Only the affected steps are sent to Anthropic's Claude API. The prompt includes your target (n8n Cloud or self-hosted) and the shape of the data from earlier steps. Rewritten steps are marked in the output.

6. Validation

Before you download anything, every converted workflow is checked:

  • Code node JavaScript is parsed the way n8n runs it, inside an async function.
  • Imports are checked against your target. On n8n Cloud, anything other than crypto and moment is reported.
  • The workflow structure is checked: unique node names and IDs, connections that point to real nodes, valid node types, and a trigger node.

Node type versions are pinned to the versions the converter is tested against. The test suite imports converted workflows into a real n8n instance and runs them.

What is converted automatically and what is flagged

Pipedream n8n Status
HTTP trigger Webhook (+ Respond to Webhook) Automatic. The URL changes.
Schedule trigger (cron or interval) Schedule Trigger Automatic
Form trigger Form Trigger Review: recreate the form fields
Email trigger Email Trigger (IMAP) or Gmail Trigger Review: the @pipedream.net address goes away
Registry source with a mapping Matching n8n trigger node Automatic
Registry source without a mapping App trigger, or Schedule + HTTP Request polling Review
Action in the mapping table Native n8n node Automatic
Action without a mapping HTTP Request built from the component source AI, then review
If/else, switch, filter If, Switch, Filter Automatic. Review if a rule can't be read.
Delay Wait Automatic
Node.js code without npm packages Code node with compatibility layer Automatic
Node.js code using axios, fetch or @pipedream/platform Code node using n8n's HTTP helper Automatic
Node.js code using other npm packages AI rewrite (n8n Cloud) or allowed modules (self-hosted) AI or manual
Python code Code node, via AI rewrite AI, then review
$.flow.delay, $.flow.suspend Wait node Flagged: split the step around a Wait node
$.flow.trigger Execute Workflow AI, then review
Data store Workflow static data, or an n8n Data Table Review: save your records
File Store No equivalent Manual: download your files
Bash or Go code, $.flow.rerun No equivalent Manual
Private sources and actions No code in the export Manual
Secrets, connected accounts, environment variables n8n credentials and Variables Manual, listed in the checklist

What you download

The conversion produces a ZIP with:

  • an n8n/ folder with one importable workflow file per Pipedream workflow, keeping your project folders;
  • CHECKLIST.md with the credentials, variables, webhook URLs and cutover steps for each workflow;
  • REPORT.md, the migration report;
  • import-to-n8n.mjs, a script that imports every workflow through the n8n public API.

Workflows arrive in n8n unpublished. Work through the checklist, test each workflow, and then publish it. The Pipedream to n8n guide walks through the cutover.

Frequently asked questions

Is my export uploaded when I create the free report?+

No. The free report is parsed and analyzed entirely in your browser. Workflow definitions are sent to our server only when you convert, and they are processed in memory and not stored after the response is returned.

Is AI used for every step?+

No. Triggers, mapped actions, branches, expressions and most Node.js code steps are converted by fixed rules. AI is used only for steps the rules cannot handle on your n8n target, such as code that imports npm packages n8n Cloud cannot load, Python steps, or actions with no n8n mapping.

Does the converter move my credentials?+

No. Pipedream exports never contain secret values or OAuth tokens. You create the credentials in n8n. The cutover checklist lists every account, secret and variable each workflow needs.

Will my webhook URLs stay the same?+

No. n8n gives each Webhook node its own URL. After you publish a converted workflow, update every service that called the old Pipedream URL.

Should I pick n8n Cloud or self-hosted n8n?+

If your code steps use few npm packages, n8n Cloud is the simplest choice. If they depend on many packages, self-hosted n8n can load them through NODE_FUNCTION_ALLOW_EXTERNAL. The free report recommends a target based on the packages it finds.

Can it convert private components?+

No. The Pipedream export contains the key of a private component but not its code, so these steps are marked red and must be rebuilt.