You can store different types of data within Airtable. From simple text to files to referencing one or multiple collaborators. This information is stored in different formats within Airtable.
We simplified the different field types into an easily consumable structure.
While webhooks for New Airtable Records will only every contain the current values of a column. The webhooks for Updated Airtable Records will contain the current and the previous values of a column.
For most use-cases you can simply use our pre-built integrations. They cover all of the aspects mentioned in this guide so you do not have to worry about it.This guide is only necessary if you want to dive deep into the different data types and structures you will receive through the webhooks.
Looking at the data structure this means that New Airtable Records webhooks will look like:
Copy
{ "id": "20ec590...", //notification Id "event": "create", //event Type "recordId": "rec...", //record Id of new record "tableId": "tbl...", //table Id of the new record "baseId": "app...", //base Id of the new record "fields": { "fld..": { //column Id "name":"...", //column Name "current":"..." //current value as string //the current value can be a string, number, boolean, object or array } }}
The webhooks for Updated Airtable Records will additionally contain a previous value for the individual columns.
Copy
{ "id": "20ec590...", //notification Id "event": "create", //event Type "recordId": "rec...", //record Id of new record "tableId": "tbl...", //table Id of the new record "baseId": "app...", //base Id of the new record "fields": { "fld..": { //column Id "name":"...", //column Name "current":"...", //current value as string "previous":"..." //previous value as string //the current and previous value can be a string, number, boolean, object or array //the previous value can also be null } }}
Boolean values can be returned by multiple column types but formulas, rollups or lookup columns have varying output formats. Checkbox columns, however, will always be delivered as booleans if the column is true.
If checkbox columns are false, Airtable does not send this information. That’s why empty values for a checkbox column have to be treated as false.
Copy
"fld...": { //column Id "name": "Test Checkbox Column", //column Name "current": true, //current column Value}
Columns that only contain a single user such as Last Modified By, Created By or Single User columns will be sent with a single user object:
Copy
"fld...": { //column Id "name": "Test Created By Column", //column Name "current": { "email":"[email protected]", //user Email "id":"usrnwwJUfsBR6EMXl", //user Id "name":"Test User" //user Name } }
For the newest of the columns the AI Text columns we are able to not only send the value but also the state and if it’s stale (for definitions see here). These additional values might be important to you if you want to know if you can use the value or if you should wait and for an updated value in the AI Text columns.Based on that, the format for AI Text columns will be:
Copy
"fld...": { //column Id "name": "Test AI Text Column", //column Name "current": { "state": "loading", //column State "value": "Test Value", //column Value "isStale": false, //should be recomputed? } }
Now we start to go into more complex column types.Multiple Select columns will be delivered as flat arrays containing the names of the selected options.
Copy
"fld...": { //column Id "name": "Test Multiple Select Column", //column Name "current": [ //current column Value "Option1", "Option2" ] }
Linked Record fields will also be delivered as flat arrays but they will contain the record Ids of the linked records.
Copy
"fld...": { //column Id "name": "Test Linked Record Column", //column Name "current": [ //current column Value "recRPq7LWatCDsBXm", "recsyxrrqFUZ4OWEN" ] }
User columns in Airtable can either select one user (which we covered here) or multiple users. For columns with Multiple Collaborators the format will be:
Copy
"fld...": { //column Id "name": "Test Mulitple Collaborator Column", //column Name "current": [ //current column Value { "email": "[email protected]", //user E-Mail "id": "usrnwwJUfsBR6EMXl", //user Id "name": "Test User 1" //user Name }, { "email": "[email protected]", //user E-Mail "id": "usrnwwJUfsBR6EMXl", //user Id "name": "Test User 2" //user Name } ] }
As we’ve already covered most of the columns by now, Airtable offers three columns that have a varying output format based on the evaluation of the input / formula. This means that formula, lookup and rollup columns we be sent in different data types, depending on how you setup the columns.Output formats number, currency and percent will be sent as numbers:
Copy
//if output format is number, currency or precent"fld...": { //column Id "name": "Test Formula/Lookup/Rollup Column", //column Name "current": 3.4, //current column Value}
Output format checkbox will be sent as boolean values:
Copy
//if output format is checkbox"fld...": { //column Id "name": "Test Formula/Lookup/Rollup Column", //column Name "current": true, //current column Value}
As for the normal checkbox columns, Airtable does not send anything if the value is false.
Output format date will be sent as a ISO-8601 formatted date string:
Copy
//if output format is date"fld...": { //column Id "name": "Test Formula/Lookup/Rollup Column", //column Name "current": "2025-07-19T09:08:39.000Z" //current column Value}
Normal text output for formula, rollup and lookup columns will be sent as a simple string:
Copy
//if the output format is not specified differently"fld...": { //column Id "name": "Test Fromula/Lookup Column", //column Name "current": "some random Text" //current column Value}
Rollup columns that return an array will be delivered as such:
Copy
//rollup column with an array result e.g. simply: "values""fld...": { //column Id "name": "Test Rollup Column", //column Name "current": [ //current column Value "Text1", "Text2", "..." ] }