How to Migrate from Zapier to n8n 2026
How to Migrate from Zapier to n8n
Zapier's free plan gives you 100 tasks/month. Professional starts at $29.99/month for 750 tasks. Heavy users pay $100-600+/month. n8n is the self-hosted alternative — unlimited workflows, unlimited executions, 400+ integrations. Here's how to migrate.
Step 1: Deploy n8n
# Docker — running in 1 minute
docker run -d \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
-e N8N_BASIC_AUTH_ACTIVE=true \
-e N8N_BASIC_AUTH_USER=admin \
-e N8N_BASIC_AUTH_PASSWORD=changeme \
n8nio/n8n
Access at localhost:5678. For production, add PostgreSQL and a reverse proxy.
Step 2: Audit Your Zaps
Before migrating, list your active Zaps:
- Go to Zapier → My Zaps
- Export or screenshot each Zap's trigger and actions
- Categorize by complexity:
- Simple (2-3 steps) — migrate first
- Medium (4-6 steps with filters) — migrate second
- Complex (branching, multi-path) — migrate last
Step 3: Recreate Workflows
Zapier concept → n8n equivalent:
| Zapier | n8n |
|---|---|
| Zap | Workflow |
| Trigger | Trigger node |
| Action | Action node |
| Filter | IF node |
| Formatter | Function node or built-in transforms |
| Path | Switch node |
| Delay | Wait node |
| Webhooks by Zapier | Webhook node |
| Schedule | Cron/Schedule node |
Example: Slack → Google Sheets (Simple)
Zapier: New message in Slack channel → Add row to Google Sheet
n8n:
- Add Slack Trigger node → configure channel
- Add Google Sheets node → Append Row
- Map fields: message → column A, user → column B, timestamp → column C
- Activate workflow
Example: Form → Email + CRM (Medium)
Zapier: Typeform submission → Filter (score > 50) → Send email + Create HubSpot contact
n8n:
- Webhook node (receive form data)
- IF node (check score > 50)
- True path: Split into two branches:
- Send Email node (Gmail/SMTP)
- HubSpot node (Create Contact)
- False path: Optional — log or ignore
Step 4: Connect Services
For each integration, authenticate in n8n:
- Click a node → Credentials → Create New
- Follow OAuth flow or enter API key
- Test connection
Common integrations and n8n node names:
| Service | n8n Node |
|---|---|
| Slack | Slack |
| Gmail | Gmail |
| Google Sheets | Google Sheets |
| HubSpot | HubSpot |
| Stripe | Stripe |
| GitHub | GitHub |
| Jira | Jira |
| Notion | Notion |
| Airtable | Airtable |
| Salesforce | Salesforce |
| PostgreSQL | Postgres |
| HTTP API | HTTP Request |
| Webhook | Webhook |
Step 5: Use Code Nodes (n8n Superpower)
Zapier's "Code by Zapier" is limited. n8n lets you write full JavaScript or Python:
// n8n Code node — transform data mid-workflow
const items = $input.all();
return items.map(item => ({
json: {
fullName: `${item.json.firstName} ${item.json.lastName}`,
email: item.json.email.toLowerCase(),
source: 'website',
score: item.json.revenue > 10000 ? 'enterprise' : 'standard',
}
}));
Step 6: Set Up Error Handling
n8n has built-in error handling Zapier doesn't offer:
- Error Trigger — catches errors from any workflow
- Retry on failure — automatic retries with backoff
- Error workflow — route errors to Slack/email notifications
Cost Comparison
| Usage | Zapier | n8n Self-Hosted | Savings |
|---|---|---|---|
| 750 tasks/month | $30/month | $5/month (VPS) | $300/year |
| 2,000 tasks/month | $49/month | $5/month | $528/year |
| 50,000 tasks/month | $299/month | $10/month | $3,468/year |
| Unlimited | $599/month | $10/month | $7,068/year |
Migration Timeline
| Week | Task |
|---|---|
| Week 1 | Deploy n8n, recreate simple Zaps (2-3 steps) |
| Week 2 | Recreate medium Zaps, test all workflows |
| Week 3 | Recreate complex Zaps, set up error handling |
| Week 4 | Monitor, verify, deactivate Zapier Zaps |
Connecting n8n to Your Open Source Stack
The real power of migrating to n8n isn't just saving money on Zapier's task limits — it's gaining the ability to automate across your entire self-hosted stack in ways that Zapier's integration model makes awkward or expensive.
Zapier's integrations are all cloud-to-cloud. If you're running a self-hosted CRM, a self-hosted analytics platform, or a self-hosted Git repository, Zapier can't reach them directly without your services being publicly accessible via API. n8n, running on your own server, can communicate with other services on the same local network or VPN without any public exposure. This is significant for security-conscious teams: your internal tools can trigger automations in n8n without opening additional ports to the internet.
For teams using Twenty CRM alongside n8n, the integration is particularly powerful. Migrating from HubSpot to Twenty CRM covers the initial data migration, but n8n is what makes Twenty genuinely replace HubSpot's workflow automation features. You can build n8n workflows that listen to Twenty's webhooks and execute multi-step sequences: when a deal moves to "Proposal Sent" stage, n8n automatically creates a follow-up task for five days later, sends a confirmation email to the prospect, and logs the stage change to your analytics database. This is HubSpot Sales Hub automation, running for the cost of a $10/month VPS.
The HTTP Request node in n8n is worth calling out separately. It's a catch-all node for any API that doesn't have a dedicated n8n integration — and there are thousands of APIs that fall into this category. Internal tools, obscure SaaS products, custom-built APIs, and even self-hosted open source tools with REST APIs are all reachable via the HTTP Request node. If a service has an API and returns JSON, n8n can work with it. Zapier's equivalent is limited to a list of approved integrations, and the HTTP action node in Zapier lacks n8n's data transformation capabilities.
Connecting n8n to your best open source alternatives to Zapier research is useful context if you want to compare n8n against Activepieces, Make (formerly Integromat), or Pipedream before committing. n8n is the strongest choice for technical teams who want maximum flexibility, but Activepieces is a compelling alternative if you want something closer to Zapier's interface without the depth of n8n's feature set.
Handling Complex Migrations: Data Transformation and Edge Cases
The migration from Zapier to n8n is rarely as simple as mapping Zapier nodes to n8n nodes one-for-one. Real Zaps accumulate business logic over time — filter conditions, formatter transformations, lookup steps, and edge-case handling that aren't immediately obvious when reading the workflow overview.
The most common source of migration headaches is Zapier's Formatter step. Zapier's Formatter handles text manipulation, date formatting, number conversions, and data splitting through a point-and-click interface that abstracts away the underlying transformation logic. In n8n, you have two options: use the built-in expressions (which cover most common transformations using JavaScript syntax) or use a Code node for anything complex. The Code node is more powerful but requires writing actual JavaScript, which is a shift for non-technical users who relied on Zapier's Formatter.
Date handling deserves particular attention during migration. Zapier normalizes dates to ISO 8601 format internally, which means Zapier users often don't think about date formatting until they migrate and discover that their source system outputs dates in MM/DD/YYYY format and their destination system expects YYYY-MM-DD. n8n's expression syntax handles date manipulation using JavaScript's Date object or the Luxon library (available as $luxon in expressions), giving you precise control over formatting but requiring you to be explicit about it.
Zapier's multi-step delay and scheduling features have direct n8n equivalents that work differently under the hood. Zapier's Delay step pauses execution within a running workflow, billing task credits for the wait period. n8n's Wait node pauses execution in a way that doesn't consume server resources during the wait — the workflow is serialized to the database and resumed when the timer fires. For workflows that include long delays (hours or days), this is meaningfully more efficient and eliminates the task credit consumption Zapier charges for the waiting period.
Error notification patterns from your Zapier setup need to be rebuilt in n8n. Many Zapier users have relied on Zapier's built-in email notifications for failed Zaps without setting them up explicitly — they came on by default. n8n's Error Trigger node requires explicit configuration, but it's more powerful once set up. You can route errors to Slack, create tickets in your project management tool, or trigger a remediation workflow automatically. Combine this with monitoring via Grafana vs Uptime Kuma to get alerts when n8n itself is down or unreachable, which is the failure mode that Zapier's cloud infrastructure makes invisible but self-hosted n8n makes your responsibility to monitor.
After Migration: Getting the Most from n8n
Once you've completed the migration, there are several practices that distinguish teams getting maximum value from n8n from those using it as a simple Zapier replacement.
Workflow organization matters more than you expect. n8n allows you to create folders and tag workflows, and establishing a naming convention early prevents the chaos of 50 workflows named "Untitled workflow" and its variants. A convention like [SERVICE]-[TRIGGER]-[ACTION] (e.g., STRIPE-payment_received-notify_slack) makes it immediately clear what each workflow does without opening it.
Template workflows from n8n's community library save significant time. The community has shared hundreds of production-ready workflow templates covering common integration patterns. Before building a new workflow from scratch, search the n8n template library — there's a reasonable chance someone has already solved your exact problem and shared the workflow JSON that can be imported directly.
The sub-workflow pattern is worth adopting for any automation that's used in multiple contexts. Create a dedicated n8n workflow for each reusable action (send Slack notification, create CRM contact, log to spreadsheet) and call these from parent workflows using the Execute Workflow node. When you need to change the Slack message format or update the CRM field mapping, you change it in one place and the update propagates to every workflow that calls the sub-workflow automatically. This is the kind of maintainable automation architecture that Zapier's flat workflow model makes structurally impossible.
The execution history in n8n is worth configuring thoughtfully. By default, n8n stores all execution data, which for high-volume automations can grow quickly. Setting a retention policy (prune executions older than 30 days, and only store error executions beyond 7 days) keeps the database size manageable without losing the diagnostic value of recent execution history. This is particularly important for automations triggered by webhooks, which can receive thousands of events per day from active systems.
For teams migrating from Zapier who relied on Zapier's built-in Zapier Tables or Google Sheets as lightweight data stores within workflows, n8n's direct database nodes (PostgreSQL, MySQL, SQLite, MongoDB) give you more powerful and reliable alternatives. Building a workflow that reads from and writes to a PostgreSQL table is a common pattern for stateful automations — tracking which records have been processed, storing intermediate results, or maintaining a queue of items to be worked through. This capability existed in Zapier only through third-party integrations with databases or through the limited Storage by Zapier product, but n8n makes it a first-class workflow primitive.
Compare automation platforms on OSSAlt — integration count, pricing, and self-hosting options side by side.
See open source alternatives to Zapier on OSSAlt.