Blog

Airtable: Automatically Populating Linked Records (3 Methods)

FE
Filla EditorialintermediateOct 31, 2025

Auto-populate linked records

Linked record fields don't auto-populate. Use automations, one-time conversion, or scripts to link records automatically.


Method 1: Airtable automations

Best for: recurring linking when new records are created or updated.

Setup:

  1. Trigger: When a record is created/updated in table A
  2. Action: Find records in table B (match by primary field)
  3. Action: Update record in table A → link to the found record(s)

Limitation: Can only match on primary field values. If you need to match on email or another field, see the UUID method below.


Method 2: One-time text-to-link conversion

Best for: bulk linking existing records that share a common identifier.

Steps:

  1. In table A, create a text field with values matching table B's primary field
  2. In table B, ensure the primary field values match those in table A's text field
  3. Convert the text field in table A to "Link to another record" → select table B
  4. Airtable will auto-link matching records

Note: This is a one-time operation. After conversion, new records won't auto-link.


Method 3: UUID-based script (match on any field)

Best for: matching on non-primary fields (e.g., email, external ID) or when you need flexible matching logic.

Setup:

  1. Add a UUID field to the parent table (e.g., Business)
  2. Add a corresponding UUID field to the child table (e.g., businessUUID in Employee)
  3. Populate matching UUIDs in both tables
  4. Run a script to link records based on UUID matching

Example script structure:

const parentTable = base.getTable("Business")
const childTable = base.getTable("Employee")
const parentUUIDField = parentTable.getField("UUID")
const childUUIDField = childTable.getField("businessUUID")
const linkField = childTable.getField("LINK to Business")

const parents = await parentTable.selectRecordsAsync({
  fields: [parentUUIDField],
}).records

const children = await childTable.selectRecordsAsync({
  fields: [childUUIDField, linkField],
}).records

for (const child of children) {
  const matchingParent = parents.find(
    (p) => p.getCellValue("UUID") === child.getCellValue("businessUUID")
  )
  if (!child.getCellValue("LINK to Business") && matchingParent) {
    await childTable.updateRecordAsync(child, {
      "LINK to Business": [{ id: matchingParent.id }],
    })
  }
}

UUID generator (for scripts):

const createUUID = () => {
  return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
    const r = (Math.random() * 16) | 0
    const v = c === "x" ? r : (r & 0x3) | 0x8
    return v.toString(16)
  })
}

External tools: Make (formerly Integromat)

For complex workflows or when you hit automation limits, use Make:

  • Match on any field (not just primary)
  • Handle multiple conditions
  • Link across bases
  • Transform data before linking

Common patterns

  • Matching by email: Use UUID method with email as the UUID source
  • Matching by name variations: Normalize names first (LOWER, TRIM, handle nicknames)
  • Prevent duplicates: Check if link already exists before updating

Tips

  • Generate UUIDs when creating records (via automation or form)
  • Keep UUID fields stable—don't change them after linking
  • Test scripts on a small subset first
  • Consider using Make for production if you need robust error handling

References

Community discussion covering all three methods and UUID-based scripting: Automatically populating linked records

Airtable: Automatically Populating Linked Records (3 Methods)