All segments

n8n + Zapier: A Migration Guide for Shopify Teams

How to choose between n8n and Zapier for Shopify automation, and the method to migrate Zaps to n8n without a gap in coverage mid-cutover.

  • Published
  • Reading time 11 min read
  • Author Nafiul Hasan
n8n + Zapier: A Migration Guide for Shopify Teams. Diagram: work crossing a boundary. RUN n8n + Zapier: A Migration Guidefor Shopify Teams YOURSTHEIRS pointerflow.com

Short answer

n8n vs Zapier for Shopify automation comes down to ownership: n8n runs on your own infrastructure with execution-based cost, Zapier runs on theirs with task-based cost. Migrating means inventorying every Zap, rebuilding each trigger and action as its own node, running both in parallel, then cutting over once outputs match.

Who this is for

n8n + Zapier decisions come up at a specific point: a Shopify Plus or subscription-platform brand doing $3M–$30M a year has outgrown a handful of simple Zaps, is paying for task volume it didn’t expect, and wants to know whether moving that automation to n8n is worth the engineering time. If you’re running fewer than a dozen Zaps and none of them touch more than a few hundred records a month, the migration cost in this article will exceed what you’re spending on Zapier; stay put instead. This is written for teams where automation already touches order flow, fulfilment, or customer data at a volume where the platform bill or the platform’s limits have become a real line item.

What n8n and Zapier are each built for

Zapier is built to get a non-developer from “I want X to trigger Y” to a working automation in minutes, hosted entirely on Zapier’s infrastructure, billed per completed action. n8n is a workflow engine you can run on Zapier’s cloud or on your own server, built for people comfortable editing JSON and reading API documentation, with a Code node for logic that Zapier would push into a separate paid step. The tools differ in their strengths: Zapier wins on time-to-first-automation and vendor-managed reliability; n8n wins on cost at volume, data ownership, and the ability to write arbitrary logic a point-and-click builder can’t express.

The practical dividing line is workflow complexity and execution volume, not company size. A five-person brand running a single high-volume, revenue-critical sync (say, order data into a warehouse system every few minutes) can justify n8n before a fifty-person brand running a handful of low-volume marketing Zaps ever needs to.

Prerequisites before you touch a single Zap

Before rebuilding anything, get four things in place:

  • A place to run n8n. Self-hosted (your own VPS or container) or n8n Cloud. Self-hosting is what gives you unlimited executions and full data ownership; n8n Cloud trades that for a hosted setup closer to Zapier’s.
  • Admin access to every app your Zaps touch. You’ll be re-authenticating Shopify, Klaviyo, Recharge, your helpdesk, and anything else — n8n credentials are separate from Zapier’s, even for the same app.
  • A staging or test resource for anything that writes data — a test Shopify order, a test customer record — so running the new and old automation side by side doesn’t touch live customers.
  • A list of who gets notified when something breaks. Zapier emails the Zap owner by default; n8n does not notify anyone unless you build an error workflow yourself — a required setting, covered next in this method.

Inventory every Zap you actually run

Open Zapier’s dashboard and list every active Zap, not just the ones you remember building. For each one, record: the trigger app and event, every action step in order, the monthly task count (Zapier’s Usage page shows this per Zap), and what breaks downstream if it stops running. A Zap that’s fired twice in the last quarter is a low-priority migration candidate regardless of how important it sounds; a Zap burning thousands of tasks a month on a five-step chain is a high-priority one even if nobody thinks about it day to day.

This inventory is also where you catch Zaps nobody remembers the purpose of. Turn those off before migrating anything — don’t carry dead automation into the new platform.

Rebuild the trigger first

Start each migration with the trigger alone, and confirm it fires correctly before adding a single action. Two trigger types cover most Shopify automation:

  • Webhook-based triggers (new order, new customer, cart update): n8n’s Webhook node gives you a URL to register directly with Shopify, or n8n’s dedicated Shopify Trigger node, which subscribes to Shopify’s webhook topics using the same store credentials Zapier’s Shopify trigger asked for.
  • Polling-based triggers (checking an app on a schedule because it has no webhook): n8n’s Schedule Trigger node replaces Zapier’s polling interval — set the interval explicitly; n8n doesn’t infer one from your plan tier the way Zapier does.

