What does a Notion project template actually need?
project management template for notion is a key topic in modern project management and teamwork. It needs to answer four questions without anyone opening a second tool: what are we delivering, who is doing what by when, what is at risk, and how far along are we really. Pages answer the first badly because pages cannot count.
Databases answer all four because each row carries properties, and properties can be related and aggregated. That is the design threshold: if your template is a page with headings, it is a document. If it is related databases with rollups, it is a system.
Four databases cover most delivery work without becoming an administration project:
- Projects — one row per outcome with an owner, a due date, and a status.
- Tasks — one row per unit of work, related to a project, with an assignee, an estimate, and an acceptance criterion.
- Milestones — the dates that matter to someone outside the team, related to a project and to the tasks that must finish first.
- Risks — scored, owned, and reviewed, because a risk register nobody reviews is a list of worries.
You can add Clients or Sprints later. Start with four; a fifth database on day one is how the template becomes a hobby.
What is the exact database schema?
Below is the schema property by property. Types matter: a status typed as text cannot be filtered reliably, and a number typed as text cannot be summed by a rollup.
Join Doitify Today
Move projects forward without the chaos: all your tasks, progress, and team reports in one unified workspace. Built for companies, startups, and remote teams — with a quick setup and a free trial.
Projects database
| Property | Type | Options or notes |
|---|---|---|
| Project | Title | The outcome, not the activity: “Client portal launch”, not “Portal work” |
| Status | Status | Not started, Planning, In progress, At risk, Done |
| Owner | Person | One name, not a team |
| Client | Relation | Points to a Clients database if you add one later |
| Start | Date | Include time only if time zones differ |
| Due | Date | The date someone else expects, not the internal target |
| Budget | Number | Currency format, used for scope-vs-budget checks |
| Tasks | Relation | Two-way relation to Tasks |
| Total tasks | Rollup | Tasks, count all |
| Done tasks | Rollup | Tasks, count, filter Status is Done |
| Percent complete | Formula | Done tasks divided by total tasks |
| Days remaining | Formula | Date between Due and today |
| Health | Formula | Combines percent complete and days remaining |
Tasks database
| Property | Type | Options or notes |
|---|---|---|
| Task | Title | Starts with a verb: “Draft acceptance criteria” |
| Project | Relation | Two-way relation to Projects |
| Status | Select | Backlog, Next, In progress, Blocked, Review, Done |
| Priority | Select | P0, P1, P2 |
| Assignee | Person | Empty means unassigned, which is a valid filter |
| Estimate hours | Number | Rough is fine; zero is a lie |
| Due | Date | Required for anything in Next or In progress |
| Milestone | Relation | Points to Milestones |
| Blocked by | Relation | Self-relation to Tasks; Notion creates the back-relation “Blocking” |
| Acceptance criteria | Text | The test that decides the task is done |
| Last edited | Last edited time | Used to spot stale work |
Milestones database
| Property | Type | Options or notes |
|---|---|---|
| Milestone | Title | “UAT sign-off”, “Phase 1 payment” |
| Project | Relation | Two-way relation to Projects |
| Due | Date | The contractual date |
| Status | Select | Upcoming, In progress, Met, Slipped |
| Tasks | Relation | The tasks that must finish before this date |
| Committed hours | Rollup | Sum of Estimate hours across related tasks |
| Completed hours | Rollup | Sum of Estimate hours where Status is Done |
| Progress | Formula | Completed hours divided by committed hours |
Risks database
| Property | Type | Options or notes |
|---|---|---|
| Risk | Title | Written as cause and effect: “Vendor API delay blocks checkout testing” |
| Project | Relation | Two-way relation to Projects |
| Likelihood | Number | 1 to 5 |
| Impact | Number | 1 to 5 |
| Score | Formula | Likelihood multiplied by impact |
| Owner | Person | A person who can actually act |
| Mitigation | Text | The action, not the intention |
| Status | Select | Open, Monitoring, Closed |
| Review date | Date | Forces the register into the weekly review |
That is 38 properties across four databases. It sounds like a lot until you compare it with the spreadsheet it replaces, which has the same fields and none of the relations.
How do the relations and rollups work in practice?
Relations are two-way by default: adding a project to a task makes the task appear inside the project. That single behaviour removes the most common failure mode in Notion templates, which is the manually maintained “task list” page that drifts from reality within a week.
Rollups then read across the relation. On a project row, “Total tasks” counts related tasks, and “Done tasks” counts related tasks filtered to Status equals Done. The filter is the important part; without it, both rollups return the same number and the progress bar lies.
Percent complete is a formula over those two rollups:
if(prop("Total tasks") == 0, 0,
round(prop("Done tasks") / prop("Total tasks") * 100)
)
Days remaining uses `dateBetween` and returns a number, which is important because a text formula cannot be compared numerically in the health formula:
dateBetween(prop("Due"), now(), "days")
Health then reads both values:
if(prop("Status") == "Done", "Complete",
if(prop("Percent complete") >= 80, "On track",
if(prop("Days remaining") < 7, "At risk", "Watch")
)
)
Risk scoring is deliberately simple:
prop("Likelihood") * prop("Impact")
A score of 15 or above is reviewed weekly; below 8, monthly. The exact thresholds matter less than having them written down, because a threshold turns a register into a queue.
How do you build the template in about an hour?
Build in dependency order, or you will spend the hour fixing relations.
- Create the four databases as full-page databases in one parent page. Name them exactly as above; the formulas reference property names, and renaming later breaks them.
- Add the relations from Projects to Tasks, Projects to Milestones, Projects to Risks, Tasks to Milestones, and Tasks to Tasks for the dependency field.
- Add the rollups on Projects and Milestones, with the Done filter on the completed counts.
- Add the formulas for percent complete, days remaining, health, progress, and risk score.
- Create the views: a board grouped by Status, a table sorted by Due, a calendar by Due, and a filtered “My work” view using the Person property.
- Add one real project and eight real tasks. Never test a template with lorem ipsum, because fictional data hides the missing fields.
- Write the review ritual into the project page: Monday triage of Blocked and unassigned items, Friday update of milestones and risks.
Step seven is the one people skip, and it is the reason templates decay. A Notion template is not software; it is a habit with a database attached.
What does progress look like when scope changes?
The most useful property of a computed progress number is that it reacts honestly when someone adds work.
Worked example 1: the progress drop that is not a failure
A project has 14 tasks, 9 of them done. Percent complete: 9 ÷ 14 = 64%.
The client adds three tasks, all genuinely in scope. Total tasks becomes 17, done tasks stays at 9, so percent complete falls to 9 ÷ 17 = 53%.
Nobody did anything wrong. The project did not go backwards; the denominator changed. Without a rollup, the team would have reported 64% on Friday and 64% the following Friday, and the extra week of work would have appeared as a schedule slip with no explanation.
This is also why percent complete should never be a manually typed field. Typed percentages encode optimism, and optimism is not auditable.
Worked example 2: capacity maths with a filtered view
A designer has 20 available hours this week and three tasks: 8, 8, and 4 hours. That is 20 hours exactly, which looks fine until you add the 10% of the week that disappears into meetings and the 2 hours of review on someone else’s work.
Change the estimates to 8, 8, and 6: 22 hours against 20 available, a 10% overcommitment before interruptions. At 8 productive hours a day across 2.5 days, the third task does not fit, and the honest answer is to move its due date now rather than on Thursday.
In Notion, build a table view filtered to Assignee equals the person, grouped by Status, showing Sum of Estimate hours in the group footer. It gives you the total per status, not the total per person, so the comparison with capacity is manual. That is the honest limitation of the template, and it is exactly where a dedicated workload view earns its licence fee.
Worked example 3: importing 120 tasks
A team migrating from a spreadsheet has 120 rows and 14 columns. The work breaks down as follows:
- Column mapping: 10 minutes.
- Import via CSV: 5 minutes.
- Fixing 18 rows with ambiguous date formats: 15 minutes.
- Re-creating 9 select options that did not map: 20 minutes.
- Checking that relations landed on the right project: 30 minutes.
- Total: about 80 minutes.
The import is not the expensive part. The expensive part is realising in week two that 40 of those tasks were actually milestones or recurring checks, and restructuring them. Spend twenty minutes triaging the source file before importing: delete anything closed more than 60 days ago, convert recurring items into a separate database or a repeating task, and merge duplicates.
Worked example 4: the maintenance budget
A weekly triage of 20 minutes is 17 hours a year. A monthly review of milestones and risks adds 12 hours. If the template saves one hour of status-chasing per week across a five-person team, that is 260 hours against 29 hours of maintenance. If it saves nothing, it is a 29-hour tax.
That is the honest test for any template: name the recurring work it removes. If you cannot name it, the template is decoration.
What are the trade-offs of running projects in Notion?
Notion’s advantage is that documents and data live in the same place. Meeting notes can reference a task, and a project page can hold the brief, the decisions, and the work. For small teams, that proximity reduces tool-switching more than any feature list.
The costs are equally specific.
No dependency scheduling. A “Blocked by” relation records the dependency, but moving a date does not cascade. You will discover conflicts manually, usually late.
No real capacity planning. Estimate hours can be summed, but there is no per-person capacity model, no allocation percentage, and no automatic alert when someone is 140% booked.
Notifications are weak. Notion can remind you about dates, but it is not a task manager that nags. Work assigned in Notion is often found in Notion, which means it is often found late.
Permissions are page-level, not field-level. Hiding budgets or salaries from contractors inside a shared database is awkward. You end up splitting databases, which breaks the rollups that made the template useful.
Large databases slow down. A single database with tens of thousands of rows becomes unpleasant to filter in many workspaces. Archiving completed work quarterly is not optional at that scale.
Automations are plan-dependent. Database automations exist on paid plans with monthly limits. Check your current plan’s limit before designing a workflow that depends on them.
None of these are defects; they are the shape of a flexible document tool. The defect is expecting a document tool to enforce a schedule.
When should you move to a dedicated project tool?
Move when one of four triggers fires, not when the template feels boring.
Trigger 1: a date change has to cascade. If moving a milestone requires manually re-dating forty tasks, you need dependency-aware scheduling. This is the clearest signal, and it usually arrives with the second client project.
Trigger 2: someone asks who is over capacity. If answering that question takes a spreadsheet export and twenty minutes of manual reconciliation, the template has hit its ceiling.
Trigger 3: a report is due every week. Rebuilding the same status report from filtered views is the most demoralising recurring task in project management. When it becomes a ritual, automate it or move.
Trigger 4: more than about eight people depend on the same board. Coordination overhead grows faster than headcount, and a shared page with weak notifications does not carry it.
Before trigger one, Notion is genuinely good and free for most small teams. After trigger two, the workarounds cost more than the licence.
Where does Doitify fit if you outgrow the template?
Doitify is our product, so read this section as disclosure. It covers the specific gaps this schema exposes: tasks and sub-tasks with owners and due dates, dependencies that move dates when a predecessor slips, Kanban and Gantt views over the same data, workload views that show allocation per person, and work and performance reports that replace the Friday rebuild. Project documents and meeting notes sit alongside the tasks, so the brief does not have to live in a separate tool.
The trade-off is real and worth saying plainly: Notion is better as a knowledge base, a wiki, and a place for long-form documents that many people edit. If your project work is mostly writing and reference material, stay where you are. Doitify is the better fit when the schedule, the capacity question, and the weekly report are the things that keep breaking.
A sensible middle path for a small team: keep the wiki in Notion, and move only the delivery schedule and task tracking. The template above is a good bridge because its fields map cleanly to a project tool, which is not true of a page full of headings.
Conclusion
A Notion project management template is worth building when it computes rather than displays. Four related databases, two rollups, three formulas, and one weekly review will outperform a beautiful page with a hundred checkboxes, because the numbers update themselves and the numbers are what people argue about.
Build it in dependency order, test it on one real project, and set the triggers that tell you when to move. The template is a bridge between a document and a system; knowing which side of the bridge you are on is the actual skill.
If this post on project management template for notion was helpful, you might also enjoy Free RACI Matrix Template and Capacity vs Availability in Project Management: Key Differences and How to Use Both.
Join Doitify Today
Move projects forward without the chaos: all your tasks, progress, and team reports in one unified workspace. Built for companies, startups, and remote teams — with a quick setup and a free trial.