> ## Documentation Index
> Fetch the complete documentation index at: https://simplified-webhooks.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# How we process different field types

> 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.

<Warning>
  **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.
</Warning>

Looking at the data structure this means that `New Airtable Records` webhooks will look like:

```json expandable theme={null}
 {
	"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.

```json expandable theme={null}
 {
	"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 
		}				
	}
}
```

Here is a list of all Airtable column types:

* [Email](/field-types#string-columns)
* [Single Line Text](/field-types#string-columns)
* [Long Text](/field-types#string-columns)
* [Rich Text](/field-types#string-columns)
* [Phone](/field-types#string-columns)
* [URL](/field-types#string-columns)
* [Date](/field-types#date-columns)
* [Last Modified Time](/field-types#date-columns)
* [Created Time](/field-types#date-columns)
* [Number](/field-types#number-columns)
* [Duration](/field-types#number-columns)
* [Percent](/field-types#number-columns)
* [Count](/field-types#number-columns)
* [Auto Number](/field-types#number-columns)
* [Rating](/field-types#number-columns)
* [Currency](/field-types#number-columns)
* [Checkbox](/field-types#boolean-columns)
* [Single Collaborator](/field-types#single-collaborator-columns)
* [Last Modified By](/field-types#single-collaborator-columns)
* [Created By](/field-types#single-collaborator-columns)
* [AI Text](/field-types#single-collaborator-columns)
* [Button](/field-types#button-columns)
* [Barcode](/field-types#barcode-columns)
* [Multiple Select](/field-types#multiple-select-columns)
* [Linked Records](/field-types#linked-record-columns)
* [Multiple Collaborators](/field-types#multiple-collaborators-columns)
* [Attachment](/field-types#attachment-columns)
* [Formula](/field-types#formula%2C-lookup-and-rollup-columns)
* [Lookup](/field-types#formula%2C-lookup-and-rollup-columns)
* [Rollup](/field-types#formula%2C-lookup-and-rollup-columns)

Let's start with the basics and end with the more advanced columns later.

### String Columns

All of our webhooks will deliver columns of the type:\
`Email`\
`Long Text`\
`Phone` \
`Rich Text` \
`URL` and \
`Single Line Text`

as **simple strings**.

```json theme={null}
"fld...": {										//column Id
	"name": "Test Column", 						//column Name
	"current": "Some random Text" 				//current column Value
}
```

### Date Columns

All of our webhooks will deliver columns of the type:\
`Date`\
`Last Modified Time`\
`Created Time`

as **ISO-8601 formatted dates**.

```json theme={null}
"fld...": {										//column Id
	"name": "Test Date Column", 				//column Name
	"current": "2025-07-19T09:08:39.000Z" 		//current column Value
}
```

### Number Columns

All of our webhooks will deliver columns of the type:\
`Number`\
`Duration`\
`Percent`\
`Count`\
`Auto Number`\
`Rating`\
`Currency`

as **numbers**.

```json theme={null}
"fld...": {										//column Id
	"name": "Test Number Column", 				//column Name
	"current": 3.4, 							//current column Value
}
```

### Checkbox Columns

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`.

<Info>
  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`.
</Info>

```json theme={null}
"fld...": {										//column Id
	"name": "Test Checkbox Column", 			//column Name
	"current": true, 							//current column Value
}
```

### Single Collaborator Columns

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**:

```json theme={null}
"fld...": {										//column Id
	"name": "Test Created By Column", 			//column Name
	"current": {
		"email":"test.user@gmail.com",			//user Email
		"id":"usrnwwJUfsBR6EMXl",				//user Id
		"name":"Test User"						//user Name
	}				
}
```

### AI Text Columns

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](https://airtable.com/developers/web/api/field-model#aitext)). 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:

```json theme={null}
"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?
	}					
}
```

### Button Columns

A button consists of maximum two parts, a URL and a label. We do transfer both through our webhooks.

```json theme={null}
"fld...": {													//column Id
	"name": "Test Button Column", 							//column Name
	"current": {
		"url": "https://www.simplified-webhooks.com",		//button URL
		"label": "Receive instant Airtable webhooks"		//button Label
	}					
}
```

### Barcode Columns

Barcode columns contain the data of the code as well as the type. That's why barcode columns will be sent as the following:

```json theme={null}
"fld...": {													//column Id
	"name": "Test Barcode Column", 							//column Name
	"current": {
		"type": "ean13",									//barcode Type
		"text": "8000845065440"								//barcode Data
	}					
}
```

### Multiple Select Columns

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.

```json theme={null}
"fld...": {										//column Id
	"name": "Test Multiple Select Column", 		//column Name
	"current": [								//current column Value
		"Option1",
		"Option2"
	] 							
}
```

### Linked Record Columns

**Linked Record fields** will also be delivered as flat arrays but they will contain the record Ids of the linked records.

```json theme={null}
"fld...": {										//column Id
	"name": "Test Linked Record Column", 		//column Name
	"current": [								//current column Value
		"recRPq7LWatCDsBXm",
		"recsyxrrqFUZ4OWEN"
	] 							
}
```

### **Multiple Collaborators Columns**

User columns in Airtable can either select one user (which we covered [here](https://docs.simplified-webhooks.com/field-types#single-collaborator-columns)) or multiple users. For columns with **Multiple Collaborators** the format will be:

```json theme={null}
"fld...": {											//column Id
	"name": "Test Mulitple Collaborator Column", 	//column Name
	"current": [									//current column Value
		{
			"email": "test.user@gmail.com",			//user E-Mail
			"id": "usrnwwJUfsBR6EMXl",				//user Id
			"name": "Test User 1"					//user Name
		},
		{
			"email": "test.user2@gmail.com",		//user E-Mail
			"id": "usrnwwJUfsBR6EMXl",				//user Id
			"name": "Test User 2"					//user Name
		}
	] 							
}
```

### Attachment Columns

Columns containing attachments will be sent as follows:

```json theme={null}
"fld...": {										//column Id
	"name": "Test Attachment Column", 			//column Name
	"current": [								//current column Value
		{
			"id": "...",				//attachment Id
			"url": "...",				//file URL (only valid for 2h)
			"size":,					//file Size
			"type":"",					//file Type
			"filename":""				//file Name
		},
		{
			"id": "...",				//attachment Id
			"url": "...",			//file URL (only valid for 2h)
			"size":,				//file Size
			"type":"",				//file Type
			"filename":""			//file Name
		}
	] 							
}
```

### Formula, Lookup and Rollup Columns

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:

```json theme={null}
//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:

```json theme={null}
//if output format is checkbox
"fld...": {											//column Id
	"name": "Test Formula/Lookup/Rollup Column", 	//column Name
	"current": true, 								//current column Value
}
```

<Info>
  As for the normal [checkbox columns](/field-types#checkbox-columns), Airtable does not send anything if the value is `false`.
</Info>

Output format `date` will be sent as a ISO-8601 formatted date string:

```json theme={null}
//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:

```json theme={null}
//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:

```json theme={null}
//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",
		"..."
	] 							
}
```