Test the trigger in isolation. Send a test order, watch it land in n8n’s execution log, and confirm the payload has the fields the next step needs before building anything downstream.

Rebuild each action, one node at a time

Rebuild the Zap’s action steps as n8n nodes in the same order, testing after each one rather than wiring the whole chain and debugging it as a block. Most common Zapier actions have a direct n8n equivalent (HTTP Request node for anything without a dedicated app node, plus dedicated nodes for Shopify, Klaviyo, Slack, Google Sheets, and most major SaaS tools). Where Zapier used a Filter step, n8n’s IF node does the same job; where Zapier used Paths for conditional branching, n8n’s Switch node covers it.

The step people skip: checking whether an app node in n8n actually supports the same API version and fields the Zap relied on. Some Zapier app integrations are more complete than their n8n equivalent, or vice versa — verify the specific fields you need exist in the n8n node before assuming parity, rather than after the workflow is live.

Add the error handling Zapier gave you for free

Error handling is the step most teams get wrong, and it’s the reason a migration that looked clean in testing produces a silent failure in production. Zapier emails the Zap owner automatically when a Zap errors out. A self-hosted n8n workflow does none of that unless you build it, and the default behaviour on failure is to stop and log an error nobody sees until they go looking.

Three settings, all in the workflow’s own configuration, close that gap:

  • Error Workflow (Workflow Settings → Error Workflow): point every production workflow at a separate “on error” workflow that sends a Slack message or email with the failed execution’s ID. Without this set, a failed execution produces nothing but a log entry.
  • Retry On Fail (on the individual node, typically HTTP Request or an app node calling an external API): turn it on, set Max Tries to 3 and Wait Between Tries to around 5000ms for most Shopify and app-API calls. Zapier’s built-in retry logic did this invisibly; on n8n it’s a setting you have to turn on yourself.
  • Save Manual Executions and Save execution progress (Workflow Settings): keep both on for any workflow handling orders, refunds, or customer data, so a failed run leaves a record you can replay rather than one that vanishes.

A workflow with no Error Workflow attached and Retry On Fail left off will run correctly in testing and then fail invisibly in production the first time an app has a slow response or a brief outage — exactly the kind of failure Zapier’s defaults hid from you.

Run both in parallel before you cut over

Once the n8n workflow passes its own tests, don’t turn off the Zap yet. Leave the Zap live and running, disable or redirect the n8n workflow’s write actions to a test resource, and let both process the same live triggers for a defined window: long enough to see your normal volume pattern, not just a quiet day. Compare the outputs: same order data reaching the same destination, same fields populated, same timing. Where n8n produces a different result (a missing field, a different date format, a failed retry Zapier’s defaults would have absorbed), fix it before either platform runs alone.

The point of this step is that a broken Zapier-to-n8n migration doesn’t announce itself. It produces a smaller number of correct orders, or a slightly different field format a downstream system silently mishandles, and nobody notices until a customer or a report does.

Cut over and decommission the Zap

Once outputs have matched for the full parallel-run window, switch the n8n workflow’s write actions to live, turn the Zap off (don’t just pause it; paused Zaps still count toward task limits on some plans and are easy to reactivate), and remove any Shopify webhook subscription still pointed at Zapier’s URL. Watch n8n’s execution log closely for the first day of solo running, the same way you’d watch a newly deployed feature.

Keep the Zap’s configuration documented somewhere even after deleting it — if the n8n workflow needs to be rolled back under time pressure, you want the reference, not a rebuild from memory.

n8n vs Zapier: ownership, self-hosting and who holds the workflow

