Outreach Tracker to Airtable Sync

Institutional outreach for WordPress Credits is tracked in an Outreach Tracker Google Sheet, while confirmed partners live in the Institutions table in the WordPress Credits Airtable base. This sync keeps the two connected, so a lead never goes cold just because it’s living in the wrong tool.

Why we built this

Outreach moves fast and lives in a Google Sheet: names, cities, who’s leading the conversation, links to HelpScout threads. The Institutions table in Airtable is the clean, operational system of record once a school is actually onboarded. Keeping them separate means outreach can stay messy and fast-moving without cluttering the table everyone else relies on, but the two need to talk to each other so nobody duplicates work or loses track of a lead.

How it works

  • Every row in the Institutions tab of the Outreach Tracker sheet is mirrored into a table called Outreach Tracker (Synced), in the WordPress Credits Airtable base.
  • Editing a row in the sheet updates the matching Airtable record within a few seconds. Adding a new row creates a new Airtable record automatically.
  • The sync only touches the fields it manages: name, city, country, the WPCC/WP Credits intro checkboxes, lead owner, notes, date of last contact, and the HelpScout link. It never touches anything you set directly in Airtable, like the promotion checkbox below.
  • It’s one-way, sheet to Airtable. Edits made directly in the Outreach Tracker (Synced) table in Airtable won’t flow back to the sheet.

Promoting a lead to the Institutions table

Once a lead is confirmed and ready to onboard, program managers promote it straight from Airtable:

  1. Open the record in Outreach Tracker (Synced).
  2. Check the Promoted to Institutions box.
  3. An automation creates a matching record in the main Institutions table right away.

This is the only step that needs a person. Nothing about the outreach stage moves into the main table until someone decides it’s ready.

You’ll also see a Promote button on each row. Airtable doesn’t currently let a button on a grid trigger an automation on its own (that’s only possible from an Interface), so for now the checkbox is what actually does the work. Use the checkbox.

What the sync doesn’t do

  • It doesn’t promote leads automatically. That’s a deliberate choice, so nothing lands in the operational table before a program managerProgram Manager Program Managers (formerly Super Deputies) are Program Supporters who can perform extra tasks on WordCamp.org like creating new sites and publishing WordCamps to the schedule. has actually confirmed it.
  • It doesn’t delete records. If a row is removed from the sheet, its Airtable record stays put.
  • It doesn’t sync in the other direction. Treat the sheet as the source of truth for outreach data, and Airtable as the source of truth for anything past the “Promoted” checkbox.

How this was built

We looked at two ways to keep the sheet and Airtable connected: Airtable’s native Google Sheets sync, or a script that pushes changes through the Airtable APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.. We started with the native option, since it needed no code to maintain and nobody would have to own it. Partway through setting it up, though, it turned out Airtable’s Google Sheets integration only does a one-time import — there’s no way to make it a live, ongoing sync. So we switched approaches.

What’s running now is a Google Apps Script bound to the Outreach Tracker sheet. It watches for edits and pushes changed rows to Airtable through the API, matching against existing records by name first so nothing gets duplicated. We also built the Outreach Tracker (Synced) table itself, along with the Promoted to Institutions checkbox and the automation described above.

Two issues came up while setting this up, worth knowing about if something looks off:

  • The Ac field in Airtable had picked up a stray leading space in its name from the original import. It looked completely normal in the interface, but it meant every lookup-by-name silently failed. Renaming the field to remove the space fixed it.
  • City, Country, and Lead Owner started out as Single select fields. The sync’s Airtable token only has permission to read and write records, not add new dropdown options, so any value not already in the option list — or a blank cell — failed to save. We converted those three to plain text fields, which suits free-form outreach data better anyway.

Keeping it healthy

A few things are worth knowing if something looks off:

  • A row isn’t syncing. Open Extensions Apps Script Executions in the sheet to see the most recent run and any error it logged.
  • “Missing AIRTABLE_TOKEN” error. The script’s Airtable token is missing from its Script Properties, or was cleared. It needs to be re-added there.
  • A 401 or 403 error from Airtable. The token has expired, lost its scopes, or lost access to the base. It needs to be regenerated.

Questions

If something isn’t syncing and the steps above don’t explain why, ask a WordPress Credits Admin for assistance channel.

s
search
c
compose new post
r
reply
e
edit
t
go to top
j
go to the next post or comment
k
go to the previous post or comment
o
toggle comment visibility
esc
cancel edit post or comment