How sync works
flowchart LR Notion[Notion database] -->|change check, webhook, or manual| Worker[KnotCMS worker] Worker -->|Server API| Framer[Framer CMS] Framer -->|optional| Live[Published site]Pipeline steps
Section titled “Pipeline steps”- Trigger — KnotCMS checks the database for changes every minute, or you click Sync now. Projects that set up a Notion webhook before this changed are still triggered by it too, which is faster.
- Fetch — Worker reads Notion rows for mapped properties.
- Transform — Values are converted to Framer field types.
- Reconcile — Framer items are added, updated, or removed to match Notion.
- Publish — Optional
publish()/deploy()on paid plans.
Change detection
Section titled “Change detection”Once a minute, KnotCMS asks Notion whether anything in the database has changed since the last look. Nothing changed means nothing runs, so a quiet database costs nothing and a burst of rapid edits produces one sync rather than dozens.
There is nothing to set up in Notion for this — see Auto-sync.
One consequence is worth knowing: a row deleted with nothing else edited is not always visible to that check, so the item can stay in Framer until the next edit. Sync now removes it immediately.
Headless
Section titled “Headless”Sync runs on KnotCMS servers. You do not need the Framer plugin open — the plugin only opens the dashboard. Setup, OAuth, and mapping all happen on the web.
Content sources
Section titled “Content sources”Notion is available today, and the once-a-minute change check described above is specific to it. Google Sheets is listed in setup as coming soon. See Content sources.