
Configuring Notion as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Notion option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
Nekt supports Notion OAuth, making the setup process simple and secure. You just need to authenticate with your Notion account.- Click “Notion Authorization” when prompted
- You’ll be redirected to Notion’s authorization page
- Sign in to your Notion account if you haven’t already
- Review the permissions that Nekt is requesting
- Click “Allow” to grant access to your Notion workspace
- You’ll be redirected back to Nekt with your account connected
- The OAuth connection will give Nekt access to databases based on your user permissions in the Notion workspace.
- You can revoke access at any time from your Notion workspace settings.
- Only connect workspaces that contain the data you need for your analytics.
2. Select streams
The Notion connector creates four types of data streams: Databases Stream- Stream name:
databases - Purpose: Lists all databases accessible to your Notion integration
- Use case: Discover what databases are available in your Notion workspace
- Stream pattern:
database_{database_id} - Purpose: Extracts the actual content (pages/rows) from each individual database
- Use case: Get the data stored within your Notion databases
- Stream name:
pages - Purpose: Fetches all pages via the Notion Search API, including their full body content (blocks)
- Use case: Extract full documentation, wiki entries, and page contents from your workspace
- Stream name:
comments - Purpose: Fetches all comments associated with your pages
- Use case: Extract discussions, feedback, and page comments from your workspace
Tip: The stream can be found more easily by typing its name.Select the streams and click Next.
3. Configure data streams
Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.- Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
- Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
- Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
- Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
- Incremental sync: The connector supports incremental synchronization for database content streams and the pages stream using Notion’s
last_edited_time. Only extracts pages that have been created or modified since the last sync. - Full sync: Extracts all pages from the database every time.
- Incremental sync: The connector supports incremental synchronization for database content streams and the pages stream using Notion’s
The
databases stream always performs a full sync since it’s just listing available databases.4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:- Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
- Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
5. Check your new source
You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.Streams and Fields
Below you’ll find all available data streams from Notion and their corresponding fields:Databases
Databases
The
databases stream includes the following properties for each database:Database Content
Database Content
Each
database_{database_id} content stream includes:Pages
Pages
The pages stream fetches all pages via the Notion Search API with full content retrieval. It includes:
Comments
Comments
Data Model
The following diagram illustrates the relationships between the core data streams in Notion.Implementation Notes
API Limits & Performance
- Connection Pooling: The connector uses connection pooling to prevent socket exhaustion during large data extractions. This ensures stable and reliable syncs without connection drops when fetching high volumes of records, particularly from heavily nested structures like the
pagesandcommentsstreams.
Transformation Requirements
- Properties parsing: All page properties (including custom columns defined in your Notion databases) are serialized into the
propertiesJSON string. To use these fields in your analysis, you will need to parse the JSON in your SQL transformations (e.g., usingJSON_EXTRACTin Athena orJSON_VALUEin BigQuery) to expose them as individual columns. - Titles and text: Nested structures like titles, user objects, or rich text are exported as stringified JSON blocks and might require further extraction depending on your database engine.
Authentication Limits
- Nekt securely manages the Notion OAuth integration natively in the platform. Refresh tokens are seamlessly updated and evaluated during internal system validations to guarantee uninterrupted extractions. Ensure your connected user retains the necessary read permissions over the source Notion databases.
Skills for agents
Download Notion skills file
Notion connector documentation as plain markdown, for use in AI agent contexts.
idparentdiscussion_idrich_textcreated_timelast_edited_timecreated_bypage_id