Notion Node
The Notion node provides integration with your Notion workspace in SkyStudio workflows. You can read pages and database records, create new pages, add content to existing pages, and run AI-powered queries.
Connection Setup and Management
To use the Notion node, you must create an Internal Integration in Notion and add the generated token to SkyStudio. You must also share the pages and databases you want the integration to access with that integration.
Getting a Notion Integration Token
1. Create an Integration
- Go to notion.so/my-integrations.
- Click the + New integration button.
- Give the integration a name, such as
SkyStudio. - Select the workspace it will connect to.
- Click the Submit button.
2. Copy the Token
After the integration is created, click Show in the Internal Integration Token field and copy the token that starts with secret_.
Note: Store this token in a secure place. Even if you lose it, you can always view it again from notion.so/my-integrations.
3. Share Pages and Databases with the Integration
Creating an integration in Notion is not enough by itself. Each page or database you want to access must also be shared with the integration:
- Open the page or database you want to access in Notion.
- Click the ... three-dot menu in the upper-right corner.
- Select Connections or Add connections.
- Find the integration you created, such as
SkyStudio, from the list and click it.
Tip: When you grant access to a parent page, all child pages and databases under that page also become accessible automatically.
Adding the Connection to SkyStudio
- Go to Application Connections from the left menu in SkyStudio.
- Click the Add New Connection button.
- Select Notion as the provider.
- Enter a descriptive name in the Connection Name field, such as
Prod Notion. - Paste the
secret_…token you copied into the Integration Token field. - Click the Save button.
Assigning the Connection to the Node
After adding the Notion node to the canvas, select the saved connection from the Application Connections dropdown in the right panel.
Operations
The Notion node provides 8 operations:
| Operation | Category | Description |
|---|---|---|
| Query Database | Featured | Queries a Notion database with filters and sorting |
| Notion AI Assistant | Featured | Queries Notion content using natural language |
| List Pages | Standard | Lists pages in the workspace |
| Get Page | Standard | Returns metadata for a specific page |
| Get Page Content | Standard | Returns the content of a specific page, including block content |
| List Databases | Standard | Lists all databases in the workspace |
| Create Page | Standard | Creates a new Notion page |
| Append Content | Standard | Adds content to an existing page |
Query Database
Queries records in a Notion database using filter and sorting options. It is used in database-based applications such as CRM, task tracking, or content calendars.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Notion connection to use |
| Database ID | Yes | ID of the database to query |
| Filter Property | No | Property name to filter by, such as Status or Assigned To |
| Filter Value | No | Filter value, such as Done or Ahmet |
| Sort By Property | No | Property name to use for sorting results |
| Limit | No | Maximum number of records to return |
How to Find the Database ID
Open the database in Notion. The URL structure is:
notion.so/{workspace}/{database-id}?v=...
The Database ID is the 32-character section before ?v= in the URL.
Alternatively, you can use the ID from the link copied through ... → Copy link on the database page.
Example Output
{
"results": [
{
"id": "page-id-123",
"properties": {
"Name": {
"title": [
{
"plain_text": "Project Meeting"
}
]
},
"Status": {
"select": {
"name": "In Progress"
}
},
"Due Date": {
"date": {
"start": "2024-06-01"
}
}
}
}
]
}
Notion AI Assistant
Queries Notion content using natural language. It is ideal for accessing page and database analysis without writing complex filters.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Notion connection to use |
| Query | Yes | Notion query written in natural language |
| System Prompt | No | System instruction that customizes the AI assistant’s behavior |
Usage Example
Query: "What tasks need to be completed this week?"
System Prompt: "Consider only records in the 'Tasks' database. List the results in Turkish and by priority."
List Pages
Lists pages in the Notion workspace. It is used to discover Page IDs and create a page inventory.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Notion connection to use |
| Limit | No | Maximum number of pages to return |
Example Output
{
"results": [
{
"id": "abc123",
"properties": {
"title": [
{
"plain_text": "Product Roadmap"
}
]
},
"url": "https://notion.so/abc123"
}
]
}
Get Page
Returns metadata for a specific Notion page, such as title, creation date, last edited date, and properties. It does not retrieve the block content of the page. Use the Get Page Content operation for block content.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Notion connection to use |
| Page ID | Yes | ID of the page whose information will be retrieved |
Get Page Content
Returns the block content of a specific Notion page, such as text, headings, lists, and tables. It is used in page reading and summarization scenarios.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Notion connection to use |
| Page ID | Yes | ID of the page whose content will be retrieved |
Example Output
{
"results": [
{
"type": "heading_1",
"heading_1": {
"rich_text": [
{
"plain_text": "Project Summary"
}
]
}
},
{
"type": "paragraph",
"paragraph": {
"rich_text": [
{
"plain_text": "The purpose of this project is..."
}
]
}
}
]
}
List Databases
Lists all Notion databases in the workspace. It is used to discover Database IDs.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Notion connection to use |
| Limit | No | Maximum number of databases to return |
Create Page
Creates a new Notion page under the specified parent page or database.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Notion connection to use |
| Parent ID | Yes | ID of the parent page or database where the new page will be created |
| Parent Type | Yes | Type of the parent item: page or database |
| Title | No | Title of the page to create |
| Content | No | Initial content of the page, as plain text |
Example Output
{
"id": "new-page-id-456",
"url": "https://notion.so/new-page-id-456",
"properties": {
"title": [
{
"plain_text": "Weekly Report - June 2024"
}
]
}
}
Append Content
Adds new content, or blocks, to the end of an existing Notion page. It is used in page journaling and automatic content accumulation workflows.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Connection | Yes | The Notion connection to use |
| Page ID | Yes | ID of the page where content will be added |
| Content | Yes | Text content to add to the page |
Quick Start Examples
Example 1: Task Tracking Report
A workflow that queries open tasks in a Notion database and sends a summary to Slack:
Schedule (Every morning at 09:00) → Query Database → LLM (summarize) → Slack Message
Query Database settings:
- Database ID:
{task-database-id} - Filter Property:
Status - Filter Value:
In Progress - Sort By Property:
Due Date - Limit:
20
Example 2: Meeting Notes Automation
A workflow that automatically saves a meeting summary received through a webhook to Notion:
Webhook → LLM (format note) → Create Page
Create Page settings:
- Parent ID:
{meeting-notes-page-id} - Parent Type:
page - Title:
{{date}} - Meeting Note - Content:
{{llm.output}}
Example 3: Content Search with Notion AI
A chatbot that answers user questions using the Notion knowledge base:
Text Input → Notion AI Assistant → Text Output
Notion AI Assistant settings:
- Query:
{{input.text}} - System Prompt:
"You are the company’s knowledge base assistant. Answer only using documents in Notion. Produce short answers in Turkish."
Example 4: Page Content Summarization
A workflow that reads the content of a Notion page and sends it by email:
Schedule (Weekly) → List Pages → Get Page Content → LLM (summarize) → Send Email
Get Page Content settings:
- Page ID:
{{pages.results[0].id}}
Common Errors
| Error | Possible Cause | Solution |
|---|---|---|
401 Unauthorized | Token is invalid or entered incorrectly | Check the Notion Integration Token and make sure it starts with secret_ |
404 Not Found | Page or database was not found, or it was not shared with the integration | Share the relevant page or database with the integration in Notion using Connections → SkyStudio |
403 Forbidden | The integration does not have access to this content | You may have forgotten to share the page with the integration; open the related page in Notion and go to Connections |
Empty results | No records match the filter condition | Check that Filter Property and Filter Value match the field names in the database exactly |
validation_error | Database ID or Page ID format is incorrect | Verify that the ID is in 32-character UUID format, including hyphens |
Notes
- The Notion Integration Token (
secret_…) does not expire. However, if the integration is deleted or the token is renewed, you must update the SkyStudio connection. - The List Pages and List Databases operations return only content shared with the integration. Unshared pages are not listed.
- Get Page retrieves page metadata, such as title, date, and properties, while Get Page Content retrieves block content. These are different operations and do not replace each other.
- In the Create Page operation, if Parent Type is selected as
database, the created page is added to the database as a row. Ifpageis selected, it is added as a child page. - For large page contents with many blocks, Get Page Content may take time. Consider shortening or filtering the content before sending it to an LLM node.