Skip to content

Notion Integration

Rahil P edited this page Jul 3, 2026 · 1 revision

Mirror pages from your Notion workspace into your second brain. Any page you share with the integration syncs in as a memory, stays updated as you edit it in Notion, and surfaces in recall alongside everything else you've captured.

Unlike the capture methods — which push one-off notes in — Notion sync pulls whole pages and keeps them mirrored. Notion stays the source of truth; your brain holds a searchable copy.


How it works

  • Sharing is the selection. You create one connection in Notion, then share the specific pages (and their sub-pages) you want remembered with it. The integration only ever sees what you've shared — nothing else in your workspace.
  • Pages become memories. Each shared page mirrors into one memory, tagged notion, with the page title and live URL at the top so recall results link straight back to Notion.
  • It stays in sync. Edit a page in Notion and its memory updates in place on the next sync. Unshare, archive, or delete a page and its memory is removed. Sync runs automatically every night, or on demand with Sync now.
  • Mirrors are read-only in your brain. While Notion is connected, you edit these memories in Notion, not in the dashboard (see Editing synced memories below).

Setup

Three steps: create a connection in Notion, share pages with it, then paste its secret into your dashboard.

1. Create an internal connection in Notion

  1. Go to app.notion.com/developers/connections and click New connection (called "New integration" in some views).
  2. Give it a name (e.g. Second Brain) and select the workspace you want to sync from.
  3. Set the type to Internal. This is a private connection for your own workspace — not a public integration and not a personal access token. Only connections show up in a page's Connections menu, which is how you share pages in step 2.
  4. Under Capabilities, Read content is all that's needed — the integration only reads pages, it never writes to Notion. You can leave insert/update content off.
  5. Save, then open the connection and copy its Internal Integration Secret. It starts with ntn_….

🔑 Treat the secret like a password — it grants read access to every page you share with the connection. You can rotate it any time from the same Notion page; just reconnect with the new secret afterward.

2. Share the pages you want remembered

A fresh connection can't see anything until you share pages with it.

  1. In Notion, open a page you want in your brain.
  2. Click the ••• menu (top-right) → ConnectionsAdd connections (or Connect to).
  3. Pick your connection (Second Brain) and confirm.

Sharing a page also shares all of its sub-pages, so point the connection at a few top-level pages (or a whole section) rather than sharing every page one by one. Repeat for any other top-level pages or databases you want mirrored.

3. Connect it in your dashboard

  1. Open your Second Brain web dashboard and go to Settings → Integrations.
  2. On the Notion card, paste your ntn_… secret into the field and click Connect.
  3. The dashboard validates the secret against Notion and, once accepted, shows Connected to <your workspace name>.
  4. Click Sync now to pull your shared pages immediately, or just wait — the nightly sync will pick them up.

That's it. Synced pages appear in your recent memories tagged notion, and become searchable via recall from any connected AI client.


What gets synced

Each shared page becomes one memory:

  • Title and URL lead the content — the memory begins with # Page Title and the page's Notion URL, followed by the page body. This sharpens semantic search and lets recall results link back to the live page.
  • The body is flattened to Markdown — headings, bullet and numbered lists, to-dos, quotes, callouts, code blocks, and dividers are preserved. Nested content (indented bullets, toggle bodies) is captured one level deep; very deep or very large trees are truncated (content is capped at ~8,000 characters per page) to stay within Cloudflare Workers' request budget.
  • Sub-pages sync as their own memories — a child page that you've shared becomes its own entry rather than being inlined into its parent, so each page is searchable on its own.
  • Tag and source — every mirrored memory carries the tag notion and source notion, so you can filter your whole Notion set with a tag:notion recall.

Keeping in sync

  • Nightly automatic sync runs at 01:00 UTC every day and reconciles everything: new shares are added, edited pages are refreshed, and unshared/archived pages are removed.
  • Sync now (on the Notion card) runs the same reconciliation on demand. Large workspaces sync in batches of 5 pages per pass — the button loops automatically until your backlog drains, so the first sync of a big workspace may take a moment.
  • Edits update in place. When you change a page in Notion, its memory is replaced on the next sync using the same memory ID — so its links in the memory graph and its recall history survive the update.
  • Removals propagate. Unshare a page from the connection, archive it, or delete it in Notion, and its mirrored memory is deleted on the next sync.

The integration lists up to ~500 shared pages per sync. If you share more than that, everything still syncs, but it converges over successive runs rather than all at once.


Editing synced memories

While Notion is connected, its mirrored memories are read-only in your brain — Notion is the source of truth. Trying to update or append one (from the dashboard, the REST API, or an AI client) returns a message pointing you back to Notion:

This memory is synced from Notion. Edit it in Notion (the change syncs automatically), or disconnect the Notion integration to make it editable.

To change the content, edit the page in Notion — it re-syncs automatically. To take manual ownership of a memory, disconnect the integration (see below) and keep it; it then becomes an ordinary, editable memory.


Disconnecting

On the Notion card, click Disconnect. You'll be asked what to do with the pages already synced:

  • Keep them (default) — your Notion memories stay in your brain as ordinary, editable memories. They stop updating, since the connection is gone.
  • Delete them — removes every memory that came from Notion, leaving your brain as if the integration had never run.

Disconnecting only removes the stored connection and secret; your Notion workspace is untouched. Reconnecting later with the same (or a new) secret resumes syncing without duplicating pages you already mirrored.


Troubleshooting

Nothing synced / "0 synced." The connection can only see pages you've explicitly shared with it. Open the pages in Notion, add the connection via ••• → Connections, then click Sync now. Remember that sharing a parent also covers its sub-pages.

"Could not connect" when pasting the secret. Make sure you copied the Internal Integration Secret (starts with ntn_) from a connection, not a personal/OAuth access token. Also confirm the connection's type is Internal and it has Read content capability.

A page isn't showing up. Confirm it (or one of its parents) is shared with the connection, then sync. Brand-new pages appear on the next nightly sync or the next Sync now.

"Last sync failed" on the card. The card shows Notion's error message. A revoked or rotated secret is the usual cause — reconnect with a current secret. Transient Notion API errors clear themselves on the next sync.

A big workspace looks incomplete after one sync. Syncing runs in bounded batches. Click Sync now again (it loops until drained) or let the nightly run finish the job.

Deeply nested content is missing. Only one level of nesting is captured, and pages are capped at ~8,000 characters. Break very deep or very long pages into shared sub-pages — each syncs as its own memory.


See also: Capture from Anywhere · How It Works · API Reference

Clone this wiki locally