Migrating to Glow
Move existing automations from n8n, Make, Zapier, or Microsoft Power Automate into Glow without missed or duplicated events. The same method works for any other tool.
- Use it to
- Import n8n workflows and Make blueprints or rebuild Zapier and Power Automate flows with zero-downtime cutover
- Find it
- Automations → Import JSON (or MCP import_workflow)
- Cost
- 0 Step credits and 0 Glow AI tokens via MCP import_workflow · Glow AI tokens when using Import JSON in the app
- Limits
- Up to 50 canvas operations (about 15 to 20 connected nodes, <= 512,000 JSON characters) per MCP import batch
- Instead
- Importing an Automation (/getting-started/templates/import-and-export) for the quick single-file upload steps
Two migration paths
- Places the trigger, built-in Steps, and AI Steps on the canvas.
- Carries AI prompts and updates simple variable references.
- Preserves n8n sticky notes and direct connections.
- Lists remaining app actions and routes on a canvas checklist note.
- Export your Zap JSON, notes, or Power Automate solution package.
- Generate a Draft via your AI client over MCP (0 tokens, 0 credits).
- Or describe the spec in Workflow Assistant or build on the canvas.
- Connect accounts, map fields, and test against your spec.
What never carries over
- Connected accounts: Reconnect each app once under Connections → Connect an app.
- Run history: Keep your old tool’s logs until your retention window passes.
- Stored data (Make data stores, Zapier Storage/Tables, n8n static data): Export and load into a Glow Data Store.
What to configure after importing (n8n and Make)
An n8n or Make import scaffolds your graph and adds a "Not imported" checklist sticky note on the canvas:
- AI prompts and settings: Prompts and simple references carry over. Fill in remaining Step fields, URLs, schedules, and rules in the App drawer.
- Third-party apps: Add each app action listed on the checklist note from Apps in the dock and bind its connection.
- Branching and loop routes: Wire outputs on Conditions, Switch, Filter, and Repeater Steps.
- Python code execution: Glow’s Code editor runs Python 3. Convert n8n JavaScript to Python or use built-in transforms.
The short version of every migration
Before you start
1. Make an inventory
List active automations before moving them. Start with a low-risk notification flow and leave billing or customer email for last:
- Name, owner, and impact: Confirms expected behavior and migration priority.
- Trigger type (webhook, cron, poll): Determines zero-gap cutover order.
- Apps, runs per month, and stored data: Sizes connections, allowance, and Data Store migration.
- Destination writes (CRM, sheets, email): Identifies duplicate-write risk.
2. Export a spec of each automation
Save the original export even when rebuilding by hand. Use it as your specification and acceptance test.
Remove secrets before sharing or importing. Delete API keys, tokens, and
customer data from exported files. Store credentials under Variables → Secret
or API key ({{ $secret.NAME }}
or {{ $key.NAME }}).
3. Set up Glow
- Connect apps once: Open Connections → Connect an app.
- Create shared values: Add plain settings as Variables and credentials as Secrets or API keys.
- Load stored data: Populate your Data Store before testing Steps that read it.
- Invite owners: Add teammates under Members and invites → Invite people.
4. Plan to run both side by side
Test the Glow Draft on sample data while the old tool handles live traffic. Cut over only when outputs match.
Draft is not a sandbox. Running a Step in Draft calls the live app, sends
messages, and creates records. Use test accounts, pin write
Steps, or run
run_workflow_test with writeMode: "preview" over MCP.
Concept map
Find the term from your previous tool and use its Glow equivalent:
| Glow | n8n | Make | Zapier | Power Automate |
|---|---|---|---|---|
| Automation (workflow) | Workflow | Scenario | Zap | Cloud flow |
| Step | Node | Module | Step | Action |
| Trigger: Webhook, Scheduler, Form, Chat, app | Trigger node | Trigger module | Trigger | Trigger |
| Conditions (all matching routes + Else) | If | Router + filters | Paths | Condition |
| Switch (first matching route) | Switch | None | None | Switch |
| Filter (filters list items) | Filter | Filter | Filter | Filter array |
| Run for each item (1 Step) | Default item loop | Iterator (1 module) | Looping (1 action) | Apply to each (1) |
| Repeater (multi-Step loop) | Loop Over Items | Iterator (multi) | Looping | Apply to each, Do until |
| Summarize, Combine | Aggregate, Merge | Aggregators | Formatter (line items) | Compose, Select, Join |
| Change Fields, Custom Variables | Edit Fields (Set) | Set variable, Tools | Formatter | Compose, Set variable |
| Data Store | Static data, DB | Data store | Storage, Tables | Dataverse, SharePoint |
| Wait (up to 13 days) | Wait | Sleep | Delay | Delay, Delay until |
| Human Review | Wait (approval) | None | Human-in-the-loop | Approvals |
| Subflow | Execute Workflow | Run a scenario | Sub-Zap | Child flow |
| HTTP Request, Respond to Webhook | HTTP Request, Respond Webhook | HTTP, Webhook response | Webhooks by Zapier | HTTP, Response |
| Code editor (Python) | Code (JS/Python) | Make Code | Code by Zapier | Inline code, Functions |
| Error Handling & Error Trigger | Retry on fail, Error Trigger | Resume, Break, Ignore | Error paths | Configure run after |
| AI Prompt, AI Agent, AI Data Transform | AI nodes, AI Agent | Make AI, AI agents | AI by Zapier, Agents | AI Builder, Copilot |
| Variables: Variable, Secret, API key | Variables, Credentials | Connections, keys | None | Env variables, Vault |
| Live / Draft · Execution Log | Active / Executions | On / History | On / Zap history | On / Run history |
Key execution model differences
- Step number references: Glow reads output by Step number (
{{ 2.result }},{{ 1.body.email }}) without n8n’s$jsonwrapper. Webhook payloads sit underbody({{ 1.body.order_id }}) unless Body only is on. - Explicit list looping: Steps run once unless you enable Run for each item or place them inside a Repeater.
- All-match vs first-match routing: Conditions runs every matching route (like Make’s Router). Use Switch when only the first match should run.
- runsDeal size is over 10,000Notify sales
- runsCountry is United KingdomAdd to CRM
- skippedELSE — none matchedLog for review
Both conditions are met, so both routes run. This is the part a first-match step cannot do.
Platform-by-platform migration guides
From n8n
From n8n
1. Export from n8n
Open the workflow in n8n, click ⋯ → Download (or copy with Ctrl/Cmd + A and Ctrl/Cmd + C), and strip any hardcoded keys or customer data.
2. Import into Glow
- Drop the .json file into Import workflow.
- Review the detected structure summary.
- Click Build workflow to let Workflow Assistant assemble the draft.
- Deterministic single-batch import from Claude, ChatGPT, or Cursor.
- Supports up to 50 canvas operations (~15 to 20 connected nodes, <= 512,000 chars).
- Split larger exports and link them with a Subflow Step.
3. Example mapping: 7-node n8n lead router
| n8n node | Glow equivalent | Import behavior and next step |
|---|---|---|
| Webhook | Webhook | Places trigger; configure webhook authentication |
| Edit Fields (Set) | Change Fields | Places Step; define field mappings |
| OpenAI | AI Prompt | Carries prompt text and rewrites references to Step numbers |
| If | Conditions | Places Step; configure rules and wire branch outputs |
| Code | Code editor | Places Step; rewrite JavaScript transform in Python 3 |
| Slack / Google Sheets | App actions | Listed under slack and google_sheets on the canvas note |
| Sticky note | Sticky note | Preserved on the canvas |
4. Finish the automation
- Add listed app actions from Apps in the dock and bind workspace connections.
- Wire branches on
Conditions,Switch,Filter, andRepeaterSteps. - Map references: Replace
{{ $json.company }}or{{ $('Edit Fields').item.json.employees }}with{{ 2.company }}and webhook fields with{{ 1.body.company }}. - Convert JS to Python 3 in Code editor, or use Change Fields, Filter, Summarize, or inline pipes (
| unnest:fieldreplaces n8n Split Out). - Configure loops and error handling: Enable Run for each item or Repeater where n8n looped automatically, set Retry on fail, and run
validate_workflow.
Cut over without gaps or duplicates
Test before you switch
Compare outputs against your original export and run history:
- Test every Conditions and Switch branch.
- Test an empty list, a missing field, a multi-item batch, and a forced error.
- Pin the output of verified write Steps so repeat test runs do not duplicate records.
Switch over by trigger type
| Trigger | Zero-gap, zero-duplicate cutover order |
|---|---|
| Webhook | Set Glow Live, update the sender’s webhook URL to Glow, then disable the old flow once the first event lands. |
| Schedule | Turn off the old flow after its run completes, then set Glow Live before the next scheduled time. |
| App event or polling | Turn off the old trigger first, then set Glow Live and backfill any events from the switch window. |
| Manual, form, or chat | Set Glow Live and share the new link with users. |
Verify the first real event and keep a rollback path
- Inspect the first live run in the Execution Log and verify destination records.
- Connect an Error Trigger automation for failure alerts.
- Keep the old flow paused (not deleted) for one full business cycle. To roll back, switch Glow to Draft and re-enable the old trigger.
Troubleshooting & FAQ
- Step shows “no data” after import: Re-select the field from Workflow data. Default Webhook payloads sit under
body({{ 1.body.email }}). - List only runs once instead of per item: Enable Run for each item on the Step or wrap multiple Steps in a Repeater.
- Multiple branches ran unexpectedly: Conditions runs all matching routes. Use mutually exclusive rules or switch to Switch.
- Third-party app Steps after import: Check the
"Not imported"canvas note, add each listed app action from Apps in the dock, and bind your connection. - JavaScript Code nodes: Rewrite JS in Python 3 for Code editor, or use built-in transforms and inline pipes.
- API keys for AI Steps: Built-in AI Steps (
AI Prompt,AI Agent,AI Data Transform) use workspace Glow AI tokens and need no external API key. - Bulk imports and size limits: Each MCP
import_workflowcall supports up to 50 canvas operations (~15 to 20 nodes,<= 512,000characters). Split larger workflows with Subflow, or ask your MCP client to import a folder of exports sequentially.
- Run
- Send one controlled test event to your new Glow automation and compare the Execution log with your old tool
- You should see
- Every branch, transformed field, and destination write matches the original automation with zero duplicate records.
What’s Next?
- Importing an Automation for the quick upload procedure.
- Choose the Right Step for automation patterns and tool boundaries.
- How testing works for testing safely with Testing data, Pin output for tests, and Preview.