New teams get free Claude credits for their trial. Learn more

Connect Notion to Claude / ChatGPT

Query Notion databases like tables, and let Claude read your metric definitions and glossary in Notion before it answers. Read-only, and it only sees the pages you share with it.

Connects with API key

What to ask for

  • “What's our definition of active customer, and how many did we have last month?”
  • “Which projects in our roadmap database are marked In progress, who owns them, and which are past their due date?”
  • “Our Notion doc says churn excludes accounts that downgrade. Using that definition, what was churn in October?”
  • “List every metric in the Notion metrics catalog that has no owner or was last edited more than six months ago.”

A lot of what a team knows about its data lives in Notion: what counts as an active customer, how churn is calculated, which roadmap items are late. Contextflo connects Notion to Claude and ChatGPT in two ways. You can query Notion databases as data, and Claude can read your docs, like a metrics glossary, and use those definitions when it answers questions about your warehouse.

How it connects

Notion connects with an internal integration token. You create an integration in your Notion workspace, give it read access, and share the pages or databases you want covered with it. Contextflo sends that token with each request to the Notion API.

Contextflo only reads. It calls search, retrieve page, read page content, retrieve database and query database, and nothing else.

What's covered

EndpointWhat you getFilters
SearchPages and databases shared with the integration, with title, link and last edited timeTitle text, pages or databases only
Get pageA page's title and properties as plain values: text, numbers, select and status, dates, people, relations, formulasPage link or id
Page contentThe page body as text: headings, paragraphs, lists, to-dos, quotes, callouts, toggles and code. Other blocks show as a placeholderPage link or id
Get databaseEvery property in a database with its type and the options for select and statusDatabase link or id
Query databaseDatabase rows with their properties, paged through 100 at a timeAny Notion filter and sort, such as status equals Done or due date before today

The first two uses map onto these endpoints. To query Notion as data, Claude reads the database schema and then queries it with a filter. To use Notion as context, it searches for the right page and reads its content before it writes SQL against your warehouse.

Permissions

Two layers:

  1. What you share with the integration. Notion only returns pages and databases that have been shared with the integration, and the pages under them. Share the glossary and the databases you want covered, and leave the rest alone. That is the ceiling: nothing in Contextflo can go past it.
  2. Groups in Contextflo. Admins allow or deny each Notion endpoint per group. Everyone can read the metrics glossary while only ops can query the roadmap database, for example.

Freshness

There is no sync. Every question calls the Notion API when you ask it, so a definition someone updated this morning is the one Claude uses. Nothing is copied into a table, and there is no schedule to wait for.

Set it up

  1. Create an internal integration. In Notion, open Settings, go to Connections, and click Develop or manage integrations (or go straight to notion.so/my-integrations). Click New integration, pick your workspace, and set the type to Internal.
  2. Give it read access only. Under Capabilities, check Read content and uncheck Update content and Insert content. For user capabilities, Read user information without email addresses is enough to show owners by name. With no user access, people fields show ids.
  3. Copy the token. Copy the Internal Integration Secret from the integration's configuration page. It starts with ntn_.
  4. Share your pages. Open each page or database you want covered, click the ... menu in the top right, choose Connections, and add your integration. Sharing a parent page also shares everything under it.
  5. Paste the token in Contextflo. Go to Settings > Data sources, add Notion, and paste the token. You need to be an admin.
  6. Set group access. Allow or deny the Notion endpoints for each group.
  7. Connect your AI tool. If Claude or ChatGPT isn't talking to Contextflo yet, add the connector: Claude or ChatGPT. Then ask your first question.

FAQ

Can Contextflo change anything in our Notion workspace?

No. Contextflo only reads. It never creates, edits or deletes pages, and the integration only needs the Read content capability. Even if a token had more, Contextflo has no code path that writes.

Which pages can Claude see?

Only the pages and databases you share with the integration, plus the pages nested under them. Anything not shared is invisible to the API, so Claude cannot find it or read it.

Do you copy our Notion content into Contextflo?

No. Every question calls the Notion API at that moment and nothing is synced or stored. Edit a definition in Notion and the next answer uses the new wording.

How does Claude use our Notion docs when it answers a data question?

It searches the pages you shared for the term, reads the definition, and then writes the query against your warehouse to match it. Ask it which page it used and it can link you to it.

Does it work with databases that have several data sources?

Yes. Notion now lets one database hold several data sources. Claude reads the schema of each one and queries the one you mean.

Is there a limit on how much it can read?

Notion allows an average of three API requests per second per integration. A typical question takes a few requests, and long pages are read in batches of 100 blocks.

Start free