How do I sync Airtable to HubSpot without a mess?
Keep Airtable as the record and send changes one way into HubSpot, matched on a key both sides share: the email for contacts, the domain for companies, and the Airtable record id once a pair exists. HubSpot's own data sync connects to Airtable on every HubSpot plan. Two-way sync is where edits start overwriting each other.
You run delivery in Airtable: clients, projects, who's working on what. Sales wants the same people in HubSpot so they can email them and track deals. The first sync goes fine. Then someone fixes a phone number in HubSpot, the sync puts the old one back from Airtable, and now nobody trusts either tool.
The handoff
A change in Airtable crosses five steps before it shows up in HubSpot, whether HubSpot's data sync carries it or a system in between does.
| Step | What does it | Where it breaks |
|---|---|---|
| Record changed | Someone on your side, in Airtable, or a form that writes to it | On a one-way sync into HubSpot, an edit made in HubSpot never reaches Airtable, and the next change from Airtable can write over it. |
| Change picked up | HubSpot's data sync, or a system watching the base | Once the first full sync is done, HubSpot syncs a record within ten minutes of a change. A system that listens to Airtable through a webhook made with a personal access token has to refresh it, or Airtable switches it off after seven days. |
| Record matched | The sync: the email for contacts, the company name or domain for companies | A contact without an email doesn't sync by default. When both tools hold a company name and a domain, two companies that share either one are matched as one. |
| Fields written | The sync's field mappings | Custom mappings need a paid Data Hub plan. New dropdown options don't carry over until the sync is saved and started again, and an owner only syncs when that person is a user in both tools. |
| Company created | The data sync's own matching, or a system writing through HubSpot's API | HubSpot doesn't deduplicate companies created through its API by domain, so a system in between has to look the domain up before it creates one. |
Where it breaks
Most of the mess starts when the sync runs both ways. HubSpot's data sync then asks for a default app, which overwrites the other whenever the two disagree. That settles every conflict, and it also means the other side's edits lose every time.
A two-way sync you build yourself, with one automation in each direction, has a worse problem. Each write looks like a fresh edit to the other side, so one change can bounce back and forth. Two people editing the same record at once leave it holding whichever write landed last.
Deletes need a decision before the sync starts. HubSpot's data sync has a step to resync deleted records, which recreates them in either app, so a record someone removed on purpose can come back if someone else resyncs.
Company matching catches people out too. Data sync ignores capitalization and punctuation when it compares company names, and when the other app has both a company name and a domain field, it matches two records that share either one. Two different clients with the same trading name in two cities can end up as one company.
Then there's Airtable's own limit. Its API takes five requests a second for each base, and a system that goes over has to wait thirty seconds, so the first sync of a big base has to be paced. On the Free and Team plans, calls are also capped by the month.
The source-of-truth and dedupe rule
These are the rules I'd set for a one-way sync from Airtable. HubSpot's data sync covers some of them with the right settings, and the rest take a system in between.
- Airtable is the record for every field it holds. HubSpot gets a copy, and those fields only change in Airtable.
- Contacts match on the email, lowercased and trimmed. A record without one is held for a person to look at.
- Companies match on the domain alone, never the name, and a system writing through HubSpot's API looks the domain up before it creates one.
- Once a pair exists, the Airtable record id is the key. I'd store it in a HubSpot property set to require unique values, so the pair holds when someone changes an email.
- HubSpot keeps what happens in HubSpot: emails, calls, deals and notes. The sync only writes the fields Airtable owns.
- Deletes never sync. Removing a record is a person's decision on each side.
A system I built works this way: records from forms and emailed PDFs land in Airtable once, and HubSpot is updated from Airtable. When I re-sent a batch of test records on 2026-09-16, on accounts I own, the record already stored was found unchanged and skipped, so neither Airtable nor HubSpot was written to.
What stays human
Merging stays with a person. When two Airtable rows look like the same client, or a contact moves jobs and gets a new email, deciding they're one record takes someone who knows them. Records held for a missing email go to a person too, because one look tells you whether it's a typo or junk.
The split of fields between the two tools is a person's call as well, since it decides who in the business owns which information. And someone has to read the sync's failures every week. A sync that skips a few records each week, with nobody reading why, is how two tools drift apart.
What I'd pick, per situation
| If you | I'd pick |
|---|---|
| Run delivery in Airtable, and sales only needs contacts and companies in HubSpot | HubSpot's data sync, one way into HubSpot, matched on the email for contacts. It's on every HubSpot plan, and the default mappings may be enough. |
| Need fields mapped beyond the defaults | The data sync with a paid Data Hub plan, or a small system in between when custom mappings are the only reason to upgrade. |
| Feed Airtable from several places, like forms and emailed files | A system in between that cleans and matches each record before Airtable, then updates HubSpot from it. |
| Have sales working in HubSpot all day, logging calls and moving deals | Make HubSpot the record instead, and copy what delivery needs into Airtable. Two tools that both think they're the record is the mess you started with. |
| Need both sides editable | A two-way sync with a default app named for conflicts and a short list of fields each side owns. I'd still try to make most fields read-only on one side first. |
A system in between is one more thing to look after, so I'd build it to log each run and alert a named person when a record fails to sync.
Questions
Does HubSpot connect to Airtable without another tool?
Yes. HubSpot's data sync connects to Airtable on every HubSpot plan, one way in either direction or both ways. Mapping fields beyond the defaults needs a paid Data Hub plan.
Should Airtable or HubSpot be the source of truth?
The tool where the people who change the data work all day. If delivery runs in Airtable and sales only needs to email those people, Airtable. If sales lives in HubSpot, logging calls and moving deals, HubSpot is the record and Airtable gets the copy.
How fast does a change in Airtable reach HubSpot?
With HubSpot's data sync, a record syncs within ten minutes of a change once the first full sync is done. The first sync of a large base can take much longer, and HubSpot emails you when it finishes.
Can I match on something other than the email?
Yes. HubSpot's data sync lets you choose your own matching field, as long as it's a text field, and then it matches on that field alone. A record id only works as the key once it has already been synced to the other side.
What happens to records I delete?
HubSpot's data sync can resync deleted records, which recreates them in either app. I'd keep deleting out of the sync and make it a person's decision on each side.
- HubSpot Knowledge Base, Connect and use HubSpot data sync: all products and plans, Airtable among the spreadsheet apps, one way or two way, a default app overwrites the other on conflicts, contacts without an email skipped by default, a company with the same name and a different domain matched, records sync within 10 minutes of a change, an email when the first sync completes, and deleted records can be resynced in either appREAD
- HubSpot Knowledge Base, Match records in data sync: email for contacts, company name or domain for companies, capitalization and punctuation ignored on names, a chosen text field used alone, and record ids once records are pairedREAD
- HubSpot Knowledge Base, Understand your data sync field mappings: custom mappings need Data Hub Starter, Professional or Enterprise, owners sync only when they're users in both apps, and new dropdown options need the sync started againREAD
- HubSpot Knowledge Base, Deduplicate records: companies created through the API aren't deduplicated by domain, and properties can be set to require unique valuesREAD
- HubSpot developer docs, Contacts API: email is the main key against duplicates, and an upsert can match on the email or a custom unique propertyREAD
- Airtable developer docs, Rate limits: 5 requests per second per base, and going over means waiting 30 secondsREAD
- Airtable Help Center, Managing API call limits: monthly call limits on the Free and Team plansREAD
- Airtable developer docs, Create a webhook: webhooks made with OAuth or a personal access token are disabled after 7 days unless refreshedREAD
Related
- Source of truthThe one system whose copy of a record wins when two tools disagree. Why it matters for opt-outs and phone numbers, and how a one-way sync keeps it that way.
- Dedupe keyA dedupe key is the field a system uses to decide two records are the same person or company. Which key to pick, an example, and what goes wrong without one.
- CRM hygieneCRM hygiene is keeping CRM records accurate, complete and free of duplicates. Why it decays, what it breaks, and how a system keeps it as a routine.
- How do I stop website form duplicates in HubSpot?Where the handoff from your website form to HubSpot makes duplicates or loses leads, which field is the key, what stays with a person, and what I'd pick.
- Can Google Sheets be your CRM?When a Google Sheet works as your CRM, where it breaks once more people and automations write to it, what to move to, and what I'd pick per situation.
- Two tools, two truths: which system is the source of truthWhen two tools disagree about a client, pick one owner tool for each field, let changes flow one way from it, and send edits made elsewhere back to the owner.
- Records from forms and emailed PDFs, kept in one place that stays rightA system I built that keeps the right version of each customer record in Airtable. Forms and emailed PDFs feed it, and HubSpot copies from it.