Airtable destination
Beta
Data Destinations is currently available as a Private Beta product and the information contained in this document is subject to change. Data Destinations is not a HIPAA Eligible Service or PCI compliant and should not be enabled in workflows that are subject to HIPAA or PCI. To learn more, see Private beta legal information.
Airtable is a collaborative database app that stores structured records in bases and tables you control. This destination sends events into an automatically created table in your own Airtable base.
- Category: CRM, Database
- Release status: Beta
- Authentication: API token
- Regional availability: US1
Get early access to native destinations for data warehouses, observability tools, and event pipelines.
You can send all event types supported by Event Streams to Airtable. This destination has no user-identifier restriction.
Twilio recommends the Airtable destination for subscriptions that generate less than 50 events per second
Airtable enforces hard limits of 5 requests per second and 10 records per request. This results in a limit of 50 events per second. If your subscription generates more than 50 events per second, Twilio retries delivery with backoff.
Before you set up an Airtable destination, make sure you have:
- An Airtable base that you control: Twilio creates a table in this base the first time you save a subscription. The table includes four fixed columns:
event_id,event_timestamp,event_type, andpayload. Don't create the table yourself, rename it, or edit its columns. If the table isn't created by Twilio or has unexpected changes to its columns, Twilio might reject further delivery to Airtable because of a schema mismatch. - An Airtable Personal Access Token scoped to that base: This token must have the
data.records:write,schema.bases:read, andschema.bases:writescopes. To learn more, see the Airtable guide to creating personal access tokens.
Info
See Set up a destination for the full UI and Destinations API setup flow common to every destination type.
To create an Airtable destination in the Twilio Console:
- From your Airtable account, gather the settings listed in Destination settings.
- In the Twilio Console, go to Data > Data Destinations > Destinations > Add destination subscription.
- Complete the Add destination subscription wizard.
To create an Airtable destination through the Destinations API, send a POST request to the Destinations endpoint and set destinationType to airtable. For authentication and the other request body fields, see Create a destination.
POST "https://destinations.twilio.com/v1/ControlPlane/Destinations"
Set the config object in the request body as follows:
| Name | Type | Description |
|---|---|---|
baseId (Required) | string | Airtable base that receives records. |
credentials.credentialType (Required) | string | Set to API_TOKEN. |
credentials.token (Required) | string | Your Airtable personal access token. |
The following example shows a request body. Replace the uppercase placeholder values with your own.
1{2"destinationType": "airtable",3"name": "My Airtable destination",4"config": {5"baseId": "BASE_ID",6"credentials": {7"credentialType": "API_TOKEN",8"token": "PERSONAL_ACCESS_TOKEN"9}10}11}
| Field | Description | Required | Default or choices |
|---|---|---|---|
| Personal Access Token | Airtable Personal Access Token. Sent as a bearer token on every request. Sensitive, stored encrypted. | Yes | None |
| Base ID | The Airtable base that receives records. Cannot be changed after the destination is created. | Yes | None |
Twilio authenticates to Airtable by using your Personal Access Token, sent
as an Authorization: Bearer header on every request. You can rotate your
token at any time by updating the destination. Unlike the Base ID, the
token isn't locked once the destination is created.
| Field | Airtable column |
|---|---|
| Event ID | event_id |
| Event time | event_timestamp |
| Event type | event_type |
| Event payload | payload (JSON) |
Twilio delivers records using the Airtable upsert API, matching on event_id,
so a retried or duplicate delivery updates the existing row instead of
creating a duplicate one.
When you save an Airtable destination, Twilio verifies your Personal Access Token and confirms your base is reachable before marking the destination active. This check doesn't confirm your token has permission to create tables. Twilio verifies that only the first time you save a subscription, when it attempts to create the destination table.
Twilio doesn't currently offer a way to manually trigger a test event for this destination from either the Console or the CLI. To confirm delivery is working, wait for a real event of a subscribed type to fire.
| Cause | What you'll see | Fix |
|---|---|---|
| Invalid or revoked Personal Access Token | Validation fails with an auth error | Re-check the token in Airtable and update the destination |
| Base doesn't exist, or isn't visible to the token | Validation fails with a resource error | Confirm the Base ID and that the token has access to it |
| Token lacks table-creation permission | Table creation fails when you save a subscription | Grant the token the schema.bases:write scope |
| Table already exists with a different schema (for example, its columns were edited manually) | Table creation fails with a resource error | Delete the conflicting table, or use a different base |
| Airtable rate-limiting your base (5 requests/sec) | Delivery errors reported in the Debugger | Reduce your event volume, or spread bindings across multiple bases |
If Twilio can't deliver events to your table, Twilio sends an error notification to the Debugger (available in US1 region only). If Twilio continues to encounter delivery errors, Twilio notifies you every 20 minutes after the initial error.