Most teams asking how to integrate Airtable with Salesforce don't actually want to replace one with the other. They want Salesforce to keep running the sales motion and Airtable to handle everything sales hands off — onboarding, delivery, projects, custom client data, billing. The integration is the seam between the two systems.
This guide walks through the four real patterns we build for enterprise clients: Airtable's native Salesforce sync, two-way Make/Zapier flows, custom API integrations for high volume, and the architecture decisions that prevent the integration from becoming a maintenance burden.
For native actions specifically (Salesforce automation actions inside Airtable), see our deeper guide on syncing Airtable to Salesforce with native actions. This guide covers the broader picture.
Pattern 1: Native Salesforce Sync (Salesforce → Airtable)
The simplest setup, available on Airtable's Team plan and above. Salesforce is the source of truth; Airtable mirrors a read-only copy.
How to set it up
- In Airtable, click Add or import at the top of the bases list.
- Choose Salesforce.
- Sign in with a Salesforce user that has API access enabled.
- Pick the Salesforce object (Accounts, Contacts, Opportunities, Leads, Cases, or a custom object) or a Salesforce report as the source.
- Choose which fields to import.
- Set refresh frequency — every 5 minutes on most plans.
Airtable creates a new synced table. The data is read-only on the Airtable side; edits must happen in Salesforce.
What it's good for
- Linking Salesforce records to Airtable objects. Sync Accounts into Airtable, then build Projects, Invoices, or Tasks that link to those Account records.
- Reporting layers. Pull Opportunities into Airtable for cross-system dashboards combining sales pipeline with delivery data.
- Field-restricted teams. Salesforce licenses are expensive; Airtable Editor seats are not. Sync enough Salesforce data to Airtable that ops teams can do their work without needing Salesforce logins.
What it can't do
Native sync is one-way only — you can't push Airtable edits back through this channel. For write-back, use native Salesforce actions in automations or Make/Zapier (covered next).
For Airtable's official docs, see the Salesforce sync integration guide.
Pattern 2: Native Salesforce Actions in Automations (Airtable → Salesforce)
Available on Business and Enterprise plans, native Salesforce automation actions let you create and update Salesforce records from Airtable without Make or Zapier.
The actions available
- Create Salesforce record — accepts the object type and field values.
- Update Salesforce record — requires a Salesforce record ID.
- Find Salesforce record — looks up a record by field criteria.
Common automation: deal-to-Salesforce-opportunity
When a project closes in Airtable, create a renewal opportunity in Salesforce automatically.
- Trigger: When record matches conditions — Project Status = "Complete" AND Renewal Likelihood = "High."
- Find action: Find Salesforce Account by Account ID stored on the project.
- Create action: Create Salesforce Opportunity with stage = "Discovery," amount = project budget × 0.8, close date = 30 days out.
- Update Airtable record: write the new Opportunity ID back to the project.
This is the cleanest write pattern because there's no third-party tool to break. It only works on Business+ Airtable plans — for Team plans, fall back to Make/Zapier.
Pattern 3: Make / Zapier for Two-Way Sync
When you need bidirectional flow with conflict logic, transformations, or complex branching, Make and Zapier are the workhorses. We use Make for most client projects because of better error handling.
Salesforce → Airtable: the inbound pattern
- Trigger: Make's Salesforce Watch records (Accounts/Contacts/Opportunities) or scheduled Search records.
- Search: Airtable Search records by stored Salesforce ID.
- Router:
- If found → Airtable Update record.
- If not found → Airtable Create record with the Salesforce ID.
Airtable → Salesforce: the outbound pattern
- Trigger: Airtable Watch records (or an Airtable automation webhook for low-latency).
- Search: Salesforce Search record by stored Airtable ID custom field.
- Router:
- If found → Salesforce Update record.
- If not found → Salesforce Create record, then write the new ID back to Airtable.
True two-way sync: the conflict resolution problem
If both sides can edit the same field, you have to define what wins. Three patterns:
| Strategy | How it works | When to use |
|---|---|---|
| Last-write-wins | Most recent Last Modified wins | Low-conflict workflows |
| Field-level ownership | Specific fields belong to specific tools | Most enterprise setups |
| Source of truth + mirror | One tool is canonical; other is read-only | Recommended default |
Don't build true two-way sync if you can avoid it. The maintenance cost is real.
Pattern 4: Custom API Integration for High Volume
When Make/Zapier costs add up (typically above 50,000 syncs/month) or you need sub-second latency, build a custom integration against the Salesforce REST or Bulk API and Airtable REST API.
When the API is worth it
- Bulk operations. 100K+ records per month. Salesforce Bulk API handles 10,000 records per batch; Airtable bulk endpoints handle 10. Plan accordingly.
- Sub-second latency. Salesforce platform events → AWS Lambda → Airtable write, in under 500ms end-to-end.
- Compliance. Integration runs inside your own infrastructure with full audit trails.
- Complex transformations. Joining multiple Salesforce objects into denormalized Airtable rows is easier in code than in Make.
Architecture sketch
Salesforce Platform Event
↓
AWS Lambda / Cloud Function
↓
Airtable Bulk API
↓
Airtable Record (with Salesforce ID)
For the reverse direction, an Airtable webhook automation calls the same Lambda, which calls the Salesforce REST API.
Comparison: Which Pattern Fits Which Job
| Need | Best Pattern | Plan Required |
|---|---|---|
| Mirror Salesforce Accounts in Airtable | Native sync | Team+ |
| Create Salesforce Opportunity from Airtable | Native action | Business+ |
| Two-way sync of Contacts with conflict logic | Make/Zapier | Any |
| Sync 100K+ records monthly | Custom API | Any (eng resources) |
| Cross-system reporting | Native sync into Airtable | Team+ |
| Real-time platform event reactions | Custom API with Lambda | Any |
Architecture Decisions That Matter
Pick a source of truth per object
For every object you sync, decide which tool owns it.
- Accounts and Contacts: Usually Salesforce. Sales and marketing own them.
- Opportunities (in pipeline): Salesforce. Until they close-won.
- Projects (post-close): Airtable. Delivery owns them.
- Custom objects beyond Salesforce schema: Airtable. Cheaper and more flexible than Salesforce custom objects.
Use Salesforce IDs as join keys
Every Airtable record mirroring a Salesforce object needs a Salesforce ID field (Single line text, 18-character format preferred). Every Salesforce object mirroring an Airtable record needs an Airtable Record ID custom field. Sync on IDs, never on email or name.
Use Salesforce External ID fields for upserts
Salesforce supports designating a custom field as an "External ID" — this enables the Upsert API, which creates-or-updates in a single call based on the External ID value. Add an Airtable Record ID External ID field on every synced Salesforce object. Make's Salesforce Upsert module uses this directly.
One scenario per direction per object
Don't build "the everything syncer." Build:
- Salesforce Accounts → Airtable Companies
- Salesforce Contacts → Airtable Contacts
- Salesforce Closed-Won Opportunities → Airtable Projects
- Airtable Project Status → Salesforce Opportunity Custom Field
Each is independently testable, debuggable, and changeable.
Common Mistakes
Mistake 1: Trying to replace Salesforce with Airtable for an enterprise sales team. Airtable is not Salesforce. If your sales motion depends on territory management, complex forecasting, or AppExchange tools, stay on Salesforce. Integrate, don't migrate.
Mistake 2: Syncing every field. Sync only the fields downstream workflows need. The more fields, the more conflict logic, the more breakage.
Mistake 3: Blowing through Salesforce API limits. Professional Edition has 1,000 calls/day. A naïve Make scenario polling every 5 minutes burns through that in a day. Use the Bulk API for batches, and trigger-based webhooks (Salesforce Outbound Messages or Platform Events) instead of polling.
Mistake 4: Not handling Salesforce required fields. When you Create a record from Airtable, Salesforce rejects the call if required fields are missing. Map every required field, or your automation silently fails.
Mistake 5: Forgetting Person Accounts vs. Standard Accounts. If your Salesforce org uses Person Accounts, the Contact object has different behavior. Confirm your sync handles both models.
Troubleshooting
Sync returns "INVALID_LOGIN" errors. The Salesforce user's password changed, or the connected app's OAuth token expired. Reconnect in the integration tool.
Records created in Airtable but not appearing in Salesforce. The Create action is running but failing — open the automation run history. Most often it's a required field missing or a validation rule blocking the insert.
Duplicate records in Airtable after re-syncing. The native sync re-imported records as new because the source field changed. The Salesforce ID column should always be your join key — confirm it's set as the unique field.
Native Salesforce actions greyed out in Airtable Automations. You're on the Team plan or lower. Native actions require Business or Enterprise.
Make scenario hits rate limits intermittently. Add a throttle module set to 5 requests/second for Airtable and 10 requests/second for Salesforce. For batch syncs, switch to the Bulk API module.
Next Steps
Salesforce integration is rarely a single project — most enterprise setups grow 4–8 distinct scenarios over a year. Start with one direction on one object, run it for a month, and add the next.
For complementary patterns, see our HubSpot integration guide, build a CRM in Airtable, and native Salesforce actions deep dive. When the integration design needs to span sales, ops, finance, and reporting cleanly, we scope and build the full pipeline. Get in touch.