Make.com build, running on sample data
Your intake form connected to your Airtable client database, built and running end to end on a synthetic intake. A WordPress JetFormBuilder submission comes in through a webhook, the automation checks whether that client is already in the base, and then either adds a new record or updates the existing one. No duplicates.
Built from the request you posted publicly on Make's Hire a Pro board. Rather than write to you about how I would do it, I built it and put it here so you can see it run. Everything below uses invented sample data. There are no live keys and nothing touches your account.
Why a working build instead of a message
You wanted this connected and tested right away, so the most useful thing I could send is the thing itself rather than a description of it. The part that matters in a client database is that the same person submitting twice does not become two records, so the whole flow is built around a check before write. The two places it earns its keep, the field mapping and the deduplication, are called out inline.
A synthetic matchmaking intake form posts a submission to Make. The Clients table in Airtable holds one row per person, keyed by email. The automation has to keep it that way: a returning applicant updates their row, they do not spawn a second one.
gateway:CustomWebHook · receives the intake POST
The webhook receives one submission. Here is the sample intake bundle Make sees:
util:SetVariables · with a filter
A blank or malformed email would break the match and let a junk record through, so a filter here requires a well-formed email before the flow continues. The email is lowercased and trimmed into one value the search and the write both use, so casing or a stray space cannot cause a false new record.
airtable:Search Records · match on email
The same scenario handles both of the cases below. The only thing that differs is what the search returned.
builtin:BasicRouter · to Create a Record or Update a Record
The existing record is updated in place. Changed fields move, the identity and history stay:
| Field | Was | Now |
|---|---|---|
| City | Portland | Seattle |
| Preferred Age Range | 35-45 | 36-46 |
| Phone | +1 206 555 0143 | +1 206 555 0197 |
| Intake Count | 1 | 2 |
| Last Updated | 2026-05-20 | 2026-07-05 |
| First Seen kept | 2026-05-20 | 2026-05-20 |
| Email key | priya.nair@example.com | priya.nair@example.com |
onerror handler on each write · builtin:Break
Airtable can rate limit or return a transient error under load. Each write has an error handler that retries a few times at an interval, and if it still fails, the run is stored as an incomplete execution you can resume rather than dropped. The scenario also carries an error tolerance so one bad submission does not stall the rest.
The runbook notes where to add a notification before the retry, or a small dead letter table that captures the raw payload, if you want a louder signal on repeated failures.
The importable Make blueprint and a module by module runbook. The blueprint uses the native Airtable Search Records, Create a Record, and Update a Record modules, and the JetFormBuilder side is a standard custom webhook. Connect your Airtable and set the base and table, and it runs.