Guides

How Do I Route Accounts With Airtable and Leadpipe?

Use Airtable as your routing engine for Leadpipe identified visitors. Round-robin, named-account assignment, and SLA timers in under 30 minutes.

Elene Marjanidze Elene Marjanidze · · 11 min read
How Do I Route Accounts With Airtable and Leadpipe?

If your CRM’s native lead routing feels like it was designed for a 2014 lead form, you are not alone. Most teams end up building routing in something more flexible, and Airtable has quietly become the default for that. It gives you relational tables, formulas, and automations without a full salesforce.com implementation.

I am Elene, and this is the recipe I give RevOps leads who want Airtable to be their routing engine for identified website visitors. Leadpipe handles identification, Airtable does the matching and assignment logic, and your CRM receives a pre-routed, pre-scored record. Setup is about 30 minutes. The lift in response times is the kind of change you can measure within a week.


What you will build

An Airtable base that receives every identified US B2B visitor, matches against your target account list, applies routing logic (round-robin, named-account, territory), assigns an owner, sets an SLA timer, and pushes the routed record into your CRM or Slack.


Prerequisites

RequirementNotes
Leadpipe accountStart free with 500 identifications
Airtable accountTeam plan ($20/user/mo) minimum for automations
Zapier or Make accountOptional for the webhook bridge
Airtable adminTo build tables and automations
Time30 minutes

This recipe is complementary to the Salesforce integration and Close CRM integration. You can run Airtable as the routing layer in front of either CRM, or as a standalone routing board for a small team.


The architecture

Leadpipe webhook (First Match)


   Zapier / Make bridge (lowercase domain, filter bots)


   Airtable base: "Visitor routing"
       ├─ Table: Visitors (incoming)
       ├─ Table: Accounts (target list)
       ├─ Table: Reps (territories)
       └─ Automation: match + assign + SLA timer


   Downstream: CRM record / Slack ping / email alert

Airtable is the routing brain. Leadpipe is the event source. Your CRM or Slack is the destination. Keeping the three separate makes the routing logic debuggable and lets you change CRMs without rewriting anything.


Step 1: Build the Airtable base

Create a new base called “Visitor routing” with three tables.

Table 1: Visitors (incoming)

FieldTypeNotes
Visitor IDAutonumberPrimary
EmailEmailFrom Leadpipe
First nameSingle line
Last nameSingle line
PhonePhone
CompanySingle line
DomainSingle lineLowercased, stripped
IndustrySingle select
EmployeesNumber
Job titleSingle line
SenioritySingle selectIC, Manager, Head, Director, VP, C-level, Founder
DepartmentSingle select
LinkedIn URLURL
CountrySingle select
StateSingle line
CitySingle line
Last pageSingle line
Pages viewedLong textComma-separated
Visit durationNumberSeconds
Intent scoreNumber1-100
Intent topicsMultiple select
Return visitorCheckbox
Created atCreated time
Matched accountLink to AccountsFilled by automation
Assigned repLink to RepsFilled by automation
SLA dueFormulaCreated at + duration
SLA statusFormulaOn track / At risk / Breached
Routed to CRMCheckboxSet by downstream automation

Table 2: Accounts (target list)

FieldType
NameSingle line
DomainSingle line (primary)
OwnerLink to Reps
TierSingle select: Tier 1 / Tier 2 / Tier 3
TerritorySingle select
NotesLong text

Populate this with your real target list. If you have a Salesforce or HubSpot account list, export it to CSV and import into Airtable. This is the table your routing logic reads against.

Table 3: Reps (territories)

FieldType
NameSingle line
EmailEmail
Slack handleSingle line
TerritoryMultiple select
SegmentMultiple select: SMB / Mid-market / Enterprise
ActiveCheckbox
Assigned this weekCount (linked Visitors)

The “Assigned this week” field powers round-robin by letting you sort by least-assigned.


Step 2: Feed Leadpipe webhooks into Airtable

You can either push directly via Airtable’s API from your own middleware, or use Zapier to bridge Leadpipe to Airtable. Both paths work. The Zapier path is faster to set up.

