Rebuilding Complex Workflows (and Making Them Better)
- Identify opportunities to consolidate multiple related source workflows into a single n8n workflow
- Rebuild loops using the Loop Over Items node and understand why this is better than Zapier loops
- Rewrite custom code for n8n's Code node, handling the different data model and npm package support
- Configure an Error Trigger workflow as the first migration step, before any production workflows are rebuilt
What Makes a Workflow Complex
Complex migrations involve one or more of: loops or iterators, conditional branching with multiple paths, custom code, error handling routes, Make Data Store or Zapier Storage dependencies, or multi-Zap chains where several workflows depend on each other. These take 2–6 hours each and require careful planning. They are also the biggest opportunity to improve the automation beyond its original design.
Strategy 1: Consolidate Related Workflows
One of the most common patterns in Zapier and Make stacks is multiple workflows that logically belong together but were separated because of platform limitations — Zapier's step limits, Make's module cost, or the difficulty of branching. In n8n, these consolidate naturally:
- Three Zapier Zaps handling three different cases of the same trigger → one n8n workflow with a Switch node routing to three branches.
- A Make scenario that calls a webhook to trigger a second scenario → one n8n workflow using the Execute Workflow node or sub-workflow pattern.
Look for consolidation opportunities in your audit. Fewer workflows means less to monitor and maintain.
Strategy 2: Replace Loops Properly
Looping in Zapier requires the premium Looping app and is awkward to configure. Make's Iterator module is cleaner but still counts operations per iteration. In n8n, the Loop Over Items node processes each item in an array natively, passing items one at a time to the nodes inside the loop. There is no premium requirement and no per-iteration cost. When migrating a loop, ensure the loop input is a proper array — use an Aggregate node or Set node to reshape the data if needed.
Strategy 3: Rewrite Custom Code
Custom code in Zapier and Make runs in restricted sandboxes. n8n's Code node supports full Node.js with any npm package, or Python with any pip package. When migrating code:
- Test the existing code logic in isolation first — understand exactly what it does before rewriting.
- Rewrite for n8n's data model: inputs arrive as
$input.all()(array of items), output should be an array of item objects. - Install any npm packages via the Code node's package manager if they are not already available.
Strategy 4: Rebuild Error Handling
Zapier stops a Zap on error and notifies you. Make allows error routes per module. n8n handles errors at two levels: individual nodes can route their error output to a fallback path, and an Error Trigger workflow catches any unhandled execution failure across all workflows. Build the Error Trigger workflow first — before migrating any production workflows — so errors are caught from day one.
Strategy 5: Replace Data Stores
If the source workflow uses Zapier Storage or Make Data Store, identify what data is stored, how it is accessed, and how frequently it changes. Choose a replacement — Airtable for simple structured data, Supabase or Postgres for complex queries, Redis for fast key-value access — and migrate the data before testing the rebuilt workflow. The rebuild will fail until the data store replacement is in place.
Test with Representative Data
Complex workflows need more thorough testing than simple ones. Test with at least three representative input scenarios: a typical case, an edge case (missing optional fields, empty arrays, unusual values), and a known error case. A workflow that handles edge cases correctly in n8n was often more fragile in its original form — migration is the right time to build in that resilience.
- Consolidation opportunity: multiple Zaps or Scenarios handling one process often become one clean n8n workflow
- Loop Over Items is available on all n8n plans and has no per-iteration billing — a major improvement over Zapier loops
- Build the Error Trigger workflow first — it catches failures across all workflows and should exist before any production traffic
- Test complex migrations with typical, edge case, and error-case inputs — not just the happy path