n8n is an automation tool that provides you with extensive customization options, advanced workflow building capabilities, and self-hosting possibilities. This makes it a very interesting tool for developers and tech enthusiasts who like to experiment, build complex solutions, and create useful automations from ideas.Many companies and individuals use Notion to manage knowledge, projects, tasks, content, and many other use cases as a company/life operating system. Especially within companies, there is often the opportunity to connect Notion with other tools embedded in the company workflow to consolidate information, save time, reduce costs, and provide better visibility for all stakeholders involved.In this post, I am exploring each Notion node in n8n and showing how it is represented in the Notion API documentation [https://developers.notion.com/], so you can understand the structure and principles behind each of them and build your capacity to understand the API documentation, make effective judgments, and build useful automations.Below is the edited video transcript.OVERVIEW OF EACH NOTION NODE IN N8NTRIGGERSLet's examine the triggers first. Triggers are the initial step you can add to any n8n workflow—they're what starts everything. In the Notion app, there are two native triggers available: one for when a page is added to a database, and another for when a page is updated in a database. These are polling triggers that check the database at intervals you can set (every minute, hour, etc.).Recently, Notion released Workspace webhooks, allowing you to receive data instantly through a custom API call.When setting up a trigger, you first choose your event type (page added or updated) and select your connection. If you haven't set up a connection yet, you'll need to create one and add the integration to the specific Notion pages or databases you want to use.This connection step is crucial. I've created a detailed video [https://www.youtube.com/watch?v=OUtRxd5Ngqg] about this process that you can watch to learn more.After granting the connection access to your needed pages and databases, you can select which database you want to monitor for changes.There's also a Simplify toggle option. I typically leave this off since it only reduces the data structure of the incoming payload. I prefer having all the data available to work with.In the API documentation under database endpoints, you'll find "Query a database"—this is what we're using. These nodes query a database, and n8n handles the logic to sort pages by creation or update time, returning the most recent results.Since Notion now offers webhooks (through Automations, Buttons, and workspace-level webhooks) that send events instantly to your webhook trigger, you can set up your own webhooks using the webhook trigger.You'll receive a customizable URL. Select "Post" as both the request and HTTP method. Authentication is optional since the Notion integration typically handles this. You can then send requests to this URL from various sources: Notion database automations, database buttons, page buttons, or workspace-level webhook requests triggered by events you subscribe to.*NOTE: When you’re reading this, n8n may have already incorporated instant (webhook-based) triggers for Notion, so you can set those up natively.I've created several videos about Notion webhooks—check them out to understand exactly how this works in practice. * Webhooks in database automations & buttons [https://www.youtube.com/watch?v=L6PV8qieD9E] * Workspace webhooks [https://youtu.be/Za2AUcBCsHs] ACTIONSNow let's look at the action nodes. There are block actions, database actions, page actions, and user actions. Blocks in Notion can be anything on a page: a text block, callout, inline database, simple table, image, quote, or anything you can add via the / (slash) command.Block actionsBlock actions allow you to modify blocks on a Notion page. There are two main things you can do with blocks: 1. You can append a block, which adds a new block at the bottom of your target page. To configure this, select "append after" and choose the specific block you want to append after—usually the page itself, which you can set by ID. You can find a page's ID in its URL (see a visual here [https://developers.notion.com/reference/retrieve-a-database#:~:text=To%20fetch%20database%20rows%20rather,applicable)%20and%20the%20question%20mark.]). You can paste this ID manually for a fixed page, or if the page will change dynamically, you can map it from a previous node (like one that creates a new page). You can append multiple blocks at once with a single request. Available block types include paragraphs, headings, toggles, to-dos, bullet lists, and images. Note that this isn't a complete list of all blocks available in the Notion API [https://developers.notion.com/reference/block]. For more advanced customization, you'll need to use an HTTP node and make your own API request following the documentation. Under the Blocks API documentation, you'll find "Append Block Children [https://developers.notion.com/reference/patch-block-children]"—this is the endpoint n8n uses. Looking at the JavaScript or Shell examples, you'll see the URL, HTTP method (patch), and required parameters. The block ID is a required path parameter, which is why we need to specify it. In the request body, "children" is required (while "after" is optional). Children is a string containing the specific blocks you want to append. The blocks you want to append can be selected through n8n's visual interface. n8n creates the children array in the background through this drag-and-drop, what-you-see-is-what-you-get editor. You simply set your values manually, and n8n builds the payload. 2. The other block-based action in n8n is "Get Child Blocks," which corresponds to "Retrieve Block Children" in the API. When using this action, you pass a block ID—either for a page (to get all blocks within it) or for a parent block like a toggle (to get its child blocks). When you query the child blocks by passing the block ID, it returns all children in the result, as long as you enable the "Return All" toggle.Additionally, you can automatically fetch nested blocks without having to iterate through them multiple times. Since Notion allows nested block structures, this is particularly useful. Without this option enabled, n8n only returns the first nesting level, requiring you to loop through items to access deeper nesting levels. However, with this option turned on, all nested blocks are returned in a single response, making it much easier to process everything at once. Database actionsDatabase operations are the next type of actions available in n8n. You can retrieve a single database, get multiple databases, or search databases using text queries. When accessing a single database, you'll receive its complete structure, including all properties, their IDs, and property types.Using property IDs in your integration helps maintain synchronization with database changes. Your integration remains stable even when properties are renamed in Notion.Like other n8n nodes, this functions as an input variable—you can either select the database manually or map it from previous nodes.In the Notion documentation under databases, you'll find all available database endpoints. When retrieving a database, you pass the database ID and receive the response.When working with multiple databases, you can specify how many to retrieve. The "Return All" option fetches every database your integration can access in your Notion workspace. You can also set a limit to return a specific number of databases.For database searches, you can use keywords to find specific databases through the search by title endpoint.Additional parameters are available, such as sorting results by last edited time in ascending or descending order.The database page resources in n8n offer several operations:Creating a page in a database is straightforward: select your database, set the title, configure properties, and append page content—all in a single request.You can set icons too, but first select your database to see the available properties.When choosing a database, you can use either a fixed value or map it as an expression from previous nodes. Property values can be set as fixed entries or expressions.When using the HTTP node, this matches the create page endpoint. The request body needs the database ID, with optional icon settings. Properties are required, and the title property is mandatory in Notion.To retrieve a database page, specify its ID or URL in the n8n node. This returns all page properties for use in subsequent nodes.Retrieving multiple pages works by querying a database. Find this under "Query a database" in the API documentation. You can select the database, set limits, and create filters manually or through JSON.These filters support nested "or" and "and" rules. Specify the property name, type, and desired value to get your results. You can also sort by specific properties in either direction.Updating a database page works similarly to creation, but focuses on modifying properties. Choose the property to modify and its new value to update the database page. This corresponds to the update page properties endpoint.Page actionsYou can perform similar operations with the page resource in n8n. You can create pages that aren't part of a database, which will only contain blocks rather than properties.When creating a page, you can append blocks in a single request or create it with an empty body (though a title is required). You can also set options for icons and icon types during updates.If you archive a page, it moves to the Notion trash (found in the bottom left corner of your sidebar). Pages remain in the trash for 30 days, allowing you to recover them if needed.You can also search pages using the search endpoint. By specifying search text in the "search by title" function, you can search through all available pages.User actionsFinally, you can work with users in the Notion API. When querying users, you can access both members (paid users in your workspace) and guests (free users) — but with some limitations.When you pass a specific user ID, you can retrieve that user's data including their email, name, and user type (person or bot).When retrieving multiple users at once, the API will only return paid members from your workspace, not guests.This is important to note if you're working with guests. For example, if you want to automatically assign guests to tasks in your n8n workflow, you'll need their user IDs beforehand. You can either store these IDs in a separate table for querying or hard-code them into your workflow.Remember: you can only query guest information if you have their specific user ID.The users endpoint in the API documentation shows how to list all users. This corresponds to the "Get Many" operation in n8n, while retrieving a single user matches the "Get" node.To conclude our overview of the Notion nodes in n8n, we've covered database actions, database page actions, page actions, and user actions. You'll notice that some nodes are missing when comparing with the API endpoints, particularly for blocks.For example, to update a block, you'll need to use an HTTP node. Here's how it works: First, create an HTTP request node. Then, set the method according to the documentation—in this case, "patch." Copy the URL from the documentation and replace any variables in curly brackets with your actual values. For the Block ID, you can map it from a previous node using an expression.For authentication with the Notion API, n8n makes it simple. Just select a predefined credential, choose the Notion API, and select your desired connection.After setting up authentication, follow the documentation specifications for required and optional parameters. You can add query parameters with their corresponding keys and values. For the request body, Notion uses JSON format. You can either input raw JSON or build it manually by adding fields one by one with their names and values.For instance, to create an object, set the value to "block" and continue adding parameters as needed. You'll need to understand the required request body structure and break it down into the necessary parameters to construct the JSON.Test your configuration to see if it works. If it doesn't, check your setup, make adjustments, and test again until you achieve your desired result.The HTTP request node in n8n offers this flexibility while handling authentication for you. Note that some endpoints, like comments, aren't available as native n8n nodes—you'll need to use the HTTP node for these as well.