Send a Webhook to Airtable

Send any webhook to Airtable. Forward incoming webhooks into an Airtable base, transforming the payload into the Airtable API format in flight.

Send a Webhook to Airtable: Transform & Forward Any Payload

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

  1. Your source service POSTs its webhook to a Webhook Relay endpoint.
  2. A transformation function parses the payload and builds an Airtable API request body.
  3. 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

  1. Go to airtable.com/create/tokens and create a personal access token with the data.records:write scope and access to your base.
  2. 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

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.

Frequently asked questions

How do I send a webhook to Airtable?

Create an Airtable personal access token with data write scope, then create a Webhook Relay endpoint that forwards to the Airtable API. Add a transform function that maps the incoming payload into an Airtable 'create records' request whose fields match your table. Point your source service at the Webhook Relay URL and every event becomes a new record.

Why can't I point my service straight at the Airtable API?

The Airtable API expects a bearer token and a specific JSON body — a records array with a fields object whose keys match your table's column names. A raw webhook from a form, payment provider or monitoring tool sends a different shape, so Airtable rejects it. Webhook Relay reshapes the request in flight so Airtable accepts it.

Can one webhook write to multiple Airtable tables or bases?

Yes. Webhook Relay can fan a single incoming webhook out to several destinations and transform it differently for each — for example two Airtable tables, or Airtable plus Slack. Add one output per table, each with its own transform and URL.

How do I map webhook fields to Airtable columns?

Parse the incoming JSON in the transform function and build a 'fields' object whose keys exactly match your Airtable column names and value types (single line text, number, single select, date, checkbox). Webhook Relay forwards whatever JSON your function produces to the Airtable API.