# Airtable to Attio Sync Source: https://neondeerdata.com/docs/integrations/airtable-to-attio-sync/ Sync selected Airtable rows into Attio and link them to People by email. Updates and deletions in Airtable update the corresponding Attio records. ## Requirements An Airtable account with access to the selected bases, base and table IDs, a field map, and an Attio workspace for the custom app. ## Setup If the integration is not installed in your workspace, [request setup](https://neondeerdata.com/contact-us/?topic=integration-airtable-to-attio-sync). 1. **Choose bases, tables and fields** Confirm the bases and tables to sync, the field map, the email fields used to match People, and any historical import or sync-status write-back. 2. **Create an Airtable personal access token** Limit the token to the selected bases. Include data.records:read, schema.bases:read and webhook:manage. Add data.records:write only for approved write-back. 3. **Install the custom Attio app** Add the Airtable token and the JSON configuration for each base, table and field map. 4. **Provision the connection** The app creates the Attio mapping object and Airtable webhooks, then checks access to each configured table. 5. **Start sync and any historical import** New changes sync through webhooks. Import existing rows separately if a backfill is included. For the token step, see [Airtable's guide to creating personal access tokens](https://support.airtable.com/articles/9934989703-creating-personal-access-tokens). ## Configuration | Setting | Configuration | | ----------------- | -------------------------------------------------------------------------------------------- | | Bases and tables | Airtable bases and tables allowed to sync. | | Field map | Airtable fields and their Attio destinations, configured with stable field IDs where needed. | | People matching | Primary and secondary email fields, additional People links and unmatched-email handling. | | Per-base coverage | Separate mapping and historical-import rules for each base. | | Write-back | Optional status or timestamp written to Airtable. Requires `data.records:write`. | | Deleted rows | How deleted Airtable rows are marked and filtered in Attio. | | Historical import | Rows and filters to include in the initial import. | ## Sync behavior ### Updates Changes to mapped Airtable fields update the corresponding Attio record. Each table has explicit webhook coverage and its own field map. ### People matching The primary email field links the row to an Attio Person. A secondary email can link additional People. Airtable record and base IDs identify the mapping record so repeated updates target the same record. ### Deleted rows Deleting a row in Airtable marks its Attio mapping record as deleted. It does not remove the record from Attio. Filter deleted rows out of active views to retain the history. ## Limitations - The default direction is Airtable to Attio. Write-back is limited to agreed fields, such as sync status. - Linked records, lookups, rollups and formulas sync as displayed values unless a separate relationship mapping is configured. - Attachments stay in Airtable. Text links can be included when configured. - Configuration uses JSON rather than a visual field mapper. Each table needs its own entry. - Historical imports are paced around Airtable API limits. ## Troubleshooting ### New or changed fields are missing Update the field map and reprovision the connection after changing Airtable fields, Attio attributes or email-matching rules. ### A row links to the wrong Person Check the primary and secondary email fields configured for that table. Those fields control People matching. ## Useful links - [Airtable](https://www.airtable.com/) - [Airtable help center](https://support.airtable.com/)