Send a Webhook to Airtable: Transform & Forward Any Payload
Send any webhook to Airtable. Step-by-step guide to forward incoming webhooks into an Airtable base, transforming the payload into the Airtable API format in flight.

You have a service that fires webhooks — a signup form, a payment provider, an e-commerce platform, a monitoring tool — and you want each event to land as a record in an Airtable base. The problem: the Airtable API won't accept the raw webhook. It expects a bearer token and a fields object whose keys match your table exactly, and the payload your source sends never looks like that.
Webhook Relay sits in the middle. It receives the incoming webhook at a stable public URL, transforms the payload into the Airtable "create records" format, and delivers it to the Airtable API — no glue server, no Zapier task limits, no maintenance.
How it works
- Your source service POSTs its webhook to a Webhook Relay endpoint.
- A transformation function parses the payload and builds an Airtable API request body.
- Webhook Relay forwards that to the Airtable API with your token, and a new record appears in your table.
Step 1: Create an Airtable token and find your IDs
- Go to airtable.com/create/tokens and create a personal access token with the
data.records:writescope and access to your base. - Find your base ID (
app...) and table name from the base's API docs page.
Step 2: Create a Webhook Relay output to the Airtable API
Create a bucket with a public input, then add an output pointing at the Airtable API:
- Output destination:
https://api.airtable.com/v0/<BASE_ID>/<TABLE_NAME> - Headers:
Authorization: Bearer <your-personal-access-token>Content-Type: application/json
Step 3: Add a transformation function
Attach a function to the output that reshapes the incoming webhook into an Airtable record. Map the fields you care about to your table's column names:
-- incoming payload is in r.RequestBody
local body = json.decode(r.RequestBody)
local payload = {
records = {
{
fields = {
Name = body.name or "New event",
Email = body.email or "",
Amount = body.amount or 0
}
}
}
}
r:SetRequestBody(json.encode(payload))
Each key under fields must match a column in your Airtable table and use a compatible value type.
Step 4: Point your source at the URL and test
Configure your source service's webhook to point at your Webhook Relay public URL. Trigger an event — or replay one from the Webhook Bin — and a new record appears in Airtable within seconds. If Airtable rejects the request, the Webhook Relay logs show the exact error so you can fix the field mapping.
Going further
- Fan out: send the same event to Slack, Notion or a Google Sheet at the same time with multiple destinations.
- Test locally first: inspect the real payload in the Webhook Bin before you write the mapping.
- Secure it: verify the source signature before forwarding so only legitimate events reach Airtable.
Get started
Create a free Webhook Relay account and turn any webhook into Airtable records — no servers to run. New to webhooks? Start with what is a webhook and how to transform webhooks.
