> ## Documentation Index
> Fetch the complete documentation index at: https://docs.userepo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Notion

> Workspace pages, headings, and blocks. Per-page integration grant.

## What's ingested

* Pages explicitly shared with the Repo integration
* Headings (H1–H3), paragraphs, bulleted/numbered lists, to-dos, quotes, callouts, code blocks
* Child pages up to 2 levels deep
* Page metadata (title, URL, last edited time, parent)

## What's NOT ingested

* Pages not shared with the integration (Notion enforces this — Repo can't see what wasn't granted)
* Database row content (databases themselves yes, individual rows not yet)
* Block-level user mentions or comments
* File attachments

## OAuth scopes

Notion uses OAuth-app-level scopes plus per-page sharing. When you connect:

1. You authorize the Repo integration to access your Notion workspace
2. **Then you explicitly share specific pages** with the integration (via the page's "Add connections" menu)
3. Only the shared pages — and their descendants — are visible to Repo

This is the most restrictive permission model of any Repo connector and is great for governance.

## Connecting

1. **Sources** tab → click **Connect** on Notion
2. Notion OAuth screen → pick the workspace → approve
3. **Important**: open Notion → for each page or top-level page you want indexed, click **⋯** → **Add connections** → **Repo**

Without step 3, the integration has zero pages to read and sync runs return 0 documents.

## Sync cadence

Auto-sync every 15 minutes. The Notion connector uses Notion's `/v1/search` endpoint to find updated pages since the last cursor.

### Rate limits

Notion's API is rate-limited to \~3 requests/second. Repo enforces a 350ms minimum interval between requests and retries on 429 up to 3 times. Large workspaces (>500 shared pages) may take a few minutes for the first sync.

## Multiple workspaces

You can connect multiple Notion workspaces to the same Repo organization — each appears as a separate connector card. Repo dedupes on the Notion `workspace_id`, so re-running OAuth against the same workspace updates the existing connector instead of creating a duplicate.

## Troubleshooting

| Symptom                                 | Likely cause                                                           |
| --------------------------------------- | ---------------------------------------------------------------------- |
| Sync returns `discovered: 0` repeatedly | No pages shared with the integration. Open Notion, share pages, retry. |
| Sync fails with `Notion 401: ...`       | Token was revoked (integration uninstalled). Click **Reconnect**.      |
| Sync fails with `Notion 429: ...`       | Rate limit. Wait 60s and retry — Repo auto-retries up to 3 times.      |
| Page content appears empty              | Page is mostly databases/embeds, which aren't ingested yet.            |
