Skip to content
Airtable

Connector · Data and docs

Airtable, in every client’s workflows.

Create a record, find records, or start when a record is added, with the client’s own Airtable account.

Triggers
2start a workflow
Actions
3steps in a workflow

Start a workflow when something happens in AirtableBeta

By webhook where Airtable sends one, by checking where it does not. A webhook is checked once a day to see it is still on, and if Airtable turns it off the alert carries a Reconnect button.

  • A record is addedPolledA new row in a table, checked every 15 minutes. The token needs data.records:read.
  • A record is changedPolledA row edited in a table, checked every 15 minutes; optionally only rows in a view (“A record enters Ready to quote”). Airtable says when a row changed only through a field: add a “Last modified time” field to the table (limit it to the columns that matter) and name it here. The token needs data.records:read.

Do it in Airtable

A step with its own fields: values from the run go in by name, and what Airtable answers is there for the next step.

  • Create a recordAdd one row to a table. Field names must match the table’s columns.
  • Find recordsEvery matching record, up to 1,000 (ten pages of 100). Past that, the step says it stopped and Airtable’s offset is kept. Nothing found is an empty records list.
  • Update a recordChange fields of one record, found by its id. Fields left out keep their value.

Connect the client’s Airtable

On the client’s page in Thrum: Add credential, type Airtable personal access token.

airtable.com/create/tokens → Create token → scopes data.records:write and data.records:read (lookups and the triggers) → add the client’s base → copy the token.

The key is stored encrypted and bound to that client: another client’s workflow cannot use it, and no template or pack copies it.

Airtable’s API documentation

Via HTTP

Or by web request: add a record to a table

Every lead lands as a row in the base the client already runs their business from. The web request step, filled in: paste it, swap in the client’s ids, add their key.

  1. 01

    Add the client’s credential

    On the client’s page in Thrum: Add credential, type API key. airtable.com/create/tokens → Create token → scope data.records:write → add the client’s base → copy the token.

    {
      "api_key": "pat…"
    }
  2. 02

    Add a web request step

    Name it “Add to Airtable”, set it as here, and pick the credential. Values in double braces are read from the run: here, the lead the form brought in.

    BASE_ID
    The part of the base’s address that starts with app: airtable.com/appXXXXXXXXXXXXXX/….
    TABLE_NAME
    The table’s name (spaces as %20) or its id, which starts with tbl.
    Name, Email, Phone, Request
    Each key in fields is a column name in the table, spelled exactly.
    {
      "method": "POST",
      "url": "https://api.airtable.com/v0/BASE_ID/TABLE_NAME",
      "headers": {
        "Authorization": "Bearer {{ credential.api_key }}"
      },
      "body": {
        "fields": {
          "Name": "{{ lead.name }}",
          "Email": "{{ lead.email }}",
          "Phone": "{{ lead.phone }}",
          "Request": "{{ lead.summary }}"
        },
        "typecast": true
      }
    }
  3. 03

    What goes out, and what comes back

    `typecast: true` lets Airtable turn text into a select option or a date; without it a value that does not fit the column is refused.

    POST https://api.airtable.com/v0/BASE_ID/TABLE_NAME
    content-type: application/json
    authorization: Bearer ••••••••
    
    {
      "fields": {
        "Name": "Nadia Karim",
        "Email": "nadia@example.com",
        "Phone": "+447700900222",
        "Request": "Quote for a new bathroom, two basins and a shower"
      },
      "typecast": true
    }
    200
    {
      "id": "rec8hT2kQ9xLmW1",
      "createdTime": "2026-09-28T09:05:01.000Z",
      "fields": {
        "Name": "Nadia Karim",
        "Email": "nadia@example.com",
        "Phone": "+447700900222",
        "Request": "Quote for a new bathroom, two basins and a shower"
      }
    }

Watched like everything else

When Airtable stops answering or refuses the client’s key, you hear about it, and your client does not.

A failing request
Tried 3 times, 5 seconds apart and doubling, only for errors a retry can fix
A service that asks for a pause
Given it, up to an hour
Requests at once, per account
2, per worker; the rest wait their turn
Timeout
15 seconds, unless the step sets its own
Private and internal addresses
Refused, on every redirect too
The client’s key
Encrypted, bound to the client, and kept out of every run record
A step that keeps failing
Marks the workflow Degraded and alerts you, not the client

Airtable and its logo are trademarks of their owner, used here only to say what Thrum works with; no endorsement is implied.

Thrum is cooking.

Get early access and you’ll be among the first in. Early members get a launch perk.