Field note

How to Sync Airtable and Google Sheets Automatically (2026, No Code)

The one-paragraph version

The reliable setup is: Airtable "Watch Records" → filter → Google Sheets "Add/Update Row", built in Make in about 20 minutes. One-way sync (Airtable → Sheets) is simple and robust; two-way sync sounds nice and causes merge conflicts, infinite loops, and duplicate rows — I've rebuilt too many of these. Unless you have a hard reason for edits in both places, sync one-way and treat one tool as the source of truth. Full walkthrough below, including the dedup trick that stops duplicate rows.

Why people sync these two

Airtable is a real database (views, linked records, forms); Sheets is where everyone already lives (finance, sharing, quick analysis). The typical pattern: operations run in Airtable, leadership wants the same data in a spreadsheet. Copy-paste breaks the day you forget once.

The setup (Make, one-way: Airtable → Sheets)

What you need: Make account (free tier works — this uses ~50–200 ops/month at typical volume), Airtable base with a view, Google Sheets with matching headers.

Step 1 — Trigger: Airtable "Watch Records".
Create a scenario. First module: Airtable → Watch Records. Connect your account, pick the base and table, and — important — pick a view that only shows new/changed records (e.g., a "Needs Sync" view filtered on a checkbox or a "last modified" window). This keeps each run cheap: it only pulls what changed.

Step 2 — Find the matching row in Sheets.
Second module: Google Sheets → Search Rows. Search by the Airtable record ID (write it into a hidden column in Sheets — this is the dedup key). If a row is found, you'll update it; if not, you'll add it.

Step 3 — Router: update or add.
Add a Router with two branches:

Filter on Branch B: "row not found" (the Search Rows module returns empty). Filter on Branch A: the opposite.

Step 4 — Schedule.
Set the scenario to run every 15 minutes (free tier minimum) or use an Airtable automation/script to call a Make webhook for near-real-time sync. For most teams, 15 minutes is plenty.

Step 5 — Backfill once.
For existing records: temporarily point the view at all records, run once, then switch the view back to "changed only". Verify row counts match (Airtable record count vs Sheets rows) before you call it done.

The dedup trick, explained

The hidden Airtable-record-ID column is the whole game. Without a stable key, "is this row already synced?" is a fuzzy match on names or emails — and fuzzy matches duplicate. Record IDs are stable forever, so re-runs are idempotent: run it ten times, same result.

When one-way isn't enough (and the honest warning about two-way)

Two-way sync means changes in Sheets also flow back to Airtable. To build it, you mirror the scenario: Sheets "Watch Changes" → Airtable "Update Record". The problems:

My recommendation: don't do two-way. Pick a source of truth. If Sheets people need to edit, give them an Airtable form or an Airtable shared view instead — same editability, zero sync logic. Two-way sync is a project, not a setup.

Verdict

Airtable → Sheets one-way sync with a record-ID dedup key: 20 minutes to build, ~100 ops/month to run, and it just works. Two-way sync: possible, but budget a day and a maintenance headache — or better, replace it with a form.

Walkthrough uses Make and Airtable as of October 2026. Module names change occasionally — search inside Make's module picker if a name doesn't match exactly.


Enjoyed this? Join the newsletter for one practical automation tip a week. No spam, no hype.

← Back to all field notes