Notion as a data source
Bring your data from Notion to your catalog.
Notion is the AI workspace that works for you - a productivity platform where teams can create docs, wikis, projects, and manage knowledge in one place. It’s widely used by teams for documentation, project management, and collaboration.
1. Data Streams
The Notion connector creates two 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
Database Content Streams
- 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
2. Incremental vs Full Sync
The connector supports incremental synchronization for database content streams using Notion’s last_edited_time
field. This means:
- Incremental sync: Only extracts pages that have been created or modified since the last sync
- Full sync: Extracts all pages from the database every time
The databases
stream always performs a full sync since it’s just listing available databases.
3. Schema
Databases Stream Schema
The databases stream includes the following properties for each database:
Property | Description |
---|---|
id | Unique identifier for the database |
title | Array containing the database title information |
object | Always “database” for database objects |
properties | Stringified JSON of the database schema/properties |
created_time | When the database was created |
created_by | User who created the database |
last_edited_by | User who last edited the database |
last_edited_time | When the database was last modified |
cover | Database cover image information |
icon | Database icon (emoji or image) |
parent | Information about where the database is located |
url | Internal Notion URL for the database |
public_url | Public URL if the database is shared |
archived | Whether the database is archived |
in_trash | Whether the database is in trash |
Database Content Stream Schema
Each database content stream includes:
Property | Description |
---|---|
id | Unique identifier for the page/row |
object | Always “page” for database entries |
last_edited_time | When the page was last modified (used for incremental sync) |
properties | Stringified JSON containing all the page properties based on the database schema |
created_time | When the page was created |
created_by | User who created the page |
last_edited_by | User who last edited the page |
cover | Page cover image information |
icon | Page icon (emoji or image) |
parent | Reference to the parent database |
archived | Whether the page is archived |
in_trash | Whether the page is in trash |
url | Internal Notion URL for the page |
public_url | Public URL if the page is shared |
4. Connector Configuration
-
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 credentials.
-
Authentication with Notion:
Nekt supports Notion OAuth, making the setup process simple and secure. You just need to authenticate with your Notion account.
Connecting 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 process automatically handles authentication and gives Nekt access to the databases you have permission to view in your Notion workspace.
Best Practices
- 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
5. Select Your Notion Streams
-
The next step is letting us know which streams you want to bring. The connector will automatically discover all databases that are shared with your integration.
-
You’ll see:
- The
databases
stream (recommended to include for visibility into your workspace) - Individual
database_{id}
streams for each accessible database
- The
-
Click Next.
6. Configure Your Notion Data Streams
- Customize how you want your data to appear in your catalog. Select a name for each table and the type of sync.
- Table name: We suggest using the database name from Notion, but feel free to customize it. You have the option to add a prefix to make this process faster!
- Sync Type: You can choose between INCREMENTAL and FULL_TABLE.
- Incremental: Every time the extraction happens, we’ll get only new or modified pages since the last sync. This is efficient and recommended for most use cases.
- Full table: Every time the extraction happens, we’ll get all pages from the database. Use this if you need to capture deletions or if you prefer to always have the complete current state.
- Click Next.
7. Configure Your Notion Data Source
-
Describe your data source for easy identification within your organization. You can inform things like what data it brings, to which team it belongs, etc.
-
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).
Check your new source!
-
Click Next to finalize the setup. Once completed, you’ll receive confirmation that your new source is set up!
-
You can view your new source on the Sources page. Now, for you to be able to see it on your Catalog, you have to wait for the pipeline to run. You can now monitor it on the Sources page to see its execution and completion. If needed, manually trigger the pipeline by clicking on the refresh icon. Once executed, your new table will appear in the Catalog section.
If you encounter any issues, reach out to us via Slack, and we’ll gladly assist you!