Skip to main content
The Notion Toolkit lets agents and workflows interact with Notion pages and databases. It supports searching content, querying and updating database records, reading and appending page content, and creating new pages.

Prerequisites

  • A Notion account (free plan is sufficient)
  • A Notion workspace (every account has one by default)

Creating a Connection

  1. In the workflow, add a Notion toolkit step.
  2. Click Connect with Notion.
  3. Authorize the connection on the Notion consent screen and select which pages and databases to grant access to.
The toolkit can only access pages and databases that have been explicitly shared with the connection. To share content, open the page or database in Notion, click ···Connections, and add your integration. Content in the same workspace that has not been shared is not visible.

Available Tools


Searches across all shared pages and databases, returning matches by title. Key inputs: Referencing results in downstream steps:
  • First result’s ID: {{ step.output.results[0].id }}
Example use case: Before creating a new client record, search by the client’s name. If count is greater than 0, the client already exists — use the existing record’s id instead of creating a duplicate.

Database Actions

List Databases

Returns all databases the connection can access, with their names and IDs. Key inputs: When to use it: Run this once in a test workflow to discover your database IDs. Copy the id of the database you want and hard-code it in subsequent steps.

Get Database

Returns the schema of a specific database — its column names and property types. Key inputs: When to use it: Run this before writing Create Page or Update Page steps. It tells you the exact property names (case-sensitive) and their types, which determines the JSON format to use in the Properties field.
Get Database shows property types and names but not the available option values for Select fields. To see valid select options, open the database in Notion directly.

Query Database

Fetches records from a database with optional filtering and sorting. Key inputs: Filter examples: Single filter — records where Status equals “In Progress”:
Filter by checkbox:
Filter by date — records with Due Date before a specific date:
Combined filter with AND logic:
Sort — newest first:
Referencing results in downstream steps:
  • First result’s ID: {{ step.output.results[0].id }}
  • First result’s Status: {{ step.output.results[0].properties.Status }}
  • First result’s title: {{ step.output.results[0].title }}

Page Actions

Get Page

Retrieves the property values and metadata of a specific page or database record. Key inputs: Referencing values in downstream steps:
  • Status: {{ step.output.page.properties.Status }}
  • Title: {{ step.output.page.title }}
  • Page ID: {{ step.output.page.id }}
Example use case: A trigger fires with a page ID. Use Get Page to read the record’s current Status. If Status is “Pending”, continue the workflow — otherwise stop.

Create Page

Creates a new page — either as a record inside a database (new row) or as a child page under another page. Key inputs: Properties format by field type:
Full example — creating a task row: Title: Follow up with client Properties:
The returned id can be passed to downstream steps to update or link to the new page.

Update Page

Updates the properties of an existing page, or archives it. Key inputs: Example — marking a task as done:
Example — archiving a record: Leave Properties empty and set Archived to true. The record disappears from the database view but can be restored from Notion’s trash. Typical pattern:
  1. Use Query Database to find the record and get its id
  2. Feed that id into Update Page to change its fields

Content Actions

Get Page Content

Retrieves the content blocks inside a Notion page — paragraphs, headings, bullet lists, etc. This is separate from the page’s properties (database fields). Use this to read the body text of a document. Key inputs: Referencing values in downstream steps:
  • First block’s text: {{ step.output.blocks[0].text }}
  • All blocks: {{ step.output.blocks }}
Example use case: Get the page content, pass all text blocks to an AI step to generate a summary, then send that summary via email or Telegram.

Append Content

Adds new content blocks to the bottom of an existing Notion page. Key inputs: Example — appending a heading and a paragraph:
Example — appending a bullet list item:
Example use case: A workflow runs every morning, processes data, and appends a one-line log entry to a “Daily Log” page — building a running audit trail without creating a new page each time.

Troubleshooting