Zapier bridge

  1. New Zap. Trigger: Webhooks by Zapier, Catch Hook. Copy the URL, paste in Leadpipe’s webhook settings.
  2. Configure Leadpipe: Settings, Integrations, Webhooks, Add Webhook. Destination = the Zapier URL. Trigger: First Match. Fields: include everything.
  3. Formatter step in Zapier: lowercase and strip www. from company_domain.
  4. Filter step: visit_duration greater than 20, email does not contain gmail.com, yahoo.com, outlook.com.
  5. Airtable action: Create Record in the Visitors table. Map every incoming field to the corresponding Airtable column.

Sample payload for reference (full schema in our webhook payload reference):

{
  "email": "paula.fernandez@sendhaus.co",
  "first_name": "Paula",
  "last_name": "Fernandez",
  "phone": "+1-646-555-0121",
  "company_name": "Sendhaus",
  "company_domain": "sendhaus.co",
  "company_industry": "Marketing",
  "company_employee_count": 60,
  "job_title": "Founder",
  "seniority": "Founder",
  "department": "Exec",
  "linkedin_url": "linkedin.com/in/paulafernandez",
  "city": "Brooklyn",
  "state": "New York",
  "country": "US",
  "page_url": "/pricing",
  "pages_viewed": ["/", "/features", "/pricing"],
  "visit_duration": 304,
  "intent_score": 81,
  "matched_topics": ["lead generation", "intent data"],
  "return_visit": true
}

A GDPR reminder: for EU and UK visitors, Leadpipe defaults to company-level unless the visitor has consented. Your Airtable Visitors row for those regions will have Company and Domain filled in with blank Email, First name, Last name fields. That is correct under GDPR (see our GDPR-compliant visitor identification post).


Step 3: Build the routing automation

Inside the Airtable base, open Automations. Create a new automation.

Trigger: When a record is created in Visitors

Action 1: Find matching account

Find records. Table: Accounts. Condition: Domain equals {{Visitors.Domain}}. Limit: 1.

Action 2: Conditional logic

Branch based on whether a matching account was found.

Branch A: matched account. This is a target account.

  • Update the current Visitor row. Set Matched account to the found Account record.
  • Set Assigned rep to the account’s Owner.
  • Set SLA due to Created at + 1 hour.
  • Send a Slack or email ping to the rep.

Branch B: no match. Use routing rules.

  • Run a script step. Input: the Visitor’s country, industry, employees, seniority.
  • Output: the Rep to assign, based on these rules in order:
    1. Country in DE, FR, NL, UK, IE → pick EMEA rep with least assignments this week.
    2. Country = US AND employees over 500 → pick Enterprise rep.
    3. Country = US AND employees 50-500 → pick Mid-market rep via round-robin.
    4. Else → SMB queue.

Script for round-robin (paste into Airtable’s Run a script action):

const config = input.config();
const visitorId = config.visitorId;
const segment = config.segment;

const repsTable = base.getTable('Reps');
const query = await repsTable.selectRecordsAsync({
  fields: ['Name', 'Segment', 'Active', 'Assigned this week'],
});

const eligible = query.records.filter(
  (r) =>
    r.getCellValue('Active') &&
    (r.getCellValue('Segment') || [])
      .map((s) => s.name)
      .includes(segment)
);

eligible.sort(
  (a, b) =>
    (a.getCellValue('Assigned this week') || 0) -
    (b.getCellValue('Assigned this week') || 0)
);

const chosen = eligible[0];
if (chosen) {
  const visitors = base.getTable('Visitors');
  await visitors.updateRecordAsync(visitorId, {
    'Assigned rep': [{ id: chosen.id }],
  });
  output.set('assignedName', chosen.getCellValue('Name'));
}
  • After the script, update SLA due based on intent: intent score over 70 → 1 hour SLA, 40-70 → 4 hour SLA, under 40 → 24 hour SLA.

Action 3: Notify the assigned rep

Send email or Slack message. Subject: “New visitor assigned: {Company} ({Intent score})”. Body includes Visitor fields and SLA due time. If you prefer Slack-native, pair this with the Slack visitor alerts recipe.

Action 4: Push to CRM

If your system of record is a CRM, this is where you hand off. Airtable’s Salesforce or HubSpot automation steps can push the routed Visitor to the CRM with the Assigned rep pre-filled. Our Salesforce integration and Pipedrive integration cover the mapping on the CRM side.


Step 4: The SLA view

