Make.com to n8n: A Technical Migration Guide for High-Volume Workflows
Source: Dev.to
The Operation Math Problem
Make charges by operations—every step, branch, and iteration counts separately.
Example: Filtering a 5 000‑row dataset through three conditional branches results in 15 000 operations in a single execution.
n8n charges by execution (or self‑hosted compute). The same workflow runs as one execution, taking ~0.3 s on a 2‑core VPS.
Cost comparison
| Plan | Cost / year | Operations / month |
|---|---|---|
| Make Team | $2,388 | 200 k |
| Hetzner CPX21 (4 vCPU/8 GB) | $144 | 2 M+ |
| Make Enterprise (2 M ops) | ≈ $12 000 | 2 M |
The economics are clear; the migration effort is the variable.
Authentication: The Real Lock‑In
Make stores OAuth tokens in its infrastructure, so migrating requires re‑authenticating every service. For 47 workflows across 12 clients, this took 18 hours of focused work.
n8n uses a credentials.json file, giving you full ownership of tokens. Export, encrypt, and migrate—no vendor hostage situation.
Migration Strategy
- Audit – Export Make scenario blueprints (JSON) for reference.
- Map – n8n nodes don’t translate 1:1. Make’s Iterator becomes n8n’s Split In Batches or native loop functionality.
- Rebuild – Start with webhook triggers, then rebuild logic using Code nodes for complex JSON manipulation.
Technical Differences That Matter
Webhooks
- Make: Instant webhooks but they are queued with rate limits.
- n8n: Raw HTTP endpoints; can handle 400 req/min on a $12 instance without queuing.
Error Handling
Make’s visual error routes become tangled spaghetti. n8n offers programmatic handling with “Continue On Fail” and Execute Once nodes.
{
"nodes": [
{
"parameters": {
"continueOnFail": true
},
"name": "Risky API Call",
"type": "n8n-nodes-base.httpRequest"
}
]
}
Data Transformation
Make’s sandboxed functions are slow. n8n’s Code node runs native JavaScript.
- Make: 45 s for a 10 000‑row array transformation (often hits timeout).
- n8n: 0.8 s for the same task.
Performance Benchmarks
Same workflow complexity (CRM enrichment via API):
- Make (Team Plan): 4.2 s average execution, throttles after ~100 concurrent runs.
- n8n (Docker on CPX21): 0.7 s average execution, handles 500 concurrent runs without degradation.
Docker Compose for Production
version: '3'
services:
n8n:
image: n8nio/n8n:latest
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- EXECUTIONS_MODE=regular
- N8N_LOG_LEVEL=warning
volumes:
- ~/.n8n:/home/node/.n8n
deploy:
resources:
limits:
cpus: '2'
memory: 4G
The Hidden Cost: Debugging
Make’s visual debugger forces you to click through each step. A failing client webhook at 2 AM can require 40 clicks to locate the error.
n8n’s execution logs display the full JSON payload at every node, reducing mean‑time‑to‑resolution from 45 minutes to 8 minutes for failed workflows.
When to Stay on Make
If you’re building simple “Zap‑style” automations (< 1 k ops/month) for internal use, the migration cost may not be justified. Make’s visual builder is fast for MVPs.
Consider n8n when you need to:
- Process high‑volume data
- Resell automation to clients
- Implement custom error handling
- Overcome rate limits
Self‑hosted n8n isn’t just cheaper; it unlocks a higher capability tier.
I’ve documented the full migration checklist—including auth migration scripts and Docker configs—available in the workflow bundle at whop.com/jbhflow/.