Loading tutorials…
Loading tutorials…
Airtable as a CRM is great for teams under 5 reps with simple sales motions — and terrible past that point. This walks the right structure for the right team, and tells you bluntly when you should be on HubSpot or Pipedrive instead.
Who this is forFounders and small sales teams (1-5 reps) running a simple pipeline who want one tool for marketing AND sales tracking. If you have 10+ reps, complex multi-stage deals, or need email integration baked in, you should be on a real CRM — and the FAQ tells you why.
What you'll need
Step 1
A CRM is three objects: companies (accounts), the people at them, and the deals you have with them. Building one giant table is the most common Airtable CRM failure.
In your base → "+ Add or import" → "Create empty table" → name it "Companies." Repeat for "Contacts" and "Deals."
Companies table fields: Company Name (Primary), Domain (URL), Industry (Single select), Size (Single select: 1-10 / 11-50 / 51-200 / 201-1000 / 1000+), HQ Location (Single line text), Account Owner (User), Account Type (Single select: Prospect / Customer / Churned / Partner), Created Date (Created time field), Notes (Long text).
Contacts table fields: Full Name (Primary), Email, Phone, Job Title, LinkedIn (URL), Company (Link to another record → Companies), Owner (User), Lifecycle Stage (Single select: Lead / MQL / SQL / Customer / Churned), Last Touch Date (Date), Notes (Long text).
Deals table fields: Deal Name (Primary), Company (Link → Companies), Primary Contact (Link → Contacts, single), Other Contacts (Link → Contacts, multiple), Stage (Single select: Discovery / Demo / Proposal / Negotiation / Closed Won / Closed Lost), Amount (Currency), Close Date (Date), Owner (User), Source (Single select: Inbound / Outbound / Referral / Event / Partner), Closed Lost Reason (Single select — leave blank until lost).
Resist the urge to merge. A Contact at one company today may move to another company in 18 months. A Company can have 6 deals over 3 years. Three tables — always.
Step 2
Contact → Company (one-to-one). Deal → Company (one-to-one). Deal → Contacts (one-to-many). This is what makes it a CRM.
On the Contacts table, the Company field (Link to another record → Companies, single value) was already added. Verify it works: open a contact, click the Company field, type a company name. Airtable should auto-suggest existing companies or offer to create a new one.
On the Deals table: Company field (Link → Companies, single value) and Primary Contact (Link → Contacts, single). Also add "Other Contacts" (Link → Contacts, multiple values) for deals with multiple stakeholders.
On the Companies table, you will now see auto-generated linked-record fields: "Contacts" (showing all contacts at that company) and "Deals" (showing all deals with that company). These are the back-references.
Add a Lookup on the Contacts table: pull Company.Industry — so when you scan Contacts, you see Industry inline without opening the company.
Add a Lookup on Deals: pull Company.Industry and Company.Size — so deal reports can be sliced by these without manual entry.
Step 3
On Companies: total pipeline value, deal count, last activity. On Contacts: count of associated deals. Rollups are the difference between a spreadsheet and a CRM.
On Companies, add a Rollup field "Total Pipeline" → linked field: Deals → field: Amount → aggregation: SUM(values) — shows the sum of all deal amounts per company.
On Companies, add another Rollup "Open Pipeline" → same setup, but aggregation: SUMIF(values, {Stage} != "Closed Won" AND {Stage} != "Closed Lost") — shows only open pipeline.
On Companies, add a Rollup "Last Activity" → Contacts → Last Touch Date → MAX(values) — shows the most recent touchpoint with any contact at that company.
On Contacts, add a Count field "Deal Count" → linked field: Other Contacts (reverse: which deals include this contact) → just count.
On Companies, add a Formula "Days Since Last Touch" using the Last Activity rollup: DATETIME_DIFF(TODAY(), {Last Activity}, "days") — color red if >30 days. This surfaces neglected accounts automatically.
Step 4
On the Deals table, build a Kanban grouped by Stage. This is the rep's daily-driver view.
Deals table → "+ Create new view" → "Kanban" → name "Pipeline."
Stack by: Stage. The board now shows Discovery / Demo / Proposal / Negotiation / Closed Won / Closed Lost as columns.
Card preview: Deal Name, Company, Amount, Close Date, Owner. Keep cards scannable — 5 fields max.
Filter out closed deals: Stage is not Closed Won AND Stage is not Closed Lost. The Pipeline view is for in-flight deals only.
Sort within each column: Close Date ascending — most urgent at the top.
Color by: Amount > $10K = green, $5K-$10K = yellow, <$5K = grey. Visualizes deal size without opening the card.
Drag-and-drop between columns to move deals through the pipeline. Combined with an automation (next tutorial), this becomes the workflow.
Step 5
Reps need 3-4 views: My Pipeline, My Neglected, This Quarter Closing, Manager Forecast.
On Deals, "My Pipeline" → Kanban grouped by Stage, filtered Owner = current user. The rep's daily-driver.
On Deals, "My Neglected" → Grid, filtered Owner = current user AND Last Activity (a Rollup on the deal of associated Activities) > 14 days ago. Sort by Last Activity ascending. Forces reps to confront cold deals.
On Deals, "This Quarter Closing" → Grid, filtered Close Date is within this quarter AND Stage is not Closed Lost. Sort by Close Date ascending. The forecasting view for managers.
On Companies, "Stale Accounts" → Grid, filtered Days Since Last Touch > 30. Sort descending. Identifies accounts that need outreach.
On Contacts, "MQL Queue" → Grid, filtered Lifecycle Stage = MQL. Sort by Last Touch Date ascending. The marketing → sales handoff queue.
Step 6
A CRM without activity tracking is just a contact list. Add a fourth table for activities and link it back.
"+ Add or import" → "Create empty table" → "Activities."
Fields: Activity Subject (Primary), Type (Single select: Call / Email / Meeting / Note / LinkedIn Message), Date (Date with time), Owner (User), Outcome (Single select: Connected / No Answer / Voicemail / Booked / Not Interested), Related Deal (Link → Deals), Related Contact (Link → Contacts), Related Company (Link → Companies — optional, derivable via Lookup from Contact).
On Deals, add a Rollup "Activity Count" → Activities → just count. Shows engagement level per deal.
On Deals, add a Rollup "Last Activity Date" → Activities → Date → MAX. Drives the "My Neglected" view.
Train reps to log activities at the time they happen — not at end of week. End-of-week logging from memory is the #1 source of unreliable CRM data and costs an average of $15-30K/yr per rep in mis-forecasted pipeline.
Step 7
Import order: Companies → Contacts → Deals → Activities. Reverse order breaks linked-record relationships.
Export from your current CRM or spreadsheet as CSV. Clean it first: standardize company names (Acme Corp vs Acme Corporation), normalize email formats, fix obvious typos.
In Airtable, on the Companies table → "+ Add or import" at the top of the table → "CSV file" → upload. Map columns carefully. Verify a sample of 10 rows before confirming the full import.
Then Contacts: import → ensure the "Company" column in your CSV matches existing Company Name values exactly. Mismatches mean the linked-record relationship will not form, and you will end up linking manually 200+ times.
Then Deals: similar — Company and Primary Contact columns must reference existing record names.
Then Activities (if migrating activity history): Related Deal / Contact / Company must reference existing names.
Post-import audit: spot-check 20 deals for missing companies, missing contacts, wrong owners. Fix immediately. Bad data on day one is bad data on day 365.
Common mistakes
Building a "CRM" on one giant table
What goes wrong: Deals, contacts, companies all mashed into one table. Cannot answer 'how much pipeline does Acme have?' because there is no Company object. Cannot track a contact moving companies. Forecasting becomes guesswork — a missed quarter costs $50-150K in mis-forecasted pipeline.
How to avoid: Three tables minimum: Companies, Contacts, Deals. Linked records connect them. Activities is a fourth table once you start logging activity.
Letting reps invent their own pipeline stages
What goes wrong: Within 8 weeks you have 14 stages — half are synonyms ('Qualified,' 'Qualified Lead,' 'SQL'). Forecast accuracy drops below 40%. Leadership loses trust in the pipeline. ~$30-100K per quarter of bad hiring/spending decisions.
How to avoid: Define 5-7 stages centrally, lock them in a Single select with restricted edit permissions. Document each stage in a base conventions doc.
No Closed Lost Reason field
What goes wrong: You lose 30-40% of deals and have no structured data on why. Marketing keeps generating leads in the wrong segment. Sales keeps repeating the same objections. Product never hears about the recurring 'feature gap' — losing $200K+/yr in ARR.
How to avoid: Add a Closed Lost Reason Single select on Deals: Budget / Timing / Competitor / Feature Gap / No Decision / Other. Use an automation to require it when Stage moves to Closed Lost.
Storing companies as Single line text on Contacts (no Linked record)
What goes wrong: Five contacts at Acme Corp each have 'Acme Corp' as a text field. No rollups possible. Cannot answer 'show me all contacts at Acme' — you have to filter by text, and text variations break the filter. ~3-5 hrs/week of manual reconciliation.
How to avoid: Company is always a Linked record on Contacts and Deals. Companies table is the source of truth for company-level data.
No activity-tracking discipline
What goes wrong: Reps log activities at end of week from memory. Last Touch Date is wrong, follow-up cadences break, and pipeline reviews work from fiction. Mis-forecasted pipeline costs $15-30K/yr per rep.
How to avoid: Build the Activities table. Reps log activities at the time they happen — even one-line notes count. Manager runs the "neglected deals" view weekly.
Trying to make Airtable replace HubSpot when you have 8+ reps
What goes wrong: No native email integration, no sequences, no shared inbox, no call dialer. Reps spend 6-10 hrs/week on activities a real CRM would automate. Effective cost: $1,500-3,000/mo of rep time wasted vs $800-1,500/mo HubSpot Sales tier would have cost.
How to avoid: Airtable CRM works for 1-5 reps with simple motions. Past that, migrate to HubSpot, Pipedrive, or Salesforce. The Airtable rebuild project is real, but the cost of the wrong CRM at scale is much larger.
Recap
Done — what's next
How to set up an Airtable base for marketing without rebuilding it in month two
Read the next tutorial
Hand it off
Building an Airtable CRM is a 1-day project; keeping it useful is an ongoing job. A vetted Airtable specialist will set up the schema, wire automations, build views, and migrate your existing data in one engagement — typically $400-800. Ongoing CRM ops at $400-1,200/mo for $14-16/hr is common for teams scaling past 3 reps.
See specialist rates
Airtable works for 1-5 reps with simple sales motions (one pipeline, no email sequences, no call dialer needed). HubSpot Sales (free tier or $20-50/user/mo) wins as soon as you need email tracking, sequences, shared inbox, or a meeting scheduler. Pipedrive is similar at a lower price point. If your reps spend 6+ hrs/week on activities a CRM would automate, the cost of the wrong tool exceeds the cost of switching.
Airtable does not have native email tracking. Options: (1) Manual logging via the Activities table — works but unreliable. (2) Gmail extension that creates an Airtable record from an email — better but limited. (3) Zapier or Make automation that copies Gmail/Outlook activity to Airtable — works but lossy. (4) Move to HubSpot Sales for native tracking. For sales-heavy teams, options 1-3 are workarounds; option 4 is the real answer.
Not natively. Workarounds: (1) Use Airtable + Mailchimp/Klaviyo via integration — works for marketing nurture but is poor for 1:1 sales sequences. (2) Use Apollo, Outreach, or Salesloft and sync to Airtable. (3) Use a Make/Zapier flow + Gmail to send sequenced emails based on Airtable triggers — fragile. If sequences are core to your motion, move to a sales engagement tool with Airtable as the contact source.
Airtable does not have native deduplication. Options: (1) Standardize keys in the CSV before import (Excel/Google Sheets, sort by Company Name, fix variations). (2) Use the dedupe extension (Marketplace → Dedupe) to merge duplicates after import. (3) Set up a Make/Zapier flow that checks for existing records before creating new ones from external sources. For one-time migrations, option 1 is sufficient.
On Team+ tier, use Shared views: build the view → Share button → 'Create a shareable view link' → set to 'Read only' → optionally password-protect. Send the URL to leadership. They see the live data without an Airtable seat. On Business+ tier, you can also lock the view configuration (no one can change the filter/sort) and embed it in Notion / Confluence / dashboards.
Airtable
Airtable is fast to spin up and easy to wire wrong. Most marketing bases hit a wall at 3,000 records or 10 linked tables because the schema was built around the first idea, not the second year of data. This walks the base structure that holds up.
Airtable
Most Airtable bases use 10% of the formula engine. The other 90% is what separates a 'fancy spreadsheet' from a real ops system. This walks the patterns that matter — and the formulas that should never have been written.
Airtable
Airtable becomes 10x more valuable when it talks to the tools the team already uses — Slack, Gmail, Google Calendar, Mailchimp, HubSpot, your CMS. This walks the integration patterns that hold up past the first sync.
Airtable
DIY Airtable is a great idea — until it isn't. This is the honest framework: when the cost of self-managing a base exceeds the cost of hiring help, and how to tell which side you're on.