> ## Documentation Index
> Fetch the complete documentation index at: https://help.wotnot.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Airtable

> Fetch records from your Airtable. Airtable is a cloud-based database like Google Sheets to store data.

![Image](https://mintcdn.com/wotnot/ZvBlY58cOcRHCVBj/images/image-552.png?fit=max\&auto=format\&n=ZvBlY58cOcRHCVBj\&q=85\&s=8aef65fbd88fb9ed9a06cf2fdba761ae)

> [!NOTE]
>
> Available on the **Starter plan and above** & **WEB Channel** only.

> [!NOTE]
>
> **Fetch only:** The Airtable integration is read-only. You can fetch records from Airtable, but you cannot push, create, or update records using this native integration.

# What you can do

| What you can do | What it does | Action block |
| - | - | - |
| Fetch records | Retrieve records from a selected Airtable base and table using filter criteria. The returned data can be rendered as buttons, carousels, or image carousels. | Airtable |

# Before you start

Make sure you have the following ready:

* An **Airtable base and table** where the required data is stored.
* A **field you can use to match or filter records**.
* An **Airtable Personal Access Token (PAT)** with the required API scopes and access to the relevant base.
* The necessary permissions to access the base and its records.

> [!NOTE]
>
> **Airtable no longer supports legacy API keys for API access. Personal Access Tokens (PATs) and OAuth are the current authentication methods.**

# Connecting Airtable

You can connect Airtable from the **Airtable action block** or from the **App Market**.

1. Open the **Airtable** action block.
2. Select **Connect account**.
3. Complete the Airtable authentication flow.
4. Grant access to the Airtable bases that you want WotNot to use.
5. Return to WotNot after the authentication is completed.

Only bases that the connected Airtable account has permission to access are available in WotNot.

### Airtable permissions

1. Open Airtable and go to **Developer Hub**.
2. Under **Personal access tokens**, select **Create token**.
3. Enter a name for the token so you can identify its purpose.
4. Under **Scopes**, add:
   * `data.records:read` — allows the integration to read records from your Airtable tables.
   * `schema.bases:read` — allows the integration to read base and table structure when required.
5. Under **Access**, select **Add a base** and choose the base you want to connect.
6. Grant access only to the base(s) that the chatbot needs to use.
7. Create the token and copy it.
8. In the Airtable integration, enter the token to complete the connection.

For a fetch-only connection, use read-only scopes and restrict the token to the specific base you need.  Your Airtable account must already have permission to access the selected base. A PAT cannot grant more access than the account that created it has

# Selecting a base and table

After connecting Airtable, select the **base** and **table** that contain the records you want to fetch.

1. Select the connected **Airtable account**.
2. Select the **Base** you want to use.
3. Select the **Table** that contains the records.
4. Configure the field and value you want to use for matching records.

![Screenshot 2026 08 26 193614](https://mintcdn.com/wotnot/79SKP2TEnpNsM0nK/images/Screenshot-2026-08-26-193614.jpg?fit=max\&auto=format\&n=79SKP2TEnpNsM0nK\&q=85\&s=ff015d5347ae4cd2acbc181c0568653d)

> [!CAUTION]
>
> **You will only see those bases for which you have granted permission during the authentication process.**
>
> **If you do not see your base, reconnect your account by visiting App Market > Airtable.**

#### If a field is renamed or removed

The field used for matching must remain available in the selected table. If you rename or remove a field after configuring the Airtable action:

* **Renamed field:** Update the field mapping or filter configuration to use the new field name.
* **Removed field:** Replace the mapping with another available field.
* **Changed field type:** Review the filter and mapping to make sure the value is still compatible.

# Fetching records

Next, define the filter crtieria that you want to apply while fetching the records from the selected base and table.

The syntax to write the formula is same as what you would use in Airtable.  [Learn more about Airtable formulas](https://support.airtable.com/docs/formula-field-reference).

#### Match a record

Select the **field** you want to use for matching and provide the value to search for. The action checks the selected field and returns the records that match the configured value.

#### When multiple records match

If multiple records match the value, the action returns all matching records available from the query. You can use the returned data to display multiple results or pass them to the next step in your bot flow.

#### When no records match

If no record matches the specified value, the action returns no matching records. Add a **Condition** block after the Airtable action if you want to handle the no-match scenario separately.

#### Use the results downstream

The returned Airtable fields can be mapped to variables and used in subsequent steps of the conversation. For example, you can use a customer's name, email, status, or other record details in a message.

If you are displaying the returned records as dynamic content, see [Dynamic Data](https://help.wotnot.io/build/blocks/dynamic-data.md).

# Choose how to render the data

Based on your applied filter, the records will be fetched from Airtable.

Here you choose how do you want to render the data -- i.e. as buttons, carousel, or image carousel.

> [!NOTE]
>
> Number of records fetched is determined on the formula you define.

### **Show Buttons**

You can choose to render the data as a branch/URL button.

* **Branch button** - when clicked moves forward in the chat flow.
* **URL button** - when clicked opens a URL.

1. Define the question that will be asked when buttons are shown
2. Choose the Airtable column whose data is to be shown as the button text
3. If URL button is chosen, choose an additional field which contains the URL

![Image](https://mintcdn.com/wotnot/ZvBlY58cOcRHCVBj/images/image-553.png?fit=max\&auto=format\&n=ZvBlY58cOcRHCVBj\&q=85\&s=691698d699b90213ed09ee4a0f31cc0b)

### **Show Carousel**

Here we render the details in a carousel format with a set of cards.

* Map 'Cover Image' with Airtable field that contains images
* Map 'Title' with Airtable field that contains description. This will be the title of the card
* Map 'Description' with Airtable field that contains description. This will provide the brief summary about the card. It is best to limit the text here to 2-3 lines
* Define action for the buttons. Maximum upto 3 buttons can be added.
* Define variable in which the visitor selection will be stored

![Image](https://mintcdn.com/wotnot/ZvBlY58cOcRHCVBj/images/image-556.png?fit=max\&auto=format\&n=ZvBlY58cOcRHCVBj\&q=85\&s=f1918ce30cc7b62e50a64e790e2b41df)

### **Show Image Carousels**

Here we display a set of pictures in a carousel format. \
&#x20;\
You can follow the following steps to configure it:

* Select 'Show data' as 'Carousel'
* Map 'Image' field with Airtable field that contains images

![Image](https://mintcdn.com/wotnot/ZvBlY58cOcRHCVBj/images/image-555.png?fit=max\&auto=format\&n=ZvBlY58cOcRHCVBj\&q=85\&s=1214ea66c37006b74350ba0bd0e3207b)

### Store the selected value in a variable

Once the button/carousel is displayed, you can choose a variable in which the data will be stored.

* If button is chosen, the button text will be stored in the variable.
* If carousel is chosen, the carousel title will be stored in the variable.
* If image carousel is chosen, no variable support is provided.

### **Limitations**

The API has a rate limit of 5 request per second per base. If you exceed this rate, your bot will show an error and the visitors will need to wait for 30 seconds before subsequent requests will succeed.

# Field types

Airtable supports different field types, and the value returned to the bot depends on the type of field.

| Airtable field type | What the bot receives |
| - | - |
| Single line text | Text value |
| Long text | Text value |
| Number | Numeric value |
| Currency | Numeric value |
| Percent | Numeric value |
| Checkbox | `true` or `false` |
| Single select | Selected option as text |
| Multiple select | Selected options |
| Date / Date & time | Date or date-time value |
| Email | Email address as text |
| Phone number | Phone number as text |
| URL | URL as text |
| Attachment | Attachment data, including file information and URL |
| Linked record | Linked record data, which may contain record IDs rather than display names |
| Lookup | Values retrieved from the linked record |
| Rollup | Calculated or aggregated value |
| Formula | Calculated result of the formula |
| Created time | Date/time value |
| Last modified time | Date/time value |
| Auto number | Numeric value |

### Linked records

Linked record fields represent relationships between Airtable records. The returned value may contain the **record ID** rather than the name displayed in Airtable.

### Attachments

Attachment fields return attachment information rather than plain text. If you want to display an attachment, use the returned attachment data or URL.

### Formula and rollup fields

Formula fields return the **calculated result** of the formula, not the formula itself.

Rollup fields return the **calculated or aggregated value** based on the linked records.

## Troubleshooting

> [accordion] My Airtable token is invalid or does not have access to the base
>
> Check that:
>
> * The Personal Access Token is still active.
> * The token has the required read scope.
> * The base has been added to the token's allowed resources.
> * Your Airtable account has permission to access the base.
>
> Airtable PATs can be restricted by both scope and base/resource access.
>
> If the token was regenerated, deleted, or its permissions were changed, reconnect Airtable using the updated credentials.

> [accordion] My base or table is not available
>
> Make sure the base exists and that your Airtable connection has access to it.
>
> If you recently changed the permissions or added access to another base, reconnect the Airtable account so the available bases are refreshed.

> [accordion] The lookup returns nothing even though the value exists
>
> Check the following:
>
> * The selected base and table are correct.
> * The field name used in the filter is correct.
> * The filter formula is valid Airtable syntax.
> * The value being compared matches the Airtable value.
> * The record is accessible through the connected Airtable account.
>
> Airtable evaluates `filterByFormula` against each record, so an incorrect formula or field reference can result in no matches.

> [accordion] A linked record returns an ID instead of the name I expected
>
> Linked records are relationship fields and are not returned in the same way as plain text fields.
>
> If you need a visitor-friendly value, create a **Lookup** or **Formula** field in Airtable that exposes the linked record's name or another display value, and use that field in your chatbot mapping.

> [accordion] My attachment field is not displaying correctly
>
> Attachment fields contain file information rather than a simple text value.
>
> If you are using attachments for an image carousel, make sure the Airtable field contains valid image attachments and map the attachment field to the appropriate image field in the action block.

> [accordion] I am getting an Airtable rate-limit error
>
> Airtable APIs are subject to rate limits. If your chatbot makes many requests in a short period, requests may be temporarily rejected.
>
> Reduce unnecessary Airtable calls in the flow and avoid repeatedly fetching the same records during a single conversation.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.