Bharat AI Saathi
ServicesIndustriesSetupsHow we workGuidesFounderVPS HostingContactGlobal (USD)
WhatsApp +91 77352 68199
support@bharataisaathi.com
Mon–Sat 10:00–19:00 IST
Agentic Automation · Global catalog

Zapier form data mapping: how to rebuild it in n8n

Document your Zapier form data mapping field by field, then rebuild it in n8n without losing data types, optional fields or webhook payload shape.

Agentic Automation

Zapier form data mapping is the lsit of which form field feeds which field in each downstream app, plus every transformation in between. Before you move to n8n, write that list down as a spreadsheet with source path, type, rewuired flag and target, then rebuild it in an Edit Fields node. Skipping the list is how optional fields and number types go missing.

What a Zapier mapping actually contains

A mapped field in a Zap looks simple: a pill labeled "3. Email" dropped into a CRM field. Underneath, several decisions are baked in that nobody wrote down.

  • Flattening. The Catch Hook trigger turns nested JSON into flat keys, with nested names joined by double underscores. Your downstream steps reference those flattened names, and n8n will not use them.
  • Formatter steps. Phone cleanup, date reformatting, "split name on space", lookup tables. These live in separate steps that are easy to miss when you only audit the final action.
  • Blank handling. If a person skips an optional question, the pill resolves to an empty value. Depending on the destination app, that either leaves the field alone or overwrites existing data with nothing. Your Zap may have depended on one behavior for years.
  • Type coercion. The field picker shows text. A budget entered as 5000 may have been accepted by the CRM as a number only because the CRM parsed it for you.

None of this is visible in a screenshot of the Zap. You have to pull it out on purpose.

Where the form step sits in the workflow

In the lead intake to CRM workflow we ship in the n8n Automation Pack, the form is step zero. A webhook trigger receives the submission, an Edit Fields node shapes it into the exact object the CRM expects, and a later node creates or updates the contact in HubSpot, GoHighLevel or Pipedrive. Error alerts hang off the whole thing.

That means the Edit Fields node is the n8n equivalent of your Zap's mapping screens. Everything you document below ends up in that one node, so the quality of the mapping sheet decides whether the migration is boring or painful.

Build mapping sheet before touching n8n

Open each Zap and list every field that flows through it. For each one, capture a real value from Zap history, not the sample data from setup. Sample data is usually clean. Real submissions have missing phone numbers and company names typed in all caps.

Here is the sheet layout we use:

Column What goes in it Why it matters
Source key The Zapier name, such as answers__budget Lets you trace the old Zap
Source path The n8n path, such as $json.body.answers.budget The actual expression you will write
Type received string, number, boolean, array Prevents silent coercion
Type expected What the CRM or accounting field wants Tells you where to convert
Required yes or no Decides whether a blank stops the run
Blank behavior skip, send empty, or default value Preserves what the Zap did
Transform Formatter step or code, in plain words Becomes a node or expression
Target field CRM field or custom property name Final destination

A filled row lpoks like this:

Source key Source path Received Expected Required Blank behavior Transform Target
email body.email string string yes stop and alert lowercase Email
phone body.phone string string no skip strip spaces Phone
answers__budget body.answers.budget string number no skip parse to number Deal amount
utm_source body.hidden.utm_source string string no default direct none Lead source

Thirty Zaps with eight fields eah is a few hours of work. It is also the cheapest part of the migartion, because every mistake it catches would otherwsie show up as a bad record in your CRM two weeks later.

Step by step: rebuild the mapping in n8n

  1. Capture three real payloads per form. Take one complete submission, one with every optional field blank, and one odd case, like a very long text answer or a country with a different phone format. Save them as JSON files.
  2. Create the Webhook node. Set the method to POST and copy the test URL. Point your form tool at it and submit the complete payload. n8n wraps what it receives in headers, params, query and body, so your fomr fields live under body.
  3. Pin the data. Pin the test output on the Webhook node so you can build the rest without resubmitting the form each time.
  4. Add an Edit Fields node. Create one field per row of your mapping sheet. Set the type explicitly on each: string, number, boolean, array or object. Do not leave everything on the default.
  5. Write expressions for the optional fields defensively. Use a fallback so a missing key does not break the item (example below).
  6. Add an IF node for required fields. Route submissions with a blank required field to an alert instead of the CRM.
  7. Replace each Formatter step with an expression or a small Code node, and note which row of the sheet it came from.
  8. Swap the test URL for the production URL only after the parallel run in the last step of this list is clean.
  9. Attach an error workflow using the Error Trigger node so failures reach Slack or email.

