Skip to content

Notion

Notion holds the long-form work that never reaches a commit: specs, RFCs, project pages, meeting notes. This collector indexes the pages you created or last edited, so that work shows up in standups and brag docs alongside your code.

Notion doesn’t hand connections blanket access — you create a connection, then explicitly grant it the pages or databases you want indexed. Nothing else in your workspace is visible to DevRecall.

1. Create a connection at app.notion.com/developers/connectionsNew connection.

Notion asks for a name and an authentication method first — choose access token (also called an internal integration secret). OAuth is for multi-workspace apps and isn’t what you want here.

Capabilities appear after that step. The two DevRecall needs are on by default, but confirm they’re enabled:

  • Read content — to see pages
  • Read user information including email addresses — to work out which workspace member is you

That second one is not optional. Notion’s API can’t filter a search by author, and the token identifies a workspace bot, not a person — so without it DevRecall cannot tell your pages from your colleagues’ and will refuse to enable rather than index the wrong thing.

2. Give it access to your pages under the connection’s Content access tab (or from a page: •••Connections). Nothing is visible to the connection until you do this.

There’s no single “grant everything” button — but you don’t need one. Access inherits down the page tree, so granting a top-level page or a teamspace’s root covers every page nested underneath it. In practice a handful of grants (one per teamspace or top-level area) covers a whole workspace. Grant at the top, not per document.

That least-privilege default is Notion’s design, and it works in your favour here: DevRecall indexes exactly the areas you point it at, and nothing else.

3. Connect:

Terminal window
devrecall auth notion

Paste the connection’s access token (ntn_…). DevRecall validates it, lists the workspace members, and asks which one is you — matching automatically if your email is already known from another source.

Terminal window
devrecall sync

devrecall sync looks at the recent window only:

Terminal window
devrecall backfill --since 90d --source notion
FieldWhat
TitleThe page’s title property
Actioncreated if you made the page, edited if you touched one
URLDirect link back to the page
ParentThe database or page it lives under
TimeThe page’s last_edited_time

Only pages where you are the creator or the most recent editor are stored. Archived and trashed pages are skipped.

Page bodies are not fetched. Titles and metadata are enough to answer “what was I working on”, and pulling every block would multiply API calls against Notion’s ~3 requests/second limit. Comments aren’t collected yet for the same reason — they require a request per page.

Read-only. DevRecall never creates, edits, or deletes anything.

One row per page in your local SQLite database (~/.devrecall/devrecall.db), with page_id, url, parent_type, parent_id, action, and created_at in metadata. The integration secret is stored in ~/.devrecall/tokens/ with 0600 permissions.

Terminal window
devrecall config set notion.enabled false

Already-indexed pages stay. To revoke access entirely, delete the connection at app.notion.com/developers/connections.

no workspace members visible — the connection is missing the Read user information including email addresses capability. Enable it in the connection’s settings and re-run devrecall auth notion.

Notion returned 403 — same cause, or the Read content capability is missing.

Sync succeeds but finds nothing — the connection only sees pages you granted it. Add them under the connection’s Content access tab, or from a page via •••Connections. Grant a top-level page or teamspace root rather than individual documents: access inherits to every child page, so one grant usually covers an entire area. Also check the pages were edited inside the sync window; use devrecall backfill --source notion for older ones.

Pages I only commented on don’t appear — DevRecall records the page creator and last editor. A comment doesn’t change either.