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:

Stay on Zapier if:

Be honest about this tradeoff: Zapier handles hosting, uptime, and updates for you. With n8n self-hosted, that's your responsibility. The cost savings are real, but so is the operational overhead. If you don't have a technical person on your team (or aren't willing to hire one for setup), Zapier might be the right choice even at a higher cost.

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 minutes

2. 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 minutes

3. 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.

30-60 minutes

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 minutes
My setup: I run n8n on an AWS EC2 instance with nginx, SSL via Let's Encrypt, and Docker Compose. Total server cost: $12/month. It handles all my automations plus client demo workflows without breaking a sweat. The whole infrastructure setup takes me about 2 hours for a new client.

Phase 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
1-2 hours

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 minutes

Phase 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 minutes

8. 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
1-3 hours per workflow

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 batch

11. 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 workflow

12. 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 minutes

Common 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:

Either way, you'll start saving money within the first month.

Want a head start? I sell n8n workflow templates that cover the most common business automations -- lead capture, report generation, content repurposing, invoice follow-up, and more. Each template is a ready-to-import JSON file with a setup guide. Browse the template bundle →