Your Zapier bill keeps climbing. You're hitting per-task limits. You want more control over your automations. You've heard about n8n -- open-source, self-hosted, unlimited executions -- but the idea of migrating feels overwhelming.
I've migrated 3 clients from Zapier to n8n. My own business automation stack runs entirely on n8n. This is the process I follow, step by step, with real costs and realistic timelines.
Before You Start: Should You Actually Migrate?
Not every Zapier user should switch to n8n. Here's a quick filter:
Migrate if:
- Your Zapier bill is over $100/month and growing
- You're hitting task limits, step limits, or rate limits
- You need custom code in your workflows (Python, JavaScript, API calls)
- Data privacy matters -- you want your workflow data on your own server
- You're technical enough to manage a server (or willing to hire someone who is)
Stay on Zapier if:
- You run fewer than 5 simple Zaps and the bill is under $50/month
- Your team is non-technical and nobody can manage a server
- Uptime is critical and you don't have monitoring or backup infrastructure in place
The Migration Cost Comparison
Here's what the numbers actually look like for a typical small business running 5-10 automations with about 50,000 total executions per month:
| Cost | Zapier | n8n (Self-Hosted) |
|---|---|---|
| Monthly platform fee | $299-$599/mo | $0 |
| Server hosting | $0 (included) | $5-20/mo (AWS/DO) |
| SSL certificate | $0 (included) | $0 (Let's Encrypt) |
| One-time migration cost | $0 | $500-$4,000 (DIY or hired) |
| Year 1 total | $3,588-$7,188 | $560-$4,240 |
| Year 2+ total | $3,588-$7,188/yr | $60-$240/yr |
The breakeven point is typically 1-4 months after migration, depending on your Zapier bill and migration complexity. After that, every month is savings.
Step-by-Step Migration Process
Phase 1: Set Up Your n8n Server
1. Provision a server
I recommend an AWS EC2 t3.small ($15/month) or DigitalOcean Droplet ($12/month) running Ubuntu 24.04. For most small businesses, this handles everything comfortably -- even with 10+ active workflows running continuously.
30-60 minutes2. Install Docker and Docker Compose
n8n runs in a Docker container, which makes installation and updates straightforward. Docker Compose lets you define your entire stack (n8n + reverse proxy + SSL) in a single configuration file.
15-30 minutes3. Configure nginx and SSL
Set up nginx as a reverse proxy with Let's Encrypt SSL. This gives you HTTPS (required for webhooks), handles HTTP-to-HTTPS redirects, and provides a clean URL like n8n.yourcompany.com.
4. Deploy n8n
Start n8n with Docker Compose, set your encryption key (this protects stored credentials), and create your admin account. Test by logging in and creating a simple test workflow.
15 minutesPhase 2: Audit Your Existing Zaps
5. Export your Zap inventory
Before touching anything, document every Zap you're running. For each one, record:
- What triggers it (form submission, schedule, webhook, etc.)
- What steps it performs (create record, send email, update spreadsheet, etc.)
- What apps/credentials it uses
- How often it runs and how many tasks it consumes
- Whether it's business-critical or nice-to-have
6. Prioritize which Zaps to migrate first
Start with the Zaps that consume the most tasks (biggest cost savings) or the ones that are simplest to rebuild. Don't try to migrate everything at once -- do it in batches of 2-3 workflows.
30 minutesPhase 3: Rebuild Workflows in n8n
7. Set up credentials in n8n
For each app your Zaps connect to (Google Sheets, Slack, Gmail, Notion, etc.), create the corresponding credential in n8n. Most use OAuth2 -- click "Connect" and authorize. Some use API keys -- grab them from each app's settings.
30-60 minutes8. Rebuild each Zap as an n8n workflow
This is the core of the migration. For each Zap, create a new workflow in n8n with the equivalent trigger and action nodes. Key differences to know:
- Triggers: Zapier Triggers become n8n Trigger nodes (Webhook, Cron, or app-specific triggers)
- Actions: Zapier Actions become n8n regular nodes. Most popular apps have native n8n nodes. For anything without a native node, use the HTTP Request node
- Filters/Paths: Zapier's Filter and Paths become n8n's IF and Switch nodes -- actually more flexible than Zapier's version
- Code: Zapier's "Code by Zapier" becomes n8n's Code node, which supports full JavaScript and Python with any npm/pip package
9. Add error handling
This is something most Zapier users skip (because Zapier hides it). In n8n, add an Error Trigger workflow that catches any workflow failure and sends you a Slack or email alert. This way you know immediately if something breaks.
30 minutes (one-time setup)Phase 4: Test and Switch Over
10. Run both systems in parallel
For each workflow, run the n8n version alongside the Zapier version for 3-7 days. Compare outputs. Make sure the n8n workflow handles the same inputs and produces the same results. This is the most important step -- don't skip it.
3-7 days per batch11. Switch over and disable Zaps
Once a workflow is verified, turn off the corresponding Zap and let n8n handle it. Don't delete the Zap yet -- just pause it. Keep it as a reference for 30 days in case you need to check something.
5 minutes per workflow12. Cancel or downgrade Zapier
Once all workflows are migrated and running stable on n8n for at least 2 weeks, downgrade or cancel your Zapier plan. If you want to keep a safety net, Zapier's free tier gives you 5 Zaps with 100 tasks/month -- enough to keep your account active without paying.
5 minutesCommon Gotchas
Webhook URLs change
Your Zapier webhook URLs won't work in n8n. You'll get new n8n webhook URLs for each workflow. Any external system that POSTs to your Zapier webhooks needs to be updated to point to the new n8n URLs.
OAuth tokens need re-authorization
You can't copy OAuth credentials from Zapier. Each app connection needs to be re-authorized in n8n. For most apps, this is a one-click process.
Some Zapier-specific apps don't have n8n nodes
n8n has 400+ integrations versus Zapier's 7,000+. If your Zap uses a niche app without an n8n node, you'll use the HTTP Request node to call that app's API directly. This requires reading the app's API documentation, but it's usually straightforward -- and gives you more control than Zapier's pre-built actions.
Scheduling differences
Zapier's polling triggers check for new data every 1-15 minutes depending on your plan. n8n's cron triggers can run every minute (or every second, if you want). Some workflows will run faster on n8n simply because the polling interval is shorter.
What About Make (Integromat)?
If you're considering Make as an alternative to Zapier instead of n8n, read my full comparison: n8n vs Zapier vs Make: Which Actually Saves You Money?
The short version: Make is cheaper than Zapier per-operation but still charges based on usage. n8n is the only option that completely eliminates per-task fees. If your goal is maximum cost reduction and full ownership, n8n wins.
The Real Timeline
For a typical migration of 5-10 workflows:
- DIY (you're technical): 1-2 weekends for infrastructure + workflow rebuild. Maybe 15-25 total hours.
- Hired out (me or another consultant): 1-2 weeks from start to full cutover. Typically $500-$4,000 depending on workflow complexity.
Either way, you'll start saving money within the first month.