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
The most common reasons teams give for migrating:
1. Cost
- Zapier Team plan: $299/month for 50k tasks
- n8n self-hosted: $10-20/month for unlimited tasks
- Savings: $279-289/month
2. Task limits
- 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
- Zapier charges 2x tasks for “premium” apps (Salesforce, Shopify, etc.)
- n8n treats all apps the same
4. Advanced workflow needs
- Complex conditional logic
- Multiple branches
- Data transformation
- Error handling
5. Data privacy
- 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 builds and migrates automation infrastructure on n8n, including moving teams off Zapier and other SaaS automation platforms.
