Cheat Sheet: Zapier Steps and Make Modules → n8n Nodes
· By AI Compare
One table for every Zapier step and Make module and its n8n equivalent.
How to use this cheat sheet
Find the Zapier step or Make module you are rebuilding in the left columns, then use the n8n node and approach on the right. Bookmark it for your migration.
Structure and triggers
| Zapier | Make | n8n | Notes |
|---|---|---|---|
| Zap | Scenario | Workflow | |
| Polling trigger | Scheduled trigger module | App trigger node (polling) | Set poll interval in the trigger |
| Instant trigger | Instant trigger (webhook) | App trigger node (webhook) | Activate workflow to register the webhook |
| Schedule by Zapier | Scenario scheduling | Schedule Trigger | Set GENERIC_TIMEZONE |
| Webhooks by Zapier (Catch Hook) | Custom webhook | Webhook | Use the Production URL after activation |
| Webhooks by Zapier (POST/GET) | HTTP – Make a request | HTTP Request | Import cURL to save time |
| Sub-Zap | Call scenario via webhook | Execute Workflow / Execute Workflow Trigger | Reusable building blocks |
| Manual run / Zap test | Run once | Test workflow + pinned data | Pin data to avoid re-triggering |
Logic
| Zapier | Make | n8n | Notes |
|---|---|---|---|
| Filter | Filter (route) | Filter | Drops items that fail |
| Paths | Router + filters | Switch (many outputs) or IF (two) | |
| Path fallback | Fallback route | Switch "fallback output" | |
| Looping by Zapier | Iterator | Automatic per-item; Split Out for arrays; Loop Over Items for batches | Most loops are unnecessary in n8n |
| Digest by Zapier | Aggregator + schedule | Aggregate node + Schedule Trigger | |
| (none) | Array aggregator | Aggregate | Combine items into one |
| (none) | Merge via routes | Merge node | Join data from two branches |
| Delay For / Until | Sleep | Wait | Long waits keep the execution open |
Data transformation (Formatter)
| Zapier Formatter | Make function | n8n expression |
|---|---|---|
| Text → Capitalize | capitalize() | {{ $json.name.toTitleCase() }} |
| Text → Lowercase | lower() | {{ $json.email.toLowerCase() }} |
| Text → Split | split() | {{ $json.full_name.split(' ')[0] }} |
| Text → Replace | replace() | {{ $json.text.replace('a', 'b') }} |
| Text → Extract email | regex / text parser | {{ $json.body.extractEmail() }} |
| Date → Format | formatDate() | {{ $json.date.toDateTime().toFormat('yyyy-MM-dd') }} |
| Date → Add/subtract | addDays() | {{ $now.plus({ days: 7 }).toISO() }} |
| Numbers → Format | formatNumber() | {{ $json.amount.toFixed(2) }} |
| Numbers → Math | math operators | {{ $json.amount_total / 100 }} |
| Utilities → Lookup table | switch() or data store | Switch node or an object lookup in Code |
| Default value | ifempty() | {{ $json.name ?? 'Unknown' }} |
Code and storage
| Zapier | Make | n8n |
|---|---|---|
| Code by Zapier (JS/Python) | (custom functions, Enterprise) | Code node (JavaScript or Python) |
| Storage by Zapier | Data store | Data tables, Redis, or database nodes |
| Zapier Tables | Data store | Data tables, Postgres, Airtable |
| Zapier Forms | (form app) | n8n Form Trigger |
Error handling
| Zapier | Make | n8n |
|---|---|---|
| Autoreplay | Incomplete executions + retry | Retry On Fail (per node) |
| Error notifications | Email alerts | Error Trigger workflow → Slack/email |
| Halt on error | Break / Rollback handlers | Stop And Error node |
| Continue on error | Resume / Ignore handlers | Continue On Fail (node setting) |
Data reference syntax
| Tool | Reference a field from the trigger |
|---|---|
| Zapier | Insert data picker: 1. Email |
| Make | {{1.email}} (module number) |
| n8n | {{ $json.email }} (previous node) or {{ $('Trigger name').item.json.email }} |
