Notion Workers introduces a declarative sync system that lets developers pull data from any source into Notion using incremental functions rather than full data pulls—reducing API costs through backfill/delta patterns and built-in rate limiting pacers.
Key Takeaways
Use the backfill/delta pattern to separate initial historical data pulls from frequent incremental updates—backfills run once manually to grab all historical records, while deltas run every 5 minutes to sync only changed data since last run.
Implement declarative database schemas in sync functions that auto-migrate when deployed—add or remove columns and Notion handles migration automatically, eliminating manual schema management.
Control API rate limit consumption with pacers by declaring a request budget over a time interval (e.g., 30 requests per 30 minutes) and calling await on the pacer function to automatically pause syncs when approaching limits.
Structure sync functions as small incremental units of work that return page tokens and change lists—this enables observability into what's delayed, how many objects synced, and allows Notion to handle pagination automatically.
Pair backfill syncs with delta syncs on the same database to re-sync new columns from source APIs when you add them to Notion—backfill reruns populate retroactive data without full historical re-ingestion.
Topics
Notion Workers API
Backfill/Delta Sync Pattern
API Rate Limiting
Data Integration Architecture
Declarative Database Schemas
Transcript Excerpt
Hey, I'm Anthony, a software engineer here at Notion. I'm working on Notion Workers, and today we're going to be talking about building sync functions with workers. And sync functions let you pull in data from any data source, a CRM, a budgeting app, a fitness [music] tracker, into Notion, so you can work with it with your team, or build custom agents on top of it, you name it. Hey, I'm Jimmy. I'm also a software engineer here at Notion. I don't work on workers, but I'm trying to build one, so I want to ask Anthony some questions about how it all works, how do I deploy, how do I get going? So, let's step through the different components of a sync, starting at the foundation, which is the database that you sync to. So, the first thing you do is declare the schema of the database, a Notion d…