Skip to content

Notion

Ingests a Notion workspace as a property graph: pages, databases, the people who authored them, and — most usefully — the relations between pages. Walks the workspace via Notion's search API sorted by last_edited_time, so ticks are incremental (a stored floor stops the walk once it reaches already-seen items).

OAuth data source

Authorize once with Connect in the UI — there's no token to paste. Provider slug notion; see OAuth data sources for the one-time provider-app setup. Notion is capability-based: grant the integration read content + read user information when you authorize.

Connect

  1. Data sources → Add data source → Notion.
  2. Name it, click Connect Notion, and approve access in the Notion window.
  3. (Optional) restrict to specific databases; leave empty for the whole workspace the integration can see.
  4. Pick a sync interval and Create.

What it ingests

A property graph under notion_nodes / notion_edges (graph name notion); ids are prefixed notion:.

Nodes

LabelIdKey props
Databasenotion:db:{id}title, url, last_edited_time
Pagenotion:page:{id}title, url, archived, last_edited_time
Usernotion:user:{id}

Edges

TypeFrom → ToMeaning
CONTAINSDatabase → Pagepage lives in a database
CHILD_OFPage → Pagesub-page of a parent page
CREATED_BY / LAST_EDITED_BYPage/Database → Userauthorship
RELATES_TOPage → Pagea Notion relation property value (carries the property name)

Configuration

FieldTypeDefaultDescription
credential_iduuid— (required)the OAuth2 credential (set by the Connect flow)
databasesstring[][]restrict to these database ids; empty = all
max_pages_per_tickint10search pages fetched per tick (≤100 items each)
json
{
  "credential_id": "0e8f…",
  "databases": [],
  "max_pages_per_tick": 10
}

Default sync interval is 10 minutes. The data source resolves and refreshes the OAuth token automatically each tick — see OAuth data sources.

An open-source project · MIT licensed.