Hey data teams! I wrote a blog post on how to data teams can help non-technical colleagues receive & send data to the rest of the company. Thought it'd be useful to lay out the key points here for anybody who is facing this problem!
The problem
The point of using Airtable & Notion is to give nontechnical folks the ability to easily work with data. But a company’s data primarily sits in a datastore, like Postgres, MongoDB, or Snowflake — so, how to bridge the gap?
Here are some examples of this problem:
Sales & marketing: you scrape leads data online and drop them into your MySQL database, but you need your sales team to vet and qualify those leads without learning SQL.
Customer success: Notion is your customer success HQ, but you have customer data across a ton of sources (Amplitude, Stripe, Zendesk, etc). You can consolidate that data in your Postgres database, but it’s still not touching Notion, so your Notion view is incomplete.
Ops: Your ops team needs to be able to contextualize reasons for missed deadlines, but your SLA data is syncing in MongoDB and your ops team doesn’t know how to edit that data directly. Instead, your engineers are constantly fielding requests for CSV exports, distracting them from product development.
Incomplete or mismatching data, constant requests to engineers… sound familiar? Below, we talk through 4 different ways to sync between Airtable/Notion and your backend DB.
Method #1: Write an internal script
For one-way syncs, it may be enough to work with the APIs built into your tools and databases. Both Airtable and Notion offer APIs through which you can read and write data (although for Airtable you need the Enterprise plan to get access to webhooks and the metadata API, so we recommend using BaseQL instead).
However, writing these scripts is a technical process that might be too high a boundary for nontechnical teams. For technical teams, this may distract from product development, especially if the script requires maintenance over time. Often things break at the worst times, as any developer knows :)
Method #2: Use Zapier (https://zapier.com)
Zapier is not a great tool when it comes to simple data syncing. There are four reasons for this:
You have to set up an individual zap for each possible change to a data table (e.g., you need to set up zaps for record additions, record updates, field additions, etc).
Each time a zap is run, it eats away at your monthly limit. If you are doing batch updates, this can cause you to hit your limit quickly.
Unless you are paying for the Professional plan, the fastest your data can sync is every 15 minutes.
Zapier explicitly does not support two-way syncing, so all of the above is only useful if you want one-way syncs.
Method #3: ETL/reverse ETL
Your next best bet is to use a more technically savvy solution: ETL and reverse ETL. Both can help ensure a single source of truth for your company.
However, ETL and reverse ETL have three drawbacks:
If you need data to simply sync both ways, ETL and reverse ETL can get complicated: you’ll need two separate providers, meaning two separate sales and billing processes and double payments. You will also need to figure out how to navigate the infinite loop problem.
Not optimized for speed. If you need data to be updated faster than 5 minutes, these tools will probably be frustrating for you
Setup-intensive and costly for smaller companies and startups (a bit like cracking a walnut with a sledgehammer).
Method #4: Use Bracket for two-way syncs (https://usebracket.com)
Sometimes, you just want the same data to show up in two different places in real-time. Getting your Airtable and Postgres to mirror each other, or your Notion and MongoDB to show the same data, can significantly reduce data sharing frictions on your team. Bracket does fast bidirectional syncing between tools like Airtable and Notion with any backend database.