n8n consulting
Architecture, self-hosting, migrations, and scale. Built for operators who want to own their automation, not rent it.
When n8n is the right choice (and when it is not)
n8n wins on control. If your workflows touch credentials that can’t leave your infrastructure, n8n self-hosted is the only serious answer. Zapier and Make both route your API keys and data through their cloud. That’s fine for sending a Slack message when a form is submitted. It is not fine when your workflows touch payroll data, medical records, or proprietary pricing logic.
n8n also wins on complexity. Zapier’s branching model maxes out fast: you get Filter steps and Paths, but anything that needs a loop, a recursive check, or a multi-branch merge gets painful quickly. n8n has native looping, sub-workflows, merge nodes, and a full JavaScript or Python Code node that runs inside the workflow graph, not as a detached function call. If your logic has more than three branches, n8n will express it more cleanly.
Where n8n loses: when your volume is low and you don’t care about data residency. If you’re running 200 executions per month and your workflows hit only public APIs, Zapier at $20/mo is a fine choice. n8n self-hosted adds ops overhead that is not worth it at that scale. The inflection point is around 5,000 to 10,000 executions per month, where cost savings start to outpace the ops cost, and around 10 to 15 connected systems, where n8n’s credential model and workflow graph make debugging much faster.
The three builds independent operators ask for first
Most operators come in with one of three problems. The first is outbound lead orchestration: pulling from Apollo or LinkedIn Sales Navigator, enriching with Clearbit or Hunter, deduplicating against their CRM, and pushing qualified leads into an Instantly or Smartlead campaign sequence. Zapier can do pieces of this. It cannot do the dedup logic, the conditional enrichment fallback, and the multi-step scoring in a single coherent graph. n8n can, and the resulting workflow is auditable and debuggable in a way that a chain of zaps is not.
The second is CRM sync and data cleanup between two or more systems. A typical case: a team running HubSpot for marketing and a custom ops tool for fulfillment, with contact records drifting out of sync over six months. n8n handles the bidirectional sync, the conflict resolution logic (which system wins on which fields), and the audit log. The same pattern applies to Airtable plus GHL, Notion plus Salesforce, or any other two-system pairing where a human is currently copy-pasting to keep records aligned.
The third is AI-scored triage for inbox or support. Incoming emails or support tickets hit an n8n webhook, a Claude node classifies intent and urgency, a Code node applies routing rules, and the ticket lands in the right queue with a priority tag already set. The operators who ask for this build are typically spending two to four hours per day on manual triage. The n8n build cuts that to fifteen minutes of exception handling.
Self-hosted vs cloud: what the cost curve actually looks like
n8n.cloud prices on executions. Self-hosted on a Hetzner or DigitalOcean VM prices on infrastructure plus your ops time. Here is the direct comparison at four volume levels:
| Monthly executions | n8n.cloud Pro | Self-hosted (Hetzner/DO + DB) |
|---|---|---|
| 1K | ~$24/mo | ~$12/mo |
| 10K | ~$50/mo | ~$20/mo |
| 100K | ~$200/mo | ~$40-60/mo |
| 1M+ | $500+/mo | ~$80-120/mo + ops time |
Cloud is the right call under 10K executions per month. You get managed updates, no server babysitting, and a clean UI. Past 10K, self-hosting on a Hetzner CX21 or a DigitalOcean Droplet starts saving real money. A $12/mo VM running Postgres and n8n in Docker handles up to roughly 500K executions per month before you need to scale up. The catch is ops responsibility: you own the backups, the container updates, and the uptime monitoring. That is the trade-off, and it is a reasonable one for an operator doing serious volume.
One thing the pricing table does not show: cloud plans also limit concurrency. If your workflows have tight timing requirements or spike behavior, self-hosted with a configured execution queue handles bursts cleanly. Cloud plans can queue or drop executions during spikes depending on your tier. For operators with unpredictable traffic patterns, that alone is often the deciding factor.
The architecture pattern that survives a 10x volume spike
The most common mistake in n8n builds at scale is building monolithic workflows. One workflow that sources, enriches, scores, and sends. This works at 1,000 executions per month. It falls apart at 10,000 because a failure at step 6 of 12 means retrying the whole chain from step 1. More importantly, it makes the system impossible to debug when something goes wrong.
The pattern that holds up: split sourcing from outbound via a staging table in Postgres. Workflow A pulls leads, enriches them, and writes rows to a staging table with a status column. Workflow B reads from that table on a cron, processes records in batches, updates status on completion, and writes failures to a separate error table. This gives you independent retry, independent scaling, and a clean audit trail without any additional infrastructure. You can see the same pattern in the recruiting sourcing engine case study and the recruiting scraping and CRM pipeline case study.
For backpressure, use n8n’s built-in execution queue. In self-hosted setups, this means running n8n with the queue mode enabled (a Redis instance and a worker process). The main instance handles webhook receipt and UI. Workers handle execution. You can run two or three workers without changing anything else, and the queue distributes load automatically. This is how you go from 10K to 1M executions per month without a full rearchitecture.
Credential scoping matters too. A common oversight is using one set of credentials for all workflows. When that API key rotates or gets revoked, every workflow breaks at once. The right pattern is one credential per functional scope: one Google Sheets credential for the sourcing workflow, a separate one for the reporting workflow. Rotation becomes surgical instead of a fire drill. Pair that with n8n’s built-in execution logs and an external uptime check (UptimeRobot or BetterStack pointing at your n8n health endpoint), and you have a monitoring stack that catches problems before they become outages.
Migrations: Zapier to n8n, Make to n8n, custom scripts to n8n
Teams migrate for three reasons: cost (Zapier task pricing scales faster than execution pricing at volume), limits (Zapier’s 100-step limit per zap and Make’s operation caps), and credential control (Zapier holds your API keys). All three become urgent at different times, but cost usually triggers the conversation first. A team running 50,000 tasks per month on Zapier is spending $299 to $599 per month. The same volume on a self-hosted n8n instance costs $20 to $40 per month in infrastructure.
What usually breaks in a migration: triggers that do not have native n8n equivalents (some Zapier app triggers poll on proprietary APIs that n8n does not integrate with directly), and custom code steps written in Zapier’s Code by Zapier format that need refactoring for n8n’s Code node. The second one is usually straightforward because Zapier’s code environment is more restricted. n8n’s Code node has access to full Node.js, so the refactor is mostly removing workarounds.
The migration pattern that works: audit every existing zap or scenario, categorize by trigger type and complexity, and assign a rebuild estimate. Map Zapier or Make nodes to their n8n equivalents. Rebuild in a staging n8n instance. Run both systems in parallel for two weeks, comparing outputs. Cut over when outputs match. This takes longer than a direct swap, but it eliminates the scenario where you discover a broken edge case three weeks after migration when a critical workflow silently fails.
When to use a Code node vs a Claude node vs both
Code nodes are for deterministic work: reshaping a data object, calculating a date offset, deduplicating a list, building a URL from parts. If the output is always the same given the same input, use a Code node. It’s faster, cheaper, and debuggable. You can read the logic in the node and know exactly what it does. n8n’s documentation covers the full JavaScript and Python environments available in Code nodes.
Claude nodes, powered by the Anthropic API, are for probabilistic work: classifying intent from free-text input, extracting structured data from an unstructured email, generating a draft summary from a long document. When you need both, wire them in sequence: Claude classifies and scores the record, a Code node reads the score and routes to the correct branch. This keeps the AI work isolated to where it adds value and the routing logic deterministic and auditable. It also makes cost control straightforward: you pay for Claude tokens only on the classification step, not on the downstream processing.
The credential and security story for self-hosted n8n
n8n encrypts credentials at rest using AES-256. The encryption key is set via theN8N_ENCRYPTION_KEY environment variable on startup. If you lose that key, you lose access to stored credentials, so it goes in a secrets manager or a secure environment variable store, not in a .env file committed to a repo.
For high-sensitivity credentials (payment processors, internal service accounts), skip n8n’s credential store entirely and inject them as environment variables at container start. The workflow reads process.env.MY_KEY in a Code node rather than selecting a stored credential. This means the key never touches the n8n database, and access is controlled at the infrastructure level. For team setups where multiple people access the n8n UI, n8n Pro and Enterprise support SSO via SAML or OIDC, which means you can tie access to your existing identity provider rather than managing n8n-specific passwords.
Backup strategy: a daily Postgres dump of the n8n database, encrypted and pushed to off-site storage (S3, Backblaze B2, or equivalent). The dump captures all workflow definitions, execution history, and encrypted credentials. Workflow definitions can also be exported as JSON from the n8n UI and stored in a git repo, which gives you version history and a human-readable audit trail. Both together takes fifteen minutes to set up and covers the two failure modes that matter: host failure and accidental workflow deletion.
Comparison: n8n vs Zapier vs Make
| n8n | Zapier | Make | |
|---|---|---|---|
| Self-hosting | Yes | No | No |
| Pricing model | Execution-based or free self-hosted | Task-based, scales fast | Operation-based |
| Code steps | Native JS and Python | Limited | Limited |
| AI nodes | First-class, built-in | Added later | Added later |
| Fit for $1-20M operators | Strong at 5K+ exec/mo | OK at low volume | OK at low volume |
The short version: if you care about self-hosting, code steps, or AI-native workflows at scale, n8n. If you are running simple linear automations under 5,000 tasks per month and want zero ops overhead, Zapier is fine. Make sits in between: better than Zapier for complex visual logic, but still cloud-only, no native code environment, and operation pricing that surprises teams as they scale. See the full comparison post for a deeper breakdown.
What a typical n8n build with Moore IQ looks like
Week one is an audit. We map your current automation stack, identify the workflows causing the most pain (usually the ones someone checks manually every morning), and agree on a build spec. No code yet. This is the step most consultants skip, and it is the one that prevents rebuilding the same broken logic in a new tool.
Weeks two through four are the build. Workflows built and tested in a staging instance against real data. You have access to the staging environment the entire time and can flag issues as they come up. Week five is handoff and training: a walkthrough of every workflow, documentation of the architecture and credential setup, and a recorded video walkthrough you can share with your team. The engagement is fixed fee. No retainer, no monthly support contract unless you want one. See the GHL migration case study for a real example of this pattern end to end.
What you own at the end
At handoff, you own the n8n instance (self-hosted on your infrastructure, or cloud on your account), every workflow, every credential, and the documentation. The Postgres database is yours. The server is yours. There is no vendor lock-in to Moore IQ. If you never want to talk to us again after handoff, everything keeps running. If you do want to come back, the documentation makes it easy to pick up where we left off. That is the deal.
Ready to see where n8n fits your stack? Run the free AI Operations X-Ray and get a ranked list of your highest-value automation opportunities in 90 seconds.
Related posts
- n8n vs Zapier vs Make in 2026: a cost and capability breakdown
- The n8n architecture pattern that handles a 10x volume spike
- n8n self-hosted vs cloud: the real cost breakdown at every volume tier
Case studies
Related services
Official resources
Frequently asked questions
- When is n8n actually better than Zapier?
- When you need self-hosting, complex branching logic, native code steps, or you're running more than 10K executions per month. Under 10K and you don't care about data residency, Zapier is fine.
- How much ops work does self-hosted n8n really take?
- About 30 minutes per month once it's stable. Postgres backups, container restarts on updates, occasional queue checks. It's not zero, but it's not a part-time job either.
- What's the break-even point for self-hosting?
- Roughly 10K executions per month. Below that, n8n.cloud's Pro tier at $24-50/mo is usually cheaper than your ops time. Above 10K, a $12/mo Hetzner VM pays for itself fast.
- Can you migrate my Zapier zaps to n8n without breaking them?
- Yes. The process is: audit, map equivalents, rebuild in staging, run both in parallel for two weeks, then cut over. Most zaps migrate cleanly. Custom webhook triggers and Zapier-only app integrations are the common friction points.
- Is n8n production-ready for mission-critical workflows?
- Yes, with the right setup. That means execution queues, Postgres (not SQLite), a monitored host, and daily backups. n8n has been production-stable since v0.195. Thousands of teams run it in production.
- Do I get access to the server after you hand off?
- You get full access to everything: the server, the n8n instance, all workflow files, and credentials. Moore IQ can be fired tomorrow and nothing breaks.
- What happens when n8n releases a breaking update?
- Self-hosted updates are manual, so nothing changes until you pull the new image. We document the pinned version at handoff, and I flag known breaking changes from the n8n changelog during the engagement.
- How do you handle secrets and credentials?
- Credentials are stored encrypted in n8n's Postgres instance, scoped per workflow. For high-sensitivity keys, we use environment variables injected at container start so they never touch the n8n UI. No plaintext anywhere.
Next step
Want this mapped for your business?
Run the 90-second AI Operations X-Ray. Free, no credit card.