The ownership difference is the real reason teams migrate, more often than the cost difference. A Zap lives on Zapier’s infrastructure; if Zapier raises prices, changes a plan’s limits, or deprecates an app integration, you inherit that decision. A self-hosted n8n workflow lives on infrastructure you control: the workflow definitions, the execution history, and the server itself are yours, and they stay yours if you ever change automation vendors or agencies. Pointerflow builds and runs n8n automations on the client’s own VPS specifically for this reason — unlimited executions on that server, and the workflows are yours to keep if the engagement ends.

Self-hosting isn’t free of tradeoffs. You take on server maintenance, n8n version upgrades, and backup responsibility that a vendor-hosted platform absorbs for you. That tradeoff is worth making at the volume and criticality where ownership and cost matter more than convenience; not before.

n8n vs Zapier: pricing units, hedged

The two platforms don’t just charge different amounts; they charge for different things, and that’s what makes a direct dollar comparison misleading without checking current numbers yourself. Zapier’s published pricing bills per completed task, where each action step in a Zap counts as one task every time the Zap runs. n8n’s cloud pricing and self-hosted licence terms are structured around workflow executions rather than individual action steps, so a workflow with several action nodes that runs once counts differently than the same shape would under Zapier’s model. Make, if you’re weighing a third option, bills per operation under its own separate credit system.

None of those unit definitions are numbers worth repeating here, because platforms change plan structures and thresholds regularly enough that a figure quoted today can be wrong by the time you read it. Check n8n’s own pricing documentation and Zapier’s current pricing page directly before building a cost model, and build that model around your own actual task or execution count, taken from the Zap inventory described in the migration method, not a vendor’s example usage.

What breaks when you migrate

Four failure modes show up repeatedly in Zapier-to-n8n migrations, and all four are avoidable if you know to check for them:

  • Silent failures from missing error handling: the most common cause of a migration that looks successful in testing and fails in production, because n8n doesn’t email anyone on failure unless you build that in yourself.
  • Rate-limit errors on high-volume API calls: Zapier throttles requests to many apps automatically; n8n sends requests as fast as the workflow allows unless you add a Wait node or configure Retry On Fail with a meaningful wait between tries.
  • Date and timezone formatting differences: Zapier’s Formatter step and n8n’s Code node or Date & Time node don’t handle formats identically by default; a field that looked fine in the parallel-run test can still drift on an edge case like a different timezone offset or a locale-specific date string.
  • Duplicate webhook deliveries during cutover: if both the old Zapier webhook subscription and the new n8n one are registered against the same Shopify topic at the same time, Shopify sends the event to both, and you get duplicate orders, duplicate emails, or duplicate tickets until one is removed.

How to verify the migration worked

Verification isn’t a single check; confirm three things in order before calling a migrated workflow done. First, that the trigger fires reliably: watch n8n’s execution log across a normal volume day, not just a manual test. Second, that every field the old Zap populated downstream is still populated correctly: check the destination system directly, not just n8n’s execution output, since a field can look correct in n8n and still arrive malformed elsewhere. Third, that a deliberately failed execution (a bad test payload, a temporarily disabled API credential) actually produces the alert your Error Workflow is supposed to send. A migration without its failure path tested isn’t truly verified; it’s merely hoped for.

Moving Zaps to n8n is an agents-and-automation decision as much as a tooling one: the workflow now runs unattended against production data, on infrastructure you’re responsible for keeping correct. Pointerflow builds and runs these automations for Shopify, Klaviyo and Recharge on the client’s own VPS as part of our AI agents and automation work, including the error handling and parallel-run discipline this article describes — worth a look if a Zapier-to-n8n migration is more engineering time than your team has free right now, or if you’re weighing this alongside a broader Shopify Plus automation build.

Sources

  • No external figures are quoted in this article. Platform behaviour (n8n workflow settings, Zapier’s default failure notifications, each platform’s billing unit) is described from n8n’s own product documentation, Zapier’s own product documentation, and Pointerflow’s first-hand work building and running n8n automations on client infrastructure. Current pricing for either platform should be checked on their respective pricing pages before building a cost model.

Frequently asked