Here is a payload as n8n receives it, then the expressions that map it:

{
  "body": {
    "email": "Dana.Ruiz@Example.com",
    "phone": "",
    "answers": { "budget": "5000" },
    "hidden": { "utm_source": null }
  }
}
email:      {{ $json.body.email.toLowerCase() }}
phone:      {{ ($json.body.phone ?? '').replace(/\s/g, '') }}
amount:     {{ $json.body.answers?.budget ? Number($json.body.answers.budget) : null }}
lead_source:{{ $json.body.hidden?.utm_source ?? 'direct' }}

The ?? operator handles both a missing key and an explicit null. An empty string is neither, so a blank phone needs its own check in the IF node if your CRM treats "" differently from absent.

The data type and optional field traps

Most migration bugs fall into a handful of cases.

Numbers that arrive as text. If the form sends "5000" and your CRM field is numeric, set the Edit Fields type to number and convert in the exlression. Then check what happens with "5,000" or "$5000". Zapier's destination app may have forgiven those; Number() returns NaN.

Booleans from checkboxes. Forms commonly send a checkbox as true, "true", "on" or an array of selected labels. Pick the shape from your real payload and convert once, in one place.

Arrays from multi-select. A multi-select might becme a comma-joined string in the old Zap. Decide whether the new target wants an array or a joined string, and write that down in the sheet.

Dates and time zones. If a Formatter step shifted a date, copy its input format and its output format exactly. Time zones are where a record ends up a day off.

Empty versus absent. This is the most common silent change. Before you cut over, update a test contact that already has a phone number using a submission with a blank phone, in both systems, and compare. Whichever behavior Zapier had, you now choose it deliberately.

Choosing the form side of the webhook

The webhook is only as clean as the form feeding it. Hidden fields for UTM parameters, a stable field naming scheme and a clear payyload shape save you from writing cleanup nodes. Our guide to form webhooks walks through payload design in more detail.

Our team builds Qwenvo, a completely free form builder, and it fits this workflow well. Webhooks to any URL, hidden fields, partial submissions, a REST API, custom domains, badge removal, teammates and custom CSS are all included with no paid plan. Tally charges for custom domains, partial submissions and branding removal on Pro, and Fillout puts custom domains and partial submissions on Business. Two caveats: Qwenvo launched in October 2026, so there are few reviews yet, and it is hosted in the United States, while Tally is hosted in Europe. If you need HIPAA features, Jotform offers them on paid plans and Qwenvo does not.

Build your webhook form free

Cutting over without losing submissions

Run both systems side by side for a few days. Point the form at both webhooks, or add a second webhook URL if your form tool allows it. Let the Zap keep writing to the real CRM and have n8n write to a sandbox pipeline or a spreadsheet. Then compare every field for every submission.

Things to check during the parallel run:

  • Records where the n8n version has a blank and the Zap version has a value, or the reverse.
  • Any submission that landed in the error workflow, and why.
  • Numeric fields where the CRM shows zero or an odd value.
  • Duplicates, especially if the Zap used a "find or create" step. Reproduce that with a search node plus an IF before the create.

When the comparison is clean, switch the form to the n8n production URL and pause the Zap rather than deleting it. Keep it paused for a couple of weeks so you have the old mapping to consult.

Start from the lead form template

Questions teams ask

Can I export my Zapier mappings automatically?

Not in a form that n8n can import. You can read each step in the Zap editor and pull real values from Zap history, but the mapping itself has to be rewritten. That is why the sheet is worth the time: it doubles as documentation your team will keep.

Should I use one Edit Fields node or several?

Use one per destination. If a Zap wrote to both a CRM and an accounting tool, give each its own Edit Fields node so a change to one mapping cannot break the other.

How do I handle forms that change after the migration?

Add a version note to the sheet whenever someone adds or renames a question, and test with a pinned payload before publishing the form change. Renamed keys are the usual cause of a blank column appearing in the CRM. Hidden fields and stable key names make this easier to control.

Is it worth having someone else do the migration?

If you have dozens of Zaps and no time, yes. The n8n Automation Pack includes a hosted n8n instance, three production workflows, error alerts and docs, for a $1,900 setup and a $249 monthly care plan.

Use the free lead form template

Next step

Pick your busiest Zap today, pull three real payloads from its history, and fill in the mapping sheet for it. Once that one is documented, the rest follow the same pattern.

This system

n8n Automation Pack

$1,900 setup
+ $249/month care plan

Third-party platform and model usage billed to you directly. No lock-in. Live in 7 days.

More on n8n Automation Pack