Reference · Tools
Notion Trigger
Starts workflow when pages are added to or updated in a Notion database
The Notion Trigger watches a database and starts a workflow when pages are added or updated, polling at your chosen interval. A typical build is kicking off a review process whenever a new entry appears in a content-calendar database.
- Node type
- Polling trigger
- Parameters
- 5
- Outputs
- Output
- Credentials
- Notion API
Notion Trigger
Polls a Notion database for new or updated pages.
Overview
Polls a Notion database for new or updated pages. Supports two events: page added to database and page updated in database. Uses the Notion API with cursor-based pagination and minute-level timestamp deduplication. Returns simplified or raw Notion page data including all database properties.
Category: Productivity
Tool Name: notion_trigger
Version: 1
Appearance: Icon: si-notion | Color: #000000
Node Type
Trigger — polling (checks for new data on a schedule)
Input / Output
| Direction | Port(s) |
|---|---|
| Input | None (trigger node) |
| Output | Output |
Credentials
This tool requires Notion API credentials. See the Credentials Guide for setup instructions.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Event | options | Yes | pageAddedToDatabase | Which event to listen for. |
Options: pageAddedToDatabase (Page Added to Database), pagedUpdatedInDatabase (Page Updated in Database) | ||||
| Database ID | string | Yes | — | The ID of the Notion database to monitor. You can paste the full database URL or just the UUID. (shown when Event is pageAddedToDatabase or pagedUpdatedInDatabase) |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. (shown when Event is pageAddedToDatabase or pagedUpdatedInDatabase) |
| Poll Interval | number | No | 1 | How often to check for new data. |
| Poll Interval Unit | options | No | minutes | Unit for the poll interval. |
Options: seconds, minutes, hours |
Output Data
Each new or changed page becomes one output item, carrying _trigger (always notion_polling) and _timestamp (when the poll ran).
With Simplify on (the default), Notion’s nested property format is flattened: the page keeps id, name (its title) and url, and every database property is added as property_<name> with the name lower-cased and spaces replaced by underscores:
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Onboard Acme Corp",
"url": "https://www.notion.so/Onboard-Acme-Corp-a1b2c3d4e5f67890abcdef1234567890",
"property_status": "In progress",
"property_owner": ["jane@example.com"],
"property_due_date": { "start": "2026-08-20", "end": null },
"_trigger": "notion_polling",
"_timestamp": "2026-08-15T09:00:00.000Z"
}
With Simplify off, the raw Notion page object is emitted instead — object, id, created_time, last_edited_time, parent, url and the full properties object in Notion’s own nested format.
Reference page data downstream by expression, e.g. {{ $json.property_status }}.
Usage Examples
- Trigger a workflow when a new page is added to a Notion database
- Start a workflow when a page is updated in a Notion database
- Monitor a Notion project tracker for new tasks
- Watch a Notion CRM database for updated contacts
Example Configuration
Watch a database for newly added pages:
{
"type": "notion_trigger",
"parameters": {
"event": "pageAddedToDatabase",
"databaseId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"pollInterval": 5,
"pollIntervalUnit": "minutes"
}
}
Watch for edits, pasting the database URL instead of the ID:
{
"type": "notion_trigger",
"parameters": {
"event": "pagedUpdatedInDatabase",
"databaseId": "https://www.notion.so/myworkspace/a1b2c3d4e5f67890abcdef1234567890",
"simple": true,
"pollInterval": 2,
"pollIntervalUnit": "minutes"
}
}
Return the raw Notion page object:
{
"type": "notion_trigger",
"parameters": {
"event": "pageAddedToDatabase",
"databaseId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"simple": false,
"pollInterval": 30,
"pollIntervalUnit": "seconds"
}
}
Trigger Behavior
- Activation: Polling starts when the workflow is activated. There is no poll at the moment of activation — the first check runs one full interval later.
- Schedule: The trigger polls for new data based on the configured polling interval.
- State: Maintains internal state (the time of the last check plus the page IDs seen at that boundary) so each poll returns only pages changed since then.
- First Run: The first poll records the current position and returns no items, so activating the workflow never replays the database.
- Testing: Running the node from the editor emits a single sample page so you can build the rest of the workflow; real pages arrive only while the workflow is activated.
Tips
Connect your Notion integration, select a database, choose whether to watch for new pages or updated pages, and set the poll interval. The trigger will check the database on each interval and output any new or changed pages.
Notes
- The Notion integration must be shared with the database you want to watch, or the API returns nothing.
- Notion reports timestamps to the minute only, so the trigger keeps the IDs of pages at the boundary minute and filters them out on the next poll to avoid duplicates. Polling faster than once a minute does not increase resolution.
Frequently asked questions
Why is the trigger returning nothing at all?
The Notion integration must be shared with the database you want to watch. Without that share, the API returns nothing and the trigger looks broken while actually being denied access.
Can it miss or duplicate pages at the boundary?
Notion reports timestamps to the minute only, so the trigger keeps the IDs of pages at the boundary minute and filters them out on the next poll to avoid re-emitting them.
Can I watch for updates as well as new pages?
Yes — choose whether to watch for new pages or updated pages when configuring the trigger.
Which credential does it need?
A Notion API credential, and the integration behind it must have access to the database.
Build with the Notion Trigger node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Notion API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.