Migrate from n8n to Heym
Move n8n workflows to Heym. Paste an exported workflow JSON, watch AI Convert rebuild it on a live canvas, then download and import it into your own instance.
n8n documents itself as a fair-code workflow automation tool that pairs business process automation with AI capabilities and offers self-hosted deployment.
When it is worth moving a workflow
The usual trigger is an automation that started as an integration and turned into an AI system. Once a workflow depends on agents that call tools, retrieval over your own documents, a reviewer who has to approve a step, and a cost figure somebody asks about at the end of the month, the work shifts from moving records between apps to running a production AI system, and it is worth running on a runtime that treats those as first-class.
If you are still deciding rather than moving, the Heym and n8n comparison covers the evaluation side with links to first-party documentation.
How the move works
- 1
Export from n8n
Open the workflow in n8n, use the workflow menu to download it as JSON, and copy the file contents.
- 2
Paste it into AI Convert
A safety check runs, then each construct is mapped to the closest native Heym node and streamed onto a live canvas while you watch.
- 3
Review, download, and import
Read the rebuilt workflow, download or copy it, import it into your own instance, and attach your credentials.
What each n8n concept becomes
A reviewer's guide to the rebuilt workflow. Constructs without an exact equivalent are mapped to the closest Heym primitive, which is why the result is worth reading before it handles real traffic.
| In n8n | In Heym | What changes |
|---|---|---|
| Schedule Trigger | Cron node | Cron expressions and timezone handling move across directly. |
| Webhook node | Workflow webhook trigger | Every Heym workflow can be triggered over HTTP, so the entry point becomes a property of the workflow rather than a node on the canvas. |
| HTTP Request | HTTP node | Methods, headers, query parameters, and body templating carry over, with expressions rewritten into the Heym DSL. |
| IF and Switch | Condition and Switch nodes | Branch structure is preserved; each outgoing edge stays a separate path on the canvas. |
| Edit Fields (Set) | Set node | Field assignments carry over, and arithmetic in a value field is evaluated by the same expression engine the editor previews. |
| Merge | Merge node | Fan-in after parallel branches works the same way, and in Heym those branches already run concurrently. |
| Code node | Code node | Heym runs sandboxed Python in a Docker sandbox, so JavaScript is rewritten rather than copied. Review this node closely. |
| Execute Sub-workflow | Execute node | Sub-workflow composition is preserved, and an agent can also call another workflow as a tool. |
| AI Agent node | AI Agent node | Tool calling carries over, and the Heym agent adds inline Python tools, MCP servers, skills, and sub-agent delegation. |
| Vector Store nodes | RAG / Vector Store node | Retrieval becomes two nodes over Qdrant or Postgres with pgvector, managed from the Vectorstores tab. |
| Error Workflow | Error Handler node and workflow-level error workflow | A local Error Handler on the canvas takes precedence; the workflow-level setting catches everything else. |
| Expressions such as {{ $json.field }} | Expression DSL, for example $nodeName.field | References are rewritten to name the upstream node, and the same expression evaluates identically in the preview dialog and in a production run. |
Check these before it goes live
- Attach credentials in the Credentials tab for every node that needs one.
- Read the Code node line by line. It is Python now, and it is the most likely place for a behavior difference to hide.
- Confirm the trigger. A webhook node becomes a workflow trigger, so the URL is new and any caller needs updating.
- Run one test execution from the canvas and compare its output against a recent run on the source side.
- Check parallel branches. Independent nodes run concurrently in Heym, which can expose an ordering assumption that a sequential run hid.
n8n migration FAQ
Can AI Convert read an n8n workflow export directly?
Yes. Paste the exported workflow JSON into AI Convert and it maps each node to the closest native Heym node, streaming the result onto a live canvas you can download and import.
What happens to a Code node written in JavaScript?
Heym runs sandboxed Python, so a JavaScript Code node is rewritten rather than transferred. The conversion produces working Python for straightforward transformations; anything that reached into n8n-specific helpers needs a read-through before it goes live.
Do my credentials come across?
No, and that is deliberate. Exported workflow files hold no API keys or secrets, so AI Convert rebuilds the structure only and you attach your own credentials in the Heym Credentials tab afterwards. Nothing copies a secret between two systems on your behalf.
Is the converted workflow ready to run?
Treat it as a reviewed starting point rather than a finished port. Open it on the canvas, attach credentials, run one test execution, and adjust any node that was mapped to the closest Heym primitive rather than an exact equivalent.
Can I run the result on my own infrastructure?
Yes. Heym is source-available under an MIT license with a Commons Clause and runs on your own servers with Docker or Kubernetes, so migrated workflows, their credentials, and their model calls stay inside your environment.
Moving from something else
AI Convert reads exports from 12 tools, and it also accepts a plain description of the automation when there is no file to export.