Notion n8n integrationAutomate Notion with n8n.
What does the Notion n8n integration give you? The Notion node exposes 14 operations across 5 resources: pages, database pages, databases, blocks and users. The Notion Trigger watches one database and fires on 2 events, a page added or updated. Enough to make Notion the front end of a process.
Verified Trustpilot reviews · AI, automation & growth agency
What can the Notion n8n integration do?
The Notion n8n integration is two nodes. The Notion node runs 14 operations across 5 resources, page, database page, database, block and user, so a workflow can create a row, read it back, update its properties, append content to a page or list the people in the workspace. The Notion Trigger watches a single database and starts the workflow on 2 events, a page added to that database or a page updated in it.
Start with the direction that fills the database. Something arrives, a form answer or an inbound message, and databasePage.create writes the row: Title for the name, Properties for the owner, the status and the date, Blocks for the content nobody wants to retype. Wire it behind Gmail and the inbox stops being the place where requests get lost.
The second direction runs outward. The Notion Trigger fires on pagedUpdatedInDatabase, databasePage.get reads the row back, and the workflow announces the change where people actually look, a Slack channel for example. Nobody has to keep a board open to notice a card moved.
Third, the recap. databasePage.getAll with Return All switched on and a condition built from Property Name or ID and Condition pulls the rows that matter into Google Sheets every Monday, or into a fresh page written by page.create. Teams that keep tickets in Jira and context in Notion usually run this one in both directions.
The node stops short in two documented places, and the same escape hatch covers both. An HTTP Request node reaches any Notion API endpoint, reusing the credential you already created through predefined authentication. Relation properties only show up in n8n when the relation is two-way: edit the property in Notion and switch on Show on for the related database, otherwise the Database Page resource cannot select or filter on it. For a one-way relation, send a PATCH to the Notion pages endpoint with the relation in a JSON body. Toggleable headings are the other gap: the node creates Heading 1, Heading 2 and Heading 3 blocks, then an HTTP Request sets is_toggleable on the block it just made.
Two more limits are worth knowing before you build. Empty or null values raise a validation error, so a field coming from an earlier node that might be missing has to be checked with an If node, or stripped out with Edit Fields (Set), before it reaches Notion. And the integration only reaches what has been shared with it, page by page, from the Connections menu. If the platform itself is still an open question, the n8n review covers that ground.
How do you connect Notion to n8n?
- 01
Create the integration in Notion
You need a Notion account with admin level access. Open the integration dashboard, select + New integration, name it
n8n integration, then open the Capabilities tab and tickRead content,Update content,Insert contentandUser information without email addresses. Save changes before you leave the tab. Those four are the capabilities the n8n credential documentation lists for Notion. - 02
Store the secret in an n8n credential
Copy the Internal Integration Token from the Secrets tab into the n8n field named Internal Integration Secret. That covers a single workspace. For unrelated workspaces, turn on public distribution, register the n8n OAuth Redirect URL as a Redirect URI, then copy the Client ID and Client Secret.
- 03
Share the pages, then add the node
Nothing runs until the integration is invited in. On each page or database you want to automate, open the triple dot menu, go to Connections, choose Connect to and pick your integration. As long as nothing is shared, every request comes back as an error. Then add the Notion node, or the Notion Trigger if Notion starts the workflow, and point its Database field at what you shared.
What the Notion Trigger reacts to
Notion Trigger is the node that starts a workflow when something happens in Notion. It listens to 2 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your Notion account.
What you see in n8n
Every event, by family
One row per object, one chip per action. The event to tick in the node is object.action; hover a chip to read exactly when it fires.
page.*1paged.*1Configuration notes
01Notion Trigger setup
The setup is short. You pick the Event, you point the trigger at one database, and that is it. How it listens matters more: the Notion Trigger polls, meaning n8n calls the Notion API on a schedule and asks what is new, rather than Notion pushing anything to n8n. Each pass sends out one item per new page found, and nothing gets registered on the Notion side.
Key parameters
- Event: 2 values to choose from,
pageAddedToDatabaseandpagedUpdatedInDatabase. No wildcard value stands for every Notion event. - Poll Times: the gap between two checks, once a minute at the fastest. The delay before a workflow starts equals that interval.
- Database: required, the Notion Database to operate on. The trigger stays scoped to it and blind to the rest of the workspace, and an empty value stops the node before it runs.
- Simplify: returns a simplified version of the response instead of the raw data. Leave it off while you build, so you see which fields actually arrive from the page.
02Page Added to Database
A new row lands in the watched database and the workflow starts, carrying that page. This is the event that turns a Notion database into an intake point: someone adds a line to a request board, a backlog or a content calendar, and the automation takes it from there.
Key parameters
- Database: the database whose new pages you want. A page created somewhere else, a child page under a regular page for instance, never fires this event.
databasePage.update on the trigger's next pass. The event value is pageAddedToDatabase, one of the 2 the trigger offers, and it is selected in the node rather than typed.03Page Updated in Database
Edits are the other half of the story. When a row in the watched database changes, the workflow runs again, which is what you want for status moves, owner changes and anything a human types into a property.
Key parameters
- Database: the same field as the other event, pointed at the database whose updates matter to you.
- Simplify: keeps the incoming item readable when the workflow only needs a couple of properties out of a wide row.
pagedUpdatedInDatabase, spelled exactly like that in the node, so copy it rather than typing it from memory.What the Notion node does, operation by operation
The Notion node exposes 14 operations across 5 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Get Child Blocks | Update | Append After | Archive | Search |
|---|---|---|---|---|---|---|---|
| Block | ✓ | ✓ | |||||
| Database | ✓ | ✓ | ✓ | ||||
| Database Page | ✓ | ✓ | ✓ | ✓ | |||
| Page | ✓ | ✓ | ✓ | ||||
| User | ✓ | ✓ |
Operations index
Block
2 operationsAppend a block
block.appendWhat you see in n8n
Notes & use cases
New content goes at the end of a page or block that already exists, which is how a workflow adds to something instead of creating another page next to it.
Key parameters
- Block: required. The Notion Block to append blocks to. Point it at whatever an earlier node returned, for example
{{ $json.id }}, the expression syntax n8n uses to read a field from the incoming item. - Blocks: the content itself, added entry by entry with Add Block. Each entry carries its own type and its own text.
Get many child blocks
block.getAllWhat you see in n8n
Notes & use cases
The body of a Notion page lives in its child blocks, and this is the operation that reads them back into the workflow.
Key parameters
- Block: required. The Notion Block to get all children from, usually the page itself.
- Return All: on, n8n chains the API pages until the whole page is read. Off, it stops at Limit, the maximum number of blocks it brings back.
- Also Fetch Nested Blocks: switch it on when the content you need sits under a toggle or inside a nested list rather than at the top level.
Database
3 operationsGet a database
database.getWhat you see in n8n
Notes & use cases
Fetches a single database from the identifier you hand it and passes the response to the next node.
Key parameters
- Database: required. The Notion Database to get.
- Simplify: returns a simplified version of the response instead of the raw data, which is plenty for a branching decision.
Get many databases
database.getAllWhat you see in n8n
Notes & use cases
There is no identifier to supply here. n8n asks Notion for databases and returns the ones the integration has been given access to.
Key parameters
- Return All: without it, the run stops at Limit, the maximum number of databases returned.
- Simplify: trims each database down to a simplified version of the response.
Search a database
database.searchWhat you see in n8n
Notes & use cases
Searches databases using text search, for the workflows that know a name but not an identifier.
Key parameters
- Search Text: the text to search for.
- Sort: sits under Options and is added with Add Sort, so the first result is the one you meant rather than the one Notion happens to return first.
- Return All and Limit: all matching databases, or a capped number of them.
- Simplify: lighter output for each match.
Database Page
4 operationsCreate a database page
databasePage.createWhat you see in n8n
Notes & use cases
Creates a row in a Notion database, properties set and body written in the same call.
Key parameters
- Database: required. The Notion Database to operate on.
- Title: the page title. It shows at the top of the page and is what Quick Find matches on.
- Properties: added one at a time with Add Property. Each entry pairs a Key Name or ID with the value field for its type: Number, Date, Status Name or ID, User Names or IDs or Checked.
- Blocks: the body content, added with Add Block.
Get a database page
databasePage.getWhat you see in n8n
Notes & use cases
Pulls one row back with its current values, which starts to matter as soon as more than one workflow writes into the same database.
Key parameters
- Database Page: required. The Notion Database Page to get.
- Simplify: a simplified version of the response instead of the raw data.
Get many database pages
databasePage.getAllWhat you see in n8n
Notes & use cases
Every report starts here: the operation queries one database and returns the rows that match.
Key parameters
- Database: required. The Notion Database to operate on.
- Filter: None, Build Manually or JSON. A manual condition, added with Add Condition, pairs a Property Name or ID with a Condition (Equals, Contains, Starts With, Is Empty), while Must Match settles between Any filter and All Filters.
- Return All: on for an export, off to cap the rows at Limit.
- Download Files: under Options, fetches a file held in one of the row's fields.
Update a database page
databasePage.updateWhat you see in n8n
Notes & use cases
Targets one existing row and writes the properties you list, which is the write-back half of most Notion workflows.
Key parameters
- Database Page: required. The Notion Database Page to update.
- Properties: each entry names a Key Name or ID and carries the matching value, from Status Name or ID to Date Start and Date End when the property holds a range.
- Ignore If Empty: skips a property whose incoming value is empty, the cleanest way around the validation error Notion returns on null or empty values.
Page
3 operationsArchive a page
page.archiveWhat you see in n8n
Notes & use cases
Archiving is as close as this node gets to a delete, since none of the 5 resources exposes one.
Key parameters
- Page: required. The Notion Page to archive.
- Simplify: keeps the confirmation short.
Create a page
page.createWhat you see in n8n
Notes & use cases
Standalone pages, the ones that live under another page rather than as a row in a database, come from this operation.
Key parameters
- Parent Page: required. The page the new one is created under.
- Title: required as well. It appears at the top of the page and is findable through Quick Find. Leave either field empty and the node stops before it calls Notion.
- Blocks: each Add Block entry sets a Type Name or ID, Heading 1 to Heading 3 for structure, plus its Text, or Checked for a to-do.
Search a page
page.searchWhat you see in n8n
Notes & use cases
This operation runs a text search over pages, with one extra the database search does not offer.
Key parameters
- Search Text: the text to search for.
- Filters and Sort: both under Options, added with Add Filter and Add Sort, so a single node can narrow the search and order what comes out of it.
- Return All and Limit: cap the result set while you test, lift the cap once the search behaves.
User
2 operationsGet a user
user.getWhat you see in n8n
Notes & use cases
This operation returns one workspace member, looked up by identifier. It is the shortest form in the whole node.
Key parameters
- User ID: required, and the only field on this operation. A plain text value, so it usually arrives from a row read a step earlier.
User information without email addresses is one of the capabilities ticked when the integration was created.Get many users
user.getAllWhat you see in n8n
Notes & use cases
Returns the workspace members in one call. No Simplify switch on this one, just the pagination pair to set.
Key parameters
- Return All: on for the full list, off to stop at Limit.
- Limit: the maximum number of users returned.
Need help automating Notion with n8n?
A person reads every message.
