Auto-enrich new Airtable leads with People Data Labs
When new leads land in your Airtable table, fill in name, title, company, seniority, location, and LinkedIn URL automatically. No drafting, no Slack pings, just a clean enriched row.
Integrations
Airtable
People Data Labs
Type
Categories
- Sales
- Operations
Build me a deterministic code workflow that auto-enriches new leads in my Airtable Leads table using People Data Labs. No agent reasoning, no Slack messages, no drafting. The shape is fixed: poll for new rows, bulk-enrich them with PDL, write the results back.
Trigger: Airtable poll, event type new_record, on a specific base and table that I will configure. Each fired row gives me a recordId and the row's fields.
For each batch of fired rows (up to 100 at a time), do this:
1. Read the email column (required) and the LinkedIn URL column (optional) from each row. Skip rows that have neither.
2. Call People Data Labs Bulk Person Enrichment in a single request with up to 100 items. For each item, send email as the primary identifier, and profile (LinkedIn URL) when present. PDL returns an array in the same order as the input, with a status per item.
3. For each returned item: if status is 200, pull the canonical fields from data — full_name, job_title (current title), job_company_name (current company), job_company_website or job_company_domain, job_title_levels or seniority, location_locality (city), location_region (region/state), location_country, linkedin_url. Map these onto the originating Airtable row by recordId.
4. If status is 404 (no match), set the row's PDL Status field to "no_match" so analysts can see which rows could not be enriched. Do not write the data columns for those rows.
5. Write everything back to Airtable using Update Multiple Records. Airtable caps batch updates at 10 records per call, so chunk the updates into groups of 10 and loop through them. Include the PDL Status field set to "enriched" on successful rows.
Use People Data Labs Bulk Person Enrichment for the enrichment call (one request per batch, not one per row — that is the whole point). Use Airtable Update Multiple Records for the writeback. You can optionally use Airtable List Records up front if it helps dedupe within a batch, but the poll trigger should already give clean new rows.
Field names on the Airtable side are configurable, but assume reasonable defaults: Email, LinkedIn URL, Full Name, Title, Company, Company Domain, Seniority, City, Region, Country, LinkedIn (output), PDL Status. Let me rename them in the workflow config.
Keep the flow strictly deterministic. No model calls, no judgment, no enrichment on rows that already have a Full Name unless I flip a setting. The output is just a clean enriched Airtable row.
What it does
- Watches your Airtable Leads table for new rows and queues them for enrichment.
- Batches up to 100 pending leads at a time and sends them to People Data Labs in a single bulk call.
- Writes the matched fields back to the same row: full name, current title, company, company domain, seniority, city, region, country, and LinkedIn URL.
- Marks rows that come back without a match as no_match so your team can spot them at a glance.
What you’ll need
- An Airtable workspace with a Leads table that includes an email column (and optionally a LinkedIn URL column).
- A People Data Labs account with an active API key.
- Empty columns on the table for the fields you want filled in, plus a status column for the enrichment result.
How to customize it
- Change which Airtable base and table get watched, and rename the columns the workflow writes to.
- Pick which enriched fields you want stamped on the row. Drop the ones you do not need, or add others like job role family.
- Switch the input identifier from email to LinkedIn URL, or use both for higher match rates.
Use cases
- Lead Enrichment
- Data Sync