Airtable
Connect an Airtable account to ingest its bases into your organization as datasets you can query alongside the rest of your data. Ingestion only reads from Airtable. It never changes anything there.
Connect your Airtable account
-
From your organization, open Integrations in the sidebar. Find Airtable (in the Storage category) and click Connect.
-
Airtable's consent screen opens. Choose the bases, or whole workspaces, OSO may read, then allow access. You'll be redirected back to Integrations, where a "Connected Airtable" notification confirms the connection. If something goes wrong, you'll see "Couldn't connect Airtable" instead — try again.
OSO can only see the bases you grant on the consent screen, and only those show up when you create an ingestion. To add bases later, click Manage on the Airtable row and then Add account, and grant them on Airtable's consent screen again. Keep selected the bases your existing ingestions use, or those ingestions may show "This base is no longer shared with Artio".
You can connect more than one Airtable account. To add another, click Manage on the Airtable row and then Add account.
Create an ingestion
Each ingestion covers one base. One account can have several ingestions.
-
On the Integrations page, click Manage on the Airtable row. Each connected account is listed in the dialog.
-
Click Add ingestion next to the account.
-
In the Add an Airtable ingestion dialog, pick the Base to ingest. Use the filter to narrow a long list.
-
Set the Dataset name. A valid name is suggested from the base's name; use lowercase letters, numbers and underscores, starting with a letter.
-
Under Tables, choose what to ingest:
- All tables — every table in the base is ingested, including tables added later.
- Specific tables — tick the tables you want. Select at least one.
-
Click Add ingestion.
The dataset is created and starts syncing right away. It's listed in the same dialog, and its sync status is visible in the Data Catalog.
Change which tables are ingested
In the Manage dialog, click the pencil icon (Edit tables) on the ingestion's row, adjust the selection, and click Save tables. The base and the dataset name are fixed once the ingestion exists. To ingest a different base, add a new ingestion. A table you remove from the selection stops updating, but its data stays in the warehouse.
Troubleshooting the base and table lists
- No Airtable bases found — no bases have been granted. Click Add account in the Manage dialog and grant the bases you want, then reopen the ingestion dialog.
- This base is no longer shared with Artio — the account can no longer read the base. Click Add account in the Manage dialog and grant the base again.
- This Airtable account needs reconnecting — Airtable rejected the account's connection. Click Add account to authorize it again, then reopen the ingestion dialog.
- Airtable is unavailable — OSO couldn't load your bases and tables from Airtable. Click Refresh to try again in a moment.
What the tables look like
Every Airtable table is stored as a warehouse table with one row per record. Each has these columns, followed by one column per Airtable field:
| Column | Contents |
|---|---|
id | The record's Airtable id |
created_time | When the record was created |
How fields are stored:
- Simple fields (text, numbers, checkboxes, dates and similar) become plain values.
- Linked records, multi-selects, attachments, collaborators and other complex types are stored as JSON text.
- A formula or rollup that errors is stored as null in a number, date or
checkbox column, and the run log counts these cells. In a text column, or a
formula with no result type, the error is kept as JSON text, for example
{"error": "#ERROR!"}. - Table and column names are normalized. A name gets a suffix, derived from the
last 6 characters of the Airtable id, when it collides with another name or
starts with the reserved
_dlt_prefix (its leading underscores are dropped). A column name also gets one when it collides withidorcreated_time.
How data is refreshed
Every run fully refreshes the tables, so edits, new records and deleted records all show up on the next run.
If a run fails, its message says why. The main cases:
- Airtable access has expired or been revoked. Reconnect Airtable with Add account, then re-run the ingestion.
- Airtable denied access to the base (403). Check that the connected Airtable user can read it, then re-run the ingestion.
- Airtable couldn't find the base or one of its tables (404), which may have been deleted or moved. Re-run the ingestion, or edit it to pick tables that still exist.
- "None of the Airtable tables selected for this dataset exist in the base anymore." Re-select the tables on the ingestion, then re-run it.
- Airtable is rate limiting requests, is having an outage, or can't be reached. Try again later.
Limitations
- Attachment URLs expire. Airtable's attachment links stop working after a few hours, so they aren't permanent links.
- Renaming a field changes its column name. The column appears under the field's new name.
- Connections expire after about 60 days unused. Airtable expires a connection that nothing has used for that long: no ingestion has run and no base or table list has loaded, since each of those refreshes it. You then need to reconnect with Add account.
- Only the dataset's creator can edit it. Other members of your organization can't change its tables.
Remove an ingestion or disconnect an account
- Delete an ingestion. In the Manage dialog, click the trash icon on the ingestion's row and confirm Delete this ingestion?. This deletes the dataset and stops future syncs. The account stays connected, so you can add an ingestion again later.
- Disconnect an account. Click the disconnect icon on the account's Connected account row and confirm Disconnect Airtable?. This removes the connection and deletes the account's Airtable ingestion datasets along with the data already ingested. You can reconnect and set the account up again at any time.
Neither action changes anything in Airtable itself.