How to Migrate from Zapier to n8n Without Breaking Anything
Every month, hundreds of businesses realize they’re overpaying Zapier. A $50/month Zapier habit becomes $5/month on self-hosted n8n.
But the actual migration? That’s where people get stuck.
We’ve migrated 40+ Zaps to n8n for clients. Here’s the battle-tested process that avoids broken automations and frustrated teams.
Why Migrate? The Numbers
Before we dig into the how, let’s be clear about the why:
| Scenario | Zapier Cost | n8n Cost | Annual Savings |
|---|---|---|---|
| 10 simple Zaps (500 tasks/mo) | $20/mo | $0 (self-host) | $240 |
| 25 mixed Zaps (2,000 tasks/mo) | $50/mo | $5/mo | $540 |
| 50 complex Zaps (10,000 tasks/mo) | $170/mo | $5/mo | $1,980 |
| Agency (50,000 tasks/mo) | $590/mo | $10/mo | $6,960 |
For most small businesses, n8n pays for itself in the first month. But only if the migration goes smoothly.
Phase 1: Audit Your Existing Zaps (1-2 hours)
Before touching anything, document what you have.
Export your Zap list
Go to Zapier Dashboard → Zaps → Export to CSV. This gives you a spreadsheet with:
- Zap name
- Trigger app and action
- Each step and the apps involved
- Status (on/off)
Categorize every Zap
Create four columns in your spreadsheet:
| Priority | Criteria | Example |
|---|---|---|
| Critical | Revenue-affecting, client-facing | Stripe → invoice generation, order processing |
| High | Daily operations | CRM sync, Slack notifications |
| Medium | Nice to have, weekly | Report generation, data cleanup |
| Low | Experimental, rarely used | Test Zaps, abandoned automations |
Rule: Don’t migrate Low-priority Zaps. If you haven’t used it in 30 days, archive it.
Map Zapier steps to n8n nodes
For each Zap you’re keeping, map each step:
| Zapier Step | n8n Node | Notes |
|---|---|---|
| Trigger: New Gmail | Gmail Trigger | Nearly identical |
| Action: Find Airtable record | Airtable node (Search) | Check field mapping |
| Action: Create Google Sheet row | Google Sheets node | Works the same |
| Filter: Only if amount > $100 | IF node | n8n calls these “IF” not “Filter” |
| Action: Send Slack message | Slack node | Rich text requires Manual mode |
Most common apps (Google, Slack, Airtable, Stripe, Shopify) have direct equivalents in n8n. If you use a niche app, check n8n’s integrations page first.
Phase 2: Set Up n8n in Parallel (1-2 hours)
Don’t turn off your Zaps yet. Set up n8n alongside them.
- Self-host n8n or sign up for Cloud
- Create an n8n Project folder called “Migration”
- Rebuild your first Zap — start with a Medium-priority one as a test
Key Differences to Know
1. Triggers work differently
Zapier polls for new data. n8n has two trigger modes:
- Polling — same as Zapier, checks every X minutes
- Webhook — instant, no polling needed (preferred)
For webhook-compatible apps (Stripe, Shopify, GitHub), use webhooks. Your automations become instant and free.
2. Error handling is much better
Zapier retries 3 times, then emails you. n8n lets you build alternate paths:
[Trigger] → [Action] ──→ success → [Continue]
└──→ fail → [Slack alert] → [Retry with backoff] → [Log to file]
3. Code nodes exist
Zapier’s “Code by Zapier” is limited to simple Python/JS. n8n’s Code node gives you full Node.js with npm packages. If a Zapier step uses “Formatter” 5 times, replace it with one Code node.
4. Sub-workflows replace Paths
Zapier’s Paths (conditional branching) map to n8n’s IF node. But for complex routing, n8n’s Execute Workflow node lets you call reusable sub-workflows.
Phase 3: The Test-and-Switch Method (per workflow)
For each Zap you’re migrating:
1. Build in n8n
Rebuild the workflow. Test each node individually using n8n’s Listen to test event feature.
2. Run in parallel for 3 days
Keep the Zap on AND the n8n workflow on. Compare outputs:
- Do they produce the same result?
- Is n8n faster? Slower?
- Any errors?
3. Disable the Zap, enable n8n
Once you’re confident, pause the Zapier Zap and let n8n take over.
4. Monitor for 24 hours
Check n8n’s Execution History for any failures. Fix and retry.
5. Delete the Zap
Only delete the Zapier Zap after a full week of n8n running cleanly.
Migration order: Medium → High → Critical. Build confidence with non-critical workflows first. By the time you touch Critical Zaps, you’ll know exactly what to expect.
Phase 4: Common Migration Pitfalls
Pitfall #1: Date/Time Format Mismatches
Zapier uses ISO 8601 with timezone. n8n uses ISO 8601 without timezone by default:
Zapier: 2026-06-17T14:30:00+08:00
n8n: 2026-06-17T14:30:00.000Z
Fix: Add a Date & Time node before any date-sensitive step to normalize the format.
Pitfall #2: Slack Rich Text
Zapier’s Slack integration makes rich text easy. n8n’s Slack node requires “Manual” mode for rich text (block kit JSON). If your Zap uses formatted Slack messages, budget extra time for this.
Pitfall #3: Multi-Step Zaps with Paths
Zapier Paths with 3+ branches often have subtle logic. Rebuild each path as a separate test in n8n before combining.
Pitfall #4: Google Sheets “Append Row” vs “Add Row”
Zapier’s “Create Spreadsheet Row” = n8n’s “Append Row.” But n8n also has an “Update Row” that works differently than Zapier’s. Triple-check your Sheet operations.
Phase 5: Optimization (After Migration)
Once everything is on n8n, you can do things Zapier couldn’t:
Combine workflows
In Zapier, 5 related Zaps are 5 separate things. In n8n, merge them into one workflow with sub-workflows — easier to maintain and debug.
Add error recovery
Build proper error recovery paths:
[Action fails] → [Wait 5 minutes] → [Retry once] → [If still fails] → [Slack alert + email with error details]
Use webhooks everywhere
Replace polling triggers with webhooks. It’s instant and free:
Before (polling): Check Gmail every 5 minutes = 8,640 checks/month
After (webhook): Gmail pushes new emails instantly = 0 polling, instant results
Set up monitoring
Create an n8n workflow that monitors your… other n8n workflows:
[Schedule Trigger: every hour] → [Check failed executions] → [If failures > 0] → [Slack alert]
Migration Checklist
Download and print this. Check off each step:
☐ 1. Export all Zaps to CSV
☐ 2. Categorize: Critical / High / Medium / Low
☐ 3. Delete or archive Low-priority Zaps
☐ 4. Map Zapier steps → n8n nodes for each remaining Zap
☐ 5. Set up n8n (self-host or Cloud)
☐ 6. Migrate 1 Medium Zap → test 3 days → switch
☐ 7. Migrate remaining Medium Zaps
☐ 8. Migrate High-priority Zaps
☐ 9. Migrate Critical Zaps (one at a time!)
☐ 10. Wait 1 week, verify all Zapier Zaps are paused
☐ 11. Cancel Zapier subscription 🎉
☐ 12. Set up n8n monitoring workflow
How Long Does This Take?
| Number of Zaps | Estimated Migration Time |
|---|---|
| 1-5 | An afternoon |
| 6-15 | 2-3 days |
| 16-30 | 1-2 weeks |
| 30+ | 2-4 weeks (consider hiring help) |
Still on the Fence?
Try migrating just one Zap — your simplest one. It’ll take 30 minutes and you’ll see whether n8n’s interface clicks for you.
If you’re comparing tools more broadly:
Migration horror stories (or success stories)? Tell us. We’re collecting case studies.