Building Bidirectional Project Tracking in Notion with Relations and Rollups
Create a relational Notion system where tasks automatically roll up into project progress metrics using Relations, Rollups, and Formulas — no external tools needed.
28 Nov 2025, 17:41 UTC

Most Notion project setups fail because data exists in isolated silos. When tasks live in one database and projects in another, you lose the ability to automatically calculate progress or see dependencies instantly. To solve this, you must use Relations and Rollups to create a relational system where updating a task instantly updates the project-level metrics.
Prerequisites
- A Notion workspace with permissions to create and edit databases.
- Basic familiarity with database properties (Select, Date, and Formula).
- A defined list of projects and associated tasks.
Step 1: Define the Database Schemas
First, create two separate table databases. Do not worry about linking them yet; focus on the core properties for each.
Projects Database
Create a database with the following properties:
- Name (Title): The name of the project.
- Status (Select): Options like Planning, Active, On Hold, Done.
- Target Date (Date): The project deadline.
Tasks Database
Create a second database with these properties:
- Task Name (Title): The action item.
- Status (Select): Options like To Do, In Progress, Review, Done.
- Due Date (Date): Individual task deadline.
Step 2: Establish the Bidirectional Relation
This step connects the two databases so they can "talk" to each other.
- In the Tasks database, add a new property.
- Select Relation as the type.
- Search for and select your previously created Projects database.
- Set the limit to 1 page per (since a task usually belongs to only one project).
- Toggle the Show on Projects switch to "On". This is critical; it ensures a matching column appears automatically in your Projects database.
Now, when you click the relation in a task, you can select a project, and a new "Tasks" column will instantly appear in the Projects table.
Step 3: Aggregate Data with Rollups
Now that the databases are linked, we use Rollups to pull data from Tasks up into the Projects summary. Go to your Projects database and add the following properties:
Total Task Count
- Type: Rollup
- Relation: Tasks
- Property: Name
- Calculate: Count
Completed Task Count
- Type: Rollup
- Relation: Tasks
- Property: Status
- Calculate: Count
- Filter: Add a filter where Status is "Done"
Step 4: Calculate Progress via Formula
To get a visual completion rate, we need a formula that divides the rollup data. Add a Formula property to the Projects database and use the following code:
if(prop("Total Task Count") == 0, 0, prop("Completed Task Count") / prop("Total Task Count"))
Note: After entering the formula, click the property header to format the number as Percent. The if statement prevents a "division by zero" error if a project has no tasks yet.
Verification and Testing
To ensure your system is functioning correctly, perform these tests:
- Create a test project and add 3 tasks.
- Set 2 of those tasks to "Done".
- Verify that the Progress % in the Projects database shows approximately 67%.
- Add a 4th task; verify the "Total Task Count" increments and Progress % recalculates.
- Filter Projects view by Progress % < 100% to see only incomplete projects.
- Duplicate the Projects database, check that relations in Tasks still point to original (not duplicate) and update if needed.
Recovery Options
- If rollups show stale values, use 'Refresh' on the database view or toggle the relation property off/on.
- If formula errors, wrap in if/else for empty values.
- If relation breaks after database duplication, recreate the relation pointing to the new database IDs.
- For mass updates, use the 'Edit property' bulk action on filtered views.
Limitations and Cautions
- Rollups compute on the Notion server and may lag a few seconds on large databases (>5k rows).
- Relation fields cannot be converted to other types; deleting a relation removes all links irreversibly.
- Formula rollups referencing other rollups can create circular dependencies if not careful.
- Mobile app may not display rollup formulas identically to desktop; verify on target platforms.
- Workspace guests with 'Can edit' can modify relation links but not database schema.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.