When you manage projects, departments, or nested tasks in Notion, a flat list of pages quickly becomes unmanageable. You need a structured parent-child page tree that shows how items relate to each other at a glance. Notion provides two database property types—Relation and Rollup—that let you create this hierarchy without manually linking pages. This article explains how to set up a relation that connects parent records to their children and use rollups to display summary data like child count or status. You will learn the exact steps to build a functional parent-child tree in your Notion workspace.
Key Takeaways: Build a Parent-Child Page Tree in Notion
- Relation property in the child database: Links each child record to exactly one parent record in the parent database.
- Rollup property in the parent database: Aggregates child data such as total count, status summary, or date range.
- Linked database view filtered by relation: Displays only the children of the currently selected parent page for a clean tree view.
What a Notion Relation Hierarchy Does and Why You Need It
A relation hierarchy in Notion connects two databases so that records in one database (the child) can point to a record in another database (the parent). This creates a structured tree where each parent can have multiple children, but each child belongs to only one parent. The feature is built on two database properties: Relation and Rollup.
The Relation property stores a link from the child record to the parent record. The Rollup property, placed in the parent database, can then aggregate values from all linked children—for example, showing the number of tasks in a project or the earliest due date among subtasks.
Before building the hierarchy, ensure you have two separate databases created: one for parent items (for example, Projects) and one for child items (for example, Tasks). Both databases should already contain the records you want to connect. You also need edit permissions on both databases.
Steps to Create the Parent-Child Relation and Rollup
Follow these steps to set up a relation between a parent database and a child database, then add a rollup to show child count.
- Open the child database and add a Relation property
Go to the child database (for example, Tasks). Click the + icon in the last column header to add a new property. Select Relation from the property type list. In the dialog that appears, choose the parent database (for example, Projects) as the related database. Name the property something like “Parent Project.” Click Create. - Link child records to their parent
In each child record, click the cell under the new Relation property. A menu appears showing all records from the parent database. Select the correct parent for that child. Repeat this for every child record that should be connected to a parent. - Open the parent database and verify the inverse relation
Go to the parent database. You will see that the Relation property was automatically created on the parent side as well (often named “Tasks” if your child database is called Tasks). This inverse relation lists all children linked to each parent. Click a parent record to see its children listed in the relation cell. - Add a Rollup property to the parent database
In the parent database, click the + icon in the last column header. Select Rollup from the property type list. Name the property “Child Count.” Configure the Rollup: set the Relation to the inverse relation (for example, Tasks), set the Property to any property in the child database (for example, Name), and set the Calculate option to Count All. Click Save. - Create a linked database view filtered by the relation
On the parent page, type /linked database and select the child database. A new view appears showing all child records. Click the filter icon in the view header. Add a filter: choose the Relation property (for example, Parent Project) and set it to contains the current page name. This shows only the children that belong to the parent page you are currently viewing.
After completing these steps, each parent page displays a filtered list of its children. The Rollup property shows the number of children per parent at a glance.
Common Mistakes When Building a Relation Hierarchy
The relation shows no records after linking
If the relation cell appears empty after you select a parent, the child record may not have been saved. Click outside the cell or press Escape to confirm the selection. Also verify that the child database actually contains the parent record in its relation column.
Rollup returns incorrect values like 0 or NaN
A Rollup that shows 0 or NaN usually means the Relation property was not configured correctly. Open the Rollup property settings and confirm that the Relation field points to the correct inverse relation. Also check that the child records actually have a parent selected—orphaned children will not be counted.
Linked database view shows all children instead of only the current parent’s children
The filter must use the exact name of the Relation property and the condition “contains” with the current page name. If the filter uses “is” instead of “contains,” it may not match. Also ensure the filter is set to the correct relation property name—typos cause the filter to be ignored.
The inverse relation was not created automatically
Notion creates the inverse relation only when you first add the Relation property to the child database. If you deleted the inverse relation accidentally, delete the Relation property from the child database and re-add it. The inverse relation will appear again.
Notion Relation Hierarchy vs Manual Links: Key Differences
| Item | Relation Property (Database) | Manual Page Link (Inline) |
|---|---|---|
| How links are stored | As a database property cell | As inline text or mention on a page |
| Rollup support | Yes, you can aggregate child data | No rollup possible |
| Filtering by parent | Yes, using a filtered linked database view | No built-in filter |
| Bulk editing | Yes, you can change parent for multiple children at once | No, each link must be edited individually |
| Scalability | Works with hundreds of records | Becomes messy with more than 20 links |
Conclusion
You can now build a parent-child page tree in Notion using the Relation and Rollup properties. Start by linking child records to their parent in the child database, then add a Rollup in the parent database to count children or summarize their data. For a dynamic tree view, create a linked database view filtered by the relation on each parent page. As an advanced tip, use a second Rollup with the Calculate option set to Show Original to display the names of all children directly in the parent database table.