Is n8n a real replacement for Zapier, or just a cheaper clone?

n8n replaces the workflow-building surface — triggers, actions, conditional branches, webhooks — but it is not a Zapier clone. n8n runs as a workflow engine you host, with a code node for logic Zapier would push you toward a paid Formatter step for. Some Zapier app integrations have no direct n8n node, so the switch has to be checked app by app, not assumed.

Can I run n8n and Zapier at the same time during migration?

Yes, and you should. Leave the Zap live, build the equivalent n8n workflow with its write actions disabled or pointed at a test resource, and compare the two side by side for a defined window before either one goes live alone. Running both against the same live data at the same time is what causes duplicate orders, tickets or emails.

Does n8n need a developer to set up?

Basic workflows — trigger, a few actions, one condition — need someone comfortable with JSON and API documentation, not a software engineer. Anything with pagination, retries, rate-limit handling, or custom logic in the Code node benefits from someone who has built API integrations before. Budget more setup time than a Zap of the same shape.

What happens to my Zap history when I migrate?

Nothing — Zapier keeps its own task history for as long as your account retains it, and n8n starts a separate execution log from zero. If you need continuity for auditing, export or screenshot the Zap's history before you delete it; there is no automatic transfer between the two platforms.

Will my Shopify webhooks still work after I switch to n8n?

Shopify webhooks point at a URL, not at Zapier specifically, so you register a new webhook subscription pointing at your n8n Webhook node's URL and remove the old one pointing at Zapier's. The two cannot both receive the same webhook topic without Shopify sending duplicate deliveries, so the swap has to be a single change, not two.

How do I handle rate limits differently in n8n versus Zapier?

Zapier applies its own throttling and queues tasks against most apps' rate limits by default. n8n does not queue for you — a Split In Batches node with a Wait node between batches, and Retry On Fail with a wait between tries, is the equivalent you have to build explicitly for any node calling a rate-limited API.

What's the real cost difference between n8n and Zapier at scale?

The unit changes, not just the price: Zapier bills per task (each action step that runs), n8n bills per workflow execution regardless of how many nodes fire inside it. A workflow with eight action steps that runs 10,000 times is 80,000 Zapier tasks but 10,000 n8n executions — check both platforms' current pricing pages before you commit either way.

Can n8n trigger from a Shopify order the same way Zapier does?

Yes — n8n has a dedicated Shopify Trigger node that subscribes to Shopify's webhook topics (orders/create, orders/paid, and others) the same way Zapier's Shopify trigger does. The setup asks for the same store credentials and topic selection; the difference is where the resulting workflow runs afterward.

Do I need to migrate every Zap at once?

No — migrate by task volume and business criticality, not all at once. A Zap that fires twice a day can stay on Zapier indefinitely while you move the ones burning the most tasks first. Partial migration is normal and often permanent for low-volume, low-risk automations.

What's the biggest mistake teams make moving from Zapier to n8n?

Assuming failure handling carries over. Zapier emails you when a Zap fails by default; a self-hosted n8n workflow fails silently unless you explicitly attach an Error Workflow and configure retries. Teams that skip this step find out their automation broke days later, from a customer complaint, not from n8n.

Is self-hosted n8n harder to maintain than Zapier?

It carries real ongoing maintenance Zapier does not: server updates, n8n version upgrades, backups of the workflow database, and uptime monitoring, since there is no vendor keeping it running for you. That maintenance is the tradeoff for owning the infrastructure and the data that runs through it.

Can I use n8n for some workflows and Zapier for others long-term?

Yes, and many teams settle there rather than migrating everything. High volume, sensitive-data, or logic-heavy workflows move to n8n for cost and ownership; low-volume, low-risk, or app-only workflows with no n8n node equivalent stay on Zapier. The split is a permanent operating decision, not a transition state.

Next step

Is this your ai agents & automation problem, or a symptom of another one?

Bring your numbers — the churn split, the decline rate, whatever your flows are earning — and we will tell you which of them is the expensive one.

Book a call →