Linking Notion as a source

Let AI connect your sources for you

Skip the manual setup — run this in your project and the wizard auto-detects your databases and APIs and connects them to PostHog.

Learn more
PostHog Wizard hedgehog

Contents

The Notion connector syncs your Notion workspace data into PostHog, including pages, databases, users, blocks, comments, and permission groups.

Adding a data source

  1. Go to the Data pipeline page and select the Sources tab.
  2. Click + New source and select Notion by clicking the Link button.
  3. Get your integration token:
    • Go to notion.so/my-integrations and click + New integration.
    • Give your integration a name and select the workspace you want to sync.
    • Under Capabilities, ensure Read content is enabled.
    • Copy the Internal Integration Secret (starts with ntn_ or secret_).
  4. Paste your integration token into PostHog.
  5. Optional: If you want to sync permission groups (Enterprise only), paste your organization bot token. See syncing permission groups below.
  6. Optional: Add a prefix to your table names.
  7. Click Next.
Share pages with your integration

Each page and database you want to sync must be explicitly shared with your integration. Open the page in Notion, click the ••• menu in the top right, select Connections, and add your integration. Pages not shared with the integration won't appear in the sync.

The data warehouse then starts syncing your Notion data. You can see details and progress in the data pipeline sources tab.

Available tables

The Notion source syncs the following tables:

TableDescription
pagesAll pages shared with your integration
databasesAll database objects shared with your integration
usersAll users in your workspace
blocksContent blocks within synced pages (paragraphs, headings, lists, etc.)
commentsComments on synced pages
permission_groupsWorkspace permission groups (Enterprise only). Requires an organization bot token.

Sync modes

Notion tables support full refresh only. Each sync re-downloads all data from Notion. Incremental syncing isn't available because Notion's API only sorts by last edited time but doesn't support server-side filtering by it.

For large workspaces, syncs may take longer due to Notion's rate limits (~3 requests/second). The blocks and comments tables fan out across all synced pages, so workspaces with many deeply nested pages will take the longest.

Syncing permission groups (Enterprise)

The permission_groups table syncs workspace permission groups, including admin-managed and SCIM-managed groups. This table is only available for Notion Enterprise organizations.

To sync permission groups, you need an organization bot token in addition to your regular integration token:

  1. In the Notion organization console, create an organization bot token with the permission-group:read scope.
  2. Paste this token into the Organization bot token field when configuring the source.

The organization bot token is separate from the integration token you use for other tables. Other tables continue to work without it.

If the token is missing, invalid, or lacks the required scope, the permission_groups table shows a permission error in the schema picker, but other tables sync normally.

Configuration

OptionTypeRequired
API keypasswordYes
Organization bot token (optional)passwordNo

Supported tables

TableDescriptionSync methodIncremental fieldPrimary key
pages

A Notion page — a document of content blocks, optionally with database properties.

Full refresh——
databases

A Notion database (data source) — a collection of pages with a defined set of properties.

Full refresh——
users

A user or bot in the Notion workspace.

Full refresh——
blocks

A block of content within a Notion page (paragraph, heading, list item, etc.).

Full refresh——
comments

A comment left on a Notion page or block.

Full refresh——
permission_groups

A permission group in the Notion workspace, either admin-managed or SCIM-managed.

Full refresh——

Still have questions?

Was this page useful?