> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.alephant.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.alephant.io/_mcp/server.

# Notion

> Configure Notion integration-token indexing for approved pages, descendants, databases, and page content.

## What it indexes

The Notion connector indexes pages shared with the integration, including page properties and supported block content. It also discovers database hierarchy, queries database data sources, and indexes their pages. Supported content includes nested child pages, rich-text blocks, tables, and people properties.

| Root Page ID | Indexing effect                                                                                                          |
| ------------ | ------------------------------------------------------------------------------------------------------------------------ |
| Empty        | Searches for pages available to the integration and discovers accessible database data sources.                          |
| Set          | Indexes that page and recursively traverses its child pages and databases. The page must be shared with the integration. |

The connector uses recursive traversal when a root page is supplied. Without a root page, deployment configuration can also enable recursive lookup to compensate for pages that Notion search does not return.

## Prerequisites

* Create a Notion internal integration in the workspace that owns the content.
* Share each approved top-level page or workspace area with the integration. An integration token cannot discover content that was not shared with it.
* Copy the integration token and, when narrowing the connector, the root page ID.
* An OpenCore Admin must decide whether all integration-accessible pages or only one approved subtree should be indexed.
* Allow outbound HTTPS access to `api.notion.com` from the connector workers.

## Credentials

| Method                     | OpenCore credential values                             | Notes                                                                                                     |
| -------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------- |
| Internal integration token | `notion_integration_token: <NOTION_INTEGRATION_TOKEN>` | The token is sent in the Notion API authorization header. Store it only in the OpenCore credential store. |

OAuth is not implemented for the Notion indexing connector. Notion OAuth used by other application features does not create this connector credential.

## Configure in OpenCore

1. In Notion, share the approved source page or pages with the internal integration.
2. In the OpenCore Admin panel, open **Connectors**, choose **Notion**, and create the integration-token credential.
3. Leave **Root Page ID** empty to index all pages the integration can discover, or enter one approved page ID to index that page and its descendants.
4. Choose **Private** and assign OpenCore user groups for restricted content, or **Public** only when every account may search it.
5. Set refresh and pruning options, create the connector, and run the initial index attempt.
6. Attach the resulting document set to an Agent only after reviewing the indexed page scope.

## Permissions

The Notion connector does not support source-permission sync. It uses the integration's access to decide what can be ingested, but it does not copy each Notion page's viewer list into OpenCore.

This means every OpenCore user who can access the connector or its document set can search all indexed Notion content, even if that user could not open every source page in Notion. Use separate integrations/connectors for different source boundaries and use OpenCore **Private** access with explicit user groups. Do not use **Public** for mixed-sensitivity Notion content.

## Verify

1. Confirm credential validation can search one page, or fetch the configured root page directly.
2. Run an index attempt and search for text from the root page and a nested child page.
3. Verify a database row, table cell, or people property is searchable when that content exists.
4. Confirm an unshared page or a page outside the configured root subtree is absent.
5. Test access with every OpenCore user group assigned to the connector because Notion source ACLs are not synchronized.

## Troubleshooting

| Symptom                                             | Check                                                                                                          |
| --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| HTTP 401 during validation                          | Replace the invalid or expired integration token.                                                              |
| HTTP 403 during validation                          | Grant the integration sufficient access to the selected Notion content.                                        |
| HTTP 404 for a root page                            | Verify the page ID and share that page with the integration.                                                   |
| Pages are missing with no root configured           | Share the pages with the integration; consider an approved root page so recursive traversal defines the scope. |
| A user can search a page they cannot open in Notion | This is expected without source-permission sync; split connectors and restrict them with OpenCore user groups. |

## Related pages

* [Connectors & Indexing](/opencore/knowledge/connectors)
* [Index Settings](/opencore/knowledge/index-settings)