Someone wants to change the Discount field on the Deals table from a percentage to a single select. Inside the base, the question of what that breaks has an answer for most of it: Airtable’s field manager lists the automations, configurations, fields, interfaces, syncs, and views that depend on it.
Outside the base, the connections are just as real, but nothing shows them: the billing system that reads Discount every night, the quoting tool that writes to it, and the partner whose payload carries it don’t appear in the field manager or anywhere else in Airtable.
An integration registry is the record that answers the outside half. InAir's guide to running Airtable inside complex system landscapes argues that a governed base stays changeable, and that impact analysis "is only possible because the dependencies were registered somewhere." This post covers what that record needs to hold, how to build it in Airtable, how to keep it current, and how to use it before a change.
InAir's guide to controlling enterprise Airtable sprawl already sets up a Sync Registry Base, whose API Integrations table "tracks external systems reading/writing to the bases (Integration Name, Client ID/Service Account, Integration Tool, Authorized Scopes, and Developer Email)."
The same base records which fields each sync carries, in its Sync Connections and Mapped Fields tables. For external integrations, though, the API Integrations table stops at authorized scopes, so it doesn’t record which fields each integration reads or writes.
The difference matters at the moment of a change. The same guide's change protocol asks you to verify that changing a field type "does not break external REST API configurations." A registry that knows an integration holds data.records:read on a base can't tell you whether that integration reads Discount. A registry that links integrations to fields can.
So the registry in this post extends that base. It keeps the API Integrations record, links each integration to the fields it reads or writes, and adds when it runs, who owns it and what it has been promised.
For each integration, the registry holds six things.
Fields are recorded by ID as well as by name. Airtable's Get base schema endpoint returns every table and field with its ID, so an entry can store the ID and refresh the name, and a rename doesn't orphan the registry.
The registry lives in the same Sync Registry Base. It uses two tables that base already has and adds a junction table between them.
Field Access is a junction table. An integration touches many fields and a field is touched by many integrations, and a junction record per pair, with its own Read and/or Write value, keeps both sides queryable without duplicating either.
From an API Integrations record, a lookup through Field Access lists every field it touches. From a Mapped Fields record, a lookup of the Integration link lists every integration that depends on it.
Two filtered views do most of the day-to-day work. One shows Mapped Fields where a rollup of Field Access, counting only the records where Access includes Write, is greater than one, which is a list of the places where ownership needs to be decided. The other shows API Integrations whose Last confirmed date is older than the review interval, which is the list of entries that may no longer be true.
A registry is only as useful as its last update, and it decays in the same way the base does: quietly, through ordinary work. Three habits keep it accurate.
Two of those moments are also when an assessment goes stale. InAir's Integration Load framework names a new system being onboarded, or an integration involved in ownership or failure detection being modified, among the events that should trigger a fresh assessment. A registry that's updated at those points gives each new assessment a current starting list.
Back to the Discount field. With the registry in place, the impact analysis is a lookup, not a search.
Without the registry, step 2 is a question sent to every team that might be involved, and the answer is only as complete as the replies.
This is the discipline Ian Robinson describes on Martin Fowler's site as consumer-driven contracts: a provider can change safely when it knows what each consumer actually depends on. The registry is where an Airtable base keeps that knowledge.
A registry records what integrations are supposed to touch. It doesn't watch what they actually do. An integration that reads directly through the API can start using a new field without anyone updating its entry, which is one more reason to move direct readers onto scoped payloads, where a field only goes out when someone adds it to the script. And an entry is only as reliable as its last confirmation, which is why that date sits on every record.
If you want to know what depends on your bases before the next schema change, rather than after it, Schedule a Discovery Call with InAir and we'll build the first version of the registry with you.