Create a view on the Visitors table called “SLA dashboard”.

  • Sort by SLA due ascending.
  • Color rows: SLA status = Breached red, At risk yellow, On track green.
  • Group by Assigned rep.

This is the view your sales manager opens on Monday morning. Anything red is a failure of your response SLA, and the person to the right of it is who owes an answer.

Formula for SLA status:

IF(
  {Routed to CRM} = 1,
  "Closed",
  IF(
    NOW() > {SLA due},
    "Breached",
    IF(
      NOW() > DATEADD({SLA due}, -15, 'minutes'),
      "At risk",
      "On track"
    )
  )
)

What this looks like in practice

Paula, founder of Sendhaus, a 60-person marketing agency in Brooklyn, lands on your pricing page at 11:04 am. She spends 5 minutes, looks at your case studies page, then bounces.

  1. Leadpipe identifies her. Webhook fires.
  2. Zapier normalizes the domain and creates a row in Airtable: Sendhaus, sendhaus.co, 60 employees, Marketing, Paula Fernandez, Founder.
  3. Airtable automation runs. No match in Accounts (Sendhaus was not on the target list). Routing script: Country=US, employees=60, segment=SMB. Picks the SMB rep with the fewest assignments this week, let’s say Rena.
  4. SLA due is set to 12:04 pm (intent score 81, so one-hour SLA).
  5. Rena gets a Slack ping and an email: “New visitor assigned: Sendhaus (Intent 81). Pricing page, 5 minutes, founder. SLA 12:04 pm.”
  6. Rena clicks the LinkedIn link in the ping, sends a one-line Loom at 11:29 am referencing Paula’s pages viewed. Paula replies at 2:14 pm. Meeting booked for Thursday.

Twenty-five minutes from the pixel to a booked meeting. That is what a routing layer buys you when it is actually used.


Troubleshooting and edge cases

Round-robin imbalance. The “Assigned this week” field resets how? It does not, automatically. Add a scheduled automation (every Monday at midnight) that clears Assigned this week for all reps. Otherwise the assignment drifts toward whoever joined last.

Territories overlap. If a visitor matches multiple segment criteria (US mid-market with over 500 employees), your script needs a priority order. The example script handles this top-to-bottom. Put named-account match first, then enterprise, then mid-market, then SMB.

Out-of-office reps. Add an Active checkbox on the Reps table. Flip it off for vacations. The script filters on Active, so unavailable reps are skipped.

Duplicate rows for return visitors. If you do not want a new row per return visit, change Step 2’s Create Record action to Find Record (by Domain) with a Paths step, same pattern as the Notion watchlist recipe.

GDPR EU visitors without a named contact. Your automation should tolerate an empty Email and First name. Route the account (based on Domain and firmographics) and notify the rep that it is a company-level identification. Still actionable.

Airtable rate limits. 5 requests per second per base. For high-volume sites, batch writes in your middleware or skip Airtable as the real-time landing and let it ingest a 5-minute rollup instead.

SLA timers look broken. Airtable’s NOW() function updates lazily, not continuously. If your SLA view looks stale, click into the view, and it will recompute. For real-time accuracy, pair with a scheduled automation that runs every 15 minutes to refresh.


Extending the recipe

  • Pair Airtable routing with Slack visitor alerts so the Slack ping in Step 3 has the full payload and a “Claim this lead” button.
  • Push routed records into Salesforce, Close, or Attio so Airtable is the routing brain and the CRM is the system of record.
  • Add Clay enrichment upstream of Airtable to pre-enrich phone numbers and revenue before the routing decision runs.
  • If you already run n8n instead of Zapier, see the Leadpipe n8n automation recipe for the same bridge pattern.
  • Use the Leadpipe MCP server to let Claude query the Airtable base and suggest the next action for each row. An AI pair SDR on top of a routing board.

Why Airtable works better than your CRM’s native routing

CRM routing was designed around form fills: one lead at a time, a small ruleset, and no live scoring. Modern routing needs to read identified-visitor intent, check against a target list, apply territory logic, set SLAs, and do all of it in seconds. Airtable handles that with normal human-editable tables and scripts, which matters because the RevOps person who maintains the logic is rarely a developer.

The best routing engine is the one your RevOps lead can read without opening a help doc.

Every plan ships with the same identity graph, 23 REST endpoints, webhooks, and a 27-tool MCP server. Start in 5 minutes →