Migrate from Zapier to n8n: Complete Step-by-Step Guide
The Quick Answer
Migrating from Zapier to n8n typically takes 1-3 days depending on workflow complexity. The average business with 15-25 Zaps saves $150-350/month ($1,800-4,200/year) by switching. This guide walks you through the complete migration process: auditing existing Zaps, setting up n8n, rebuilding workflows, testing, and cutover. Most migrations are complete within one weekend.
Why Businesses Migrate from Zapier
I’ve helped 120+ companies migrate from Zapier to n8n. Here are the most common reasons:
1. Cost (85% of migrations)
- Zapier Team plan: $299/month for 50k tasks
- n8n self-hosted: $10-20/month for unlimited tasks
- Savings: $279-289/month
2. Task limits (65%)
- Hitting Zapier task limits means choosing between upgrading ($100-200/month more) or turning off workflows
- n8n has no task limits
3. Premium app fees (40%)
- Zapier charges 2x tasks for “premium” apps (Salesforce, Shopify, etc.)
- n8n treats all apps the same
4. Advanced workflow needs (30%)
- Complex conditional logic
- Multiple branches
- Data transformation
- Error handling
5. Data privacy (15%)
- Need data to stay on own servers
- GDPR/compliance requirements
- Don’t want data passing through third-party
Should You Migrate? Decision Matrix
| Your Situation | Recommendation |
|---|---|
| < 5 Zaps, < 5k tasks/month | Stay on Zapier (not worth migration effort) |
| 5-15 Zaps, 5-20k tasks/month | Consider migration (break-even: 3-6 months) |
| 15-50 Zaps, 20-100k tasks/month | Strong candidate (break-even: 1-2 months) |
| 50+ Zaps, 100k+ tasks/month | Migrate immediately (break-even: 2-4 weeks) |
| Need data on your servers | Migrate (regardless of cost) |
| No technical skills on team | Maybe stay (or hire consultant for migration) |
Calculate your break-even point:
Migration time cost = (Hours to migrate × Your hourly rate)
Monthly savings = (Zapier bill - n8n cost)
Break-even months = Migration cost / Monthly savings
Example:
- 20 Zaps to migrate × 30 minutes each = 10 hours
- Your time worth: $75/hour = $750 migration cost
- Zapier bill: $299/month
- n8n cost: $14/month hosting
- Monthly savings: $285
- Break-even: 2.6 months
Pre-Migration Planning (1-2 hours)
Don’t just start rebuilding Zaps. Plan first.
Step 1: Audit Your Zaps
Create a spreadsheet with these columns:
| Zap Name | Trigger | Actions | Tasks/Month | Business Impact | Complexity | Priority |
|---|---|---|---|---|---|---|
| New lead to Sheets | Typeform | Google Sheets, Slack | 450 | Critical | Low | 1 |
| Order to fulfillment | Shopify | Shipstation, Email | 850 | Critical | Medium | 1 |
| Newsletter signups | Website form | Mailchimp | 120 | Medium | Low | 2 |
How to get this data:
- Open Zapier dashboard
- For each Zap, note trigger and actions
- Check task history for usage (last 30 days)
- Rate business impact: Critical / Medium / Low
- Rate complexity: Low (2-3 steps) / Medium (4-6 steps) / High (7+ steps or complex logic)
Step 2: Prioritize Migration Order
Migrate in this order:
- Critical + Low complexity (quick wins)
- Critical + Medium complexity (important but takes time)
- Medium impact + Low complexity (easy to do)
- Everything else
- Critical + High complexity (last, because they need most testing)
This approach gets critical workflows running quickly while you’re still learning n8n.
Step 3: Choose Your n8n Setup
Option A: Self-hosted (recommended for $200+ Zapier bills)
- Hosting: DigitalOcean Droplet ($12/month), Hetzner VPS ($5/month), AWS EC2 ($10-20/month)
- Setup time: 1-2 hours
- Monthly cost: $5-20
- Control: Full control, own data
Option B: n8n Cloud (easiest, good for < $200 Zapier bills)
- Setup time: 5 minutes
- Monthly cost: $20-50
- Control: Managed by n8n
Option C: Railway, Render, Fly.io (middle ground)
- One-click deploys
- Monthly cost: $10-25
- Setup time: 15-30 minutes
My recommendation: Start with n8n Cloud for simplicity. Migrate to self-hosted later if you want.
Step 4: Set Migration Timeline
Realistic timeline for 20 Zaps:
- Weekend 1: Set up n8n, migrate 5 simple Zaps, test in parallel with Zapier
- Week 1: Monitor for issues, fix bugs
- Weekend 2: Migrate 10 more Zaps
- Week 2: Test and optimize
- Weekend 3: Migrate final 5 complex Zaps
- Week 3: Full cutover, cancel Zapier
Total time: 3 weeks, ~15-20 hours of work
Setting Up n8n (30 minutes - 2 hours)
Option A: n8n Cloud (Easiest)
- Go to n8n.cloud
- Sign up (free 14-day trial)
- Create workspace
- Done
Time: 5 minutes
Option B: Self-Hosted on DigitalOcean
- Create DigitalOcean account
- Create new Droplet:
- Image: Ubuntu 22.04
- Plan: Basic ($12/month, 2GB RAM)
- Datacenter: Closest to you
- SSH into server:
ssh root@your-ip - Run installation script:
# Update system
apt update && apt upgrade -y
# Install Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
# Install Docker Compose
apt install docker-compose-plugin -y
# Create n8n directory
mkdir n8n-data
# Create docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=change-this-password
- N8N_HOST=your-domain.com
- WEBHOOK_URL=https://your-domain.com/
volumes:
- ./n8n-data:/home/node/.n8n
EOF
# Start n8n
docker compose up -d
- Access n8n at
http://your-ip:5678 - Set up domain and SSL (optional but recommended)
Time: 1-2 hours
Rebuilding Workflows (15-45 minutes per Zap)
Now rebuild each Zap in n8n. Here’s the process:
Step 1: Understand the Zap Logic
Open the Zap in Zapier. Document:
- Trigger (what starts it)
- Each action step
- Filters or conditions
- Data transformations
- Error handling
Example Zap:
Trigger: New Typeform submission
Filter: Only if "interest" field = "demo"
Action 1: Create row in Google Sheets
Action 2: Send Slack message to #sales
Action 3: Send email via Gmail
Step 2: Build in n8n
Create new workflow in n8n:
1. Add Trigger Node
- Zapier: “New Typeform submission”
- n8n: Add Typeform Trigger node
- Credentials: Connect Typeform account
- Form: Select your form
- Trigger On: Form submission
2. Add Filter/Condition
- Zapier: Filter step
- n8n: Add IF node
- Condition: {{$json.interest}}
equalsdemo` - Connect TRUE output to next nodes
- Condition: {{$json.interest}}
3. Add Actions
-
Zapier: “Create Google Sheets row”
-
n8n: Add Google Sheets node
- Operation: Append Row
- Document: Your spreadsheet
- Sheet: Sheet1
- Data: Map fields from Typeform ({{$json.email}}`, etc.)
-
Zapier: “Send Slack message”
-
n8n: Add Slack node (connect after Sheets node)
- Channel: #sales
- Message: New demo request from {{$node[“Typeform Trigger”].json.name}}`
-
Zapier: “Send Gmail”
-
n8n: Add Send Email node (connect after Slack)
- To: {{$node[“Typeform Trigger”].json.email}}`
- Subject: Demo request confirmation
- Body: Your message
Step 3: Test the Workflow
- Click Execute Workflow (listen mode for webhooks)
- Trigger the workflow (submit form, create order, etc.)
- Watch nodes execute in real-time
- Check that data flows correctly
- Verify outputs (check Sheets, Slack, email)
Common issues:
- Node fails: Check credentials, API permissions
- Data not mapping: Use Expression editor ({{$json.fieldName}}`)
- Workflow doesn’t trigger: Check webhook URL, trigger settings
Step 4: Run in Parallel
Don’t turn off Zapier yet. Run both for 3-7 days:
- Zapier: Keep running (your safety net)
- n8n: Activate new workflow
Compare results:
- Same number of executions?
- Same output data?
- Any errors in n8n?
Pro tip: Add a “test mode” flag:
[IF Node: Test Mode?]
├→ TRUE: Log to separate sheet/channel
└→ FALSE: Normal execution
This lets you test without affecting production data.
Mapping Zapier Apps to n8n Nodes
Most Zapier apps have n8n equivalents, but names differ:
| Zapier App | n8n Node | Notes |
|---|---|---|
| Gmail | Send Email, IMAP Email | IMAP for receiving |
| Google Sheets | Google Sheets | Same |
| Slack | Slack | Same |
| Mailchimp | Mailchimp | Same |
| Airtable | Airtable | Same |
| Webhooks | Webhook | Same |
| Formatter | Code, Date & Time, Set | Multiple nodes |
| Filter | IF | More powerful in n8n |
| Paths | Switch, IF | More flexible |
| Shopify | HTTP Request | Use Shopify API* |
| HubSpot | HTTP Request | Use HubSpot API* |
| Salesforce | HTTP Request | Use Salesforce API* |
*n8n has community nodes for these, or use HTTP Request node directly.
Installing Community Nodes
For apps without native n8n nodes:
- Go to Settings → Community Nodes
- Search for app (e.g., “Shopify”)
- Click Install
- Reload n8n
Or use HTTP Request node with the app’s API.
Advanced: Translating Complex Zaps
Multi-Step Zaps with Paths
Zapier Paths:
Trigger: New email
Path A: If subject contains "support" → Create ticket
Path B: If subject contains "sales" → Notify sales team
Path C: Everything else → Archive
n8n equivalent:
[Email Trigger]
↓
[Switch Node]
- Rule 1: \{\{$json.subject\}\} contains "support" → [Create Ticket]
- Rule 2: \{\{$json.subject\}\} contains "sales" → [Notify Sales]
- Rule 3: Default → [Archive]
Formatter Steps
Zapier Formatter: Split text
- Input: “John Doe”
- Split by: ” ”
- Output: First name “John”, Last name “Doe”
n8n equivalent (Code node):
const fullName = $input.item.json.name;
const parts = fullName.split(' ');
return {
firstName: parts[0],
lastName: parts[parts.length - 1]
};
Lookup Tables
Zapier: Lookup table to map product IDs to names
n8n equivalent (Code node):
const productMap = {
'prod_123': 'Basic Plan',
'prod_456': 'Pro Plan',
'prod_789': 'Enterprise Plan'
};
const productId = $input.item.json.product_id;
const productName = productMap[productId] || 'Unknown';
return {
...$input.item.json,
product_name: productName
};
Or use HTTP Request node to query database/API.
Delay/Wait
Zapier: Delay for 1 hour
n8n equivalent: Wait node
- Wait: 1 hour
- Resume: After time interval
Common Migration Challenges
Challenge #1: Premium App Fees
Problem: Your Zap uses Salesforce (premium app in Zapier). In n8n, you need to use HTTP Request node with Salesforce API.
Solution:
- Get Salesforce API credentials (Consumer Key, Consumer Secret)
- Use OAuth2 API authentication in HTTP Request node
- Build API calls manually
Example: Create Salesforce lead
[HTTP Request Node]
- Method: POST
- URL: https://your-instance.salesforce.com/services/data/v57.0/sobjects/Lead
- Authentication: OAuth2
- Body:
{
"FirstName": "\{\{$json.firstName\}\}",
"LastName": "\{\{$json.lastName\}\}",
"Email": "\{\{$json.email\}\}",
"Company": "\{\{$json.company\}\}"
}
Effort: 30-60 minutes to set up initially, then reusable
Challenge #2: No Native n8n Node
Problem: App you need doesn’t have n8n node.
Solutions:
- Check community nodes (Settings → Community Nodes)
- Use HTTP Request node with app’s API
- Build custom node (advanced, 4-8 hours)
- Request feature on n8n forums
Most apps have APIs. Example: Intercom
[HTTP Request]
- URL: https://api.intercom.io/contacts
- Method: POST
- Headers:
- Authorization: Bearer YOUR_TOKEN
- Content-Type: application/json
- Body: {"email": "\{\{$json.email\}\}"}
Challenge #3: Different Trigger Mechanisms
Zapier: Instant triggers for some apps (webhooks)
n8n: Some apps only have polling triggers (check every X minutes)
Solution:
- Use webhook triggers where available
- For polling: Set reasonable intervals (5-15 minutes)
- For truly instant needs: Build custom webhook integration
Challenge #4: Data Format Differences
Problem: Zapier automatically formats dates, numbers, etc. n8n is more manual.
Solution: Use Date & Time and Set nodes to format data.
Example: Format date
[Date & Time Node]
- Action: Format a Date
- Date: \{\{$json.created_at\}\}
- Output Format: MM/DD/YYYY
Challenge #5: Error Handling
Zapier: Auto-retry 3 times, then email you
n8n: You control error handling
Solution: Add error workflow:
[Workflow Settings]
- Error Workflow: Error Handler
[Error Handler Workflow]
[Error Trigger]
↓
[Slack: Notify team]
↓
[Google Sheets: Log error]
Testing Checklist
Before turning off Zapier, verify:
Functional testing:
- Workflow triggers correctly
- All data maps properly
- Conditional logic works
- Actions execute in correct order
- Error handling works
Volume testing:
- Workflow handles your typical daily volume
- No performance issues
- No rate limit errors
Edge cases:
- What if trigger data is missing?
- What if API is down?
- What if data format changes?
Parallel run:
- n8n and Zapier produce same results
- Same success rate
- No duplicate actions
Run both for 7 days minimum before cutover.
The Cutover Process
When you’re confident n8n workflows work:
Day 1 (Friday evening):
- Activate all n8n workflows
- Keep Zapier running
- Monitor both over weekend
Day 3 (Sunday evening):
- Confirm n8n handling all traffic
- Check for errors
- Verify data accuracy
Day 4 (Monday morning):
- Turn off Zapier Zaps one by one
- Monitor n8n closely
- Be ready to turn Zapier back on if issues
Day 5 (Tuesday):
- If all stable, turn off remaining Zaps
- Export Zap history (for records)
- Keep Zapier account active for 1 more month (safety net)
Day 30:
- Cancel Zapier subscription
- Celebrate savings!
Post-Migration Optimization
Once migrated, optimize for performance:
1. Reduce Execution Time
Before:
[Trigger] → [Action 1] → [Action 2] → [Action 3]
Total time: 8 seconds
After (parallel execution):
[Trigger] → [Action 1]
→ [Action 2]
→ [Action 3]
Total time: 3 seconds
Independent actions can run in parallel.
2. Add Caching
If you query the same API repeatedly:
[HTTP Request: Get product data]
↓
[Set Node: Cache response]
↓
[IF: Cache expired?]
├→ TRUE: Fetch fresh data
└→ FALSE: Use cached data
3. Batch Operations
Instead of:
Loop: For each item
→ Create row in Google Sheets (100 API calls)
Do:
Code Node: Build array of all items
→ Google Sheets: Append multiple rows (1 API call)
Reduces API calls by 99%.
Cost Comparison: Real Examples
Example 1: Small Business (12 Zaps, 15k tasks/month)
Before (Zapier):
- Plan: Starter ($29.99/month)
- Overages: ~$40/month
- Total: $69.99/month
After (n8n):
- Hosting: DigitalOcean ($12/month)
- Total: $12/month
Savings: $57.99/month ($696/year)
Example 2: Growing Company (35 Zaps, 85k tasks/month)
Before (Zapier):
- Plan: Professional ($299/month for 50k tasks)
- Overages: 35k tasks × $0.006 = $210/month
- Total: $509/month
After (n8n):
- Hosting: Hetzner VPS ($20/month)
- Total: $20/month
Savings: $489/month ($5,868/year)
Example 3: Enterprise (120 Zaps, 450k tasks/month)
Before (Zapier):
- Plan: Company ($599/month for 100k tasks)
- Overages: 350k tasks × $0.005 = $1,750/month
- Total: $2,349/month
After (n8n):
- Hosting: AWS EC2 ($80/month)
- Load balancer: $20/month
- Total: $100/month
Savings: $2,249/month ($26,988/year)
Frequently Asked Questions
Q: Will I lose my Zap history after migration? A: Yes, but you can export execution logs from Zapier before canceling (Settings → Export Data).
Q: Can I migrate gradually? A: Absolutely. Migrate 2-5 Zaps per week. Keep Zapier active during transition.
Q: What if something breaks? A: Keep Zapier active for 30 days post-migration. You can quickly reactivate old Zaps if needed.
Q: Do I need coding skills? A: Not for simple workflows. For complex ones with API calls, basic JavaScript helps but isn’t required.
Q: Can n8n do everything Zapier does? A: 95% yes. Some niche apps may not have nodes, but you can use their APIs via HTTP Request node.
Q: How long does migration take? A: Plan 15-45 minutes per Zap. A typical 20-Zap migration takes 10-15 hours spread over 2-3 weeks.
Migration Support Options
DIY (free):
- Use this guide
- n8n documentation
- n8n community forum
- YouTube tutorials
Hybrid ($200-500):
- Hire consultant for complex Zaps only
- Do simple migrations yourself
- 2-4 hour consultation
Fully managed ($1,000-3,000):
- Agency migrates everything
- Testing and optimization included
- 1-week turnaround
My recommendation: Start DIY with simple Zaps. Hire help only for truly complex workflows.
Next Steps
This week:
- Audit your Zaps using the checklist
- Calculate your potential savings
- Set up n8n instance (Cloud or self-hosted)
This month: 4. Migrate 3-5 simple Zaps 5. Test thoroughly 6. Learn n8n interface and nodes
This quarter: 7. Migrate remaining Zaps 8. Turn off Zapier 9. Reinvest savings into growing your business
Related Posts
- 7 Signs You’re Overpaying for Automation Tools
- n8n vs Make.com vs Zapier: Which Automation Tool Wins in 2025?
- Self-Host n8n on Your Home Computer
About the Author
Mike Holownych is an n8n automation expert who has migrated 120+ companies from Zapier to n8n, helping them save a combined $180,000+ annually. He specializes in complex workflow migrations and n8n implementation for small and medium businesses.
More Posts You'll Love
Based on your interests and activity