---
title: 'Using Notion to manage product development: Part 2 (A step-by-step how-to
  guide)'
teaser: 'An in-depth guide looking at _how_ to set Notion up, exploring databases,
  properties, rollups, formulas and linked databases to level up your Notion-fu.

  '
tags: product management,product roadmap,process,productivity,tools
author: Jared Turner
published_on: 2022-08-01
---

In [Part 1], we looked at the power of Notion and how we might structure it to create a useful product management tool. In Part 2, we’ll dig into _how_ to set it up, exploring databases, properties, rollups, formulas and linked databases to level up your Notion-fu. This is an in-depth step-by-step guide.

We’ll also share a Notion template of what we’ve put together as a quick-start shortcut.

## Getting started

Let’s create our first database and explore what’s possible. 

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/cboC8NerRJ2buWj8dTSF_notion-create-tasks-database.gif" alt="Creating a tasks database in Notion">
</figure>

- Add a page
- Title: Tasks
- Select Database: Table
- Select data source > New database
- Create some tasks

### Adding a Status

Every database starts us off with a Title (Name) column, but the rest is up to us! As we’re focusing on tasks we need a way to represent what the status of a task is. That is, whether a task is Next Up, In Progress, Shipped (or whatever naming you prefer). To do this we add a new [property]:

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/bUnqWIuJT2ymLklGQrDn_notion-tasks-status.gif" alt="Adding a status property to a database in Notion">
</figure>

- First, there’s a Tag property added by default which we can delete (Right-click > Delete)
- Add Property
- Name: Status
- Type: Select (represents stages so perfect for this eg. To do > Doing > Done)
- Add an option (Discussion, Next Up, In Progress, Code Review, Shipped)
- Apply a Status to the example tasks

### Creating a Board view

Already we’re at the point where we can view this data as a useful Kanban board.

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/oqVNB77QAm7Axi6QzkpO_notion-tasks-create-board-view.gif" alt="Creating a Kanban board view of data in Notion">
</figure>

- Add view
- Type: Board
- Group by: Status
- Done
- You may need to drag the Status columns to get the order you want

### Assigning a person

Next, we want to be able to assign a person to a task.

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/m8wc9YmReObdrdxuasrz_notion-tasks-assign-person.gif" alt="Adding the ability to assign a person to a task in Notion">
</figure>

- Switch back to the Table view
- Add Property
- Name: Assigned
- Type: Person

When we switch back to the Board view we can no longer see the assigned person. If you open a card you can see the assignment but we want to show the person on each card too.

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/NJmJmFBtR82GDSczzjQI_notion-tasks-board-person.gif" alt="Showing which person is assigned to a task in the Kanboard board view of Notion">
</figure>

- View options
- Properties
- Toggle the ‘eye’ icon next to Assigned (or simply drag it up into the ‘Shown in board’ section)

We now have a working Kanban board and can start being productive! But what happens when we need another Kanban board for a different project? We could simply create another tasks database, but any tweaks we made we would need to remember to apply to each. Is there a better way?

## Levelling up with Linked databases

Notion has a powerful concept of [linked databases] that allow us to create a synced ‘copy’ of the data and then filter it how we want. This means if we associate each task to a project we can create a tasks board for each without needing to recreate every setting.

### Creating a projects database

We want to associate every task to a project but to do this we first need to create a new Projects database:

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/Pug68kZLThuhL9ts1aEn_notion-create-projects-database.gif" alt="Creating a new projects database in Notion">
</figure>

- Add a page
- Title: Projects
- Select Database: Table
- Select data source > New database
- Create some projects

### Relate projects to tasks

Now that we have a projects database we can create a relation so that each task can be associated to a project.

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/B8EhgjlxRFa3jsF4zpQg_notion-relate-tasks-to-projects.gif" alt="Relating a project to a task in a Notion database">
</figure>

- Visit Tasks database
- Options (3 dots)
- Properties
- + New Property
- Name: Project
- Type: Relation
- Related to: Projects (database)
- Associate tasks to projects

<aside class="info">
⭐ You can create properties from any view. Here we created the property directly from the Board view. If you’re feeling lost or confused, sometimes it’s easier to jump back to the Table view and make changes from there.<br><br>

Plus, you can customise each view however you like. At the end we remove the project from showing on the cards in the <i>Board</i> view.
</aside>

### Create a tasks database per project

Here’s where we can use linked databases to easily create a task board per project.

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/1veQTRcbTP2urE2zAWqg_notion-linked-tasks.gif" alt="Create a linked tasks database filtered by project in Notion">
</figure>

- New page
- Title: Tasks: Project A
- Database: Board
- Select data source: Tasks
- Copy an existing view: Board
- Filter > Project: Project A

<aside class="info">
⭐ The power here comes with the filtering. We filter this linked database to just show tasks for Project A. Which means we no longer see any tasks for unrelated projects. Plus, whenever we create a new task from this board, it will automatically be assigned to Project A (no manual tagging needed!).
</aside>

## Epics and tracking higher level progress

We have tasks and projects, but it’s also useful to have a way to group tasks into themes, often called epics. So projects have many epics and epics have many tasks. Tracking the progress of epics gives a higher-level overview of the status of a project and it’s particularly useful for higher-level stakeholders (where tasks can feel overwhelming). 

### Creating an epics database

This should be familiar now!

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/qdk1H3oQPurIvoiuJhqh_notion-create-epics-database.gif" alt="Creat an epics database in Notion">
</figure>

- Add a page
- Title: Epics
- Database: Table
- Select data source: New database
- Add some epics & remove unnecessary default property

### Relate projects to epics

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/7CCKdRYNTsCdhkWllrpj_notion-relate-epics-to-projects.gif" alt="">
</figure>

- Add property
- Name: Project
- Type: Relation
- Related to: Projects (database)
- Associate epics to projects

### Relate epics to tasks

- Add property
- Title: Tasks
- Type: Relation
- Related to: Tasks (database)
- Show on Tasks: Enabled
- Associate tasks to epics

<aside class="info">
⭐ We enable <i>Show on Tasks</i> because we want to ensure we can see the epics when we’re looking at the tasks view. And we want to have access to all the tasks from the epics database because it will allow us to visualise progress which we’ll cover below.
</aside>

### Show epics on tasks’ board

A quick divergence to ensure we can see which task is related to each epic when viewing the task’s Kanban board:

- Visit Tasks Board
- Options (3 dots)
- Properties
- Drag `Epic` up into `Show in board`

Now this is starting to look like a fully featured Kanban board!

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/PAtZw72FS5mTeiuxui3b_tasks-board.png" alt="Notion tasks database as Kanban board">
</figure>

### Showing progress

We wanted to have a visual indicator of progress, with the primary intention being to allow higher-level stakeholders to have a quick at-a-glance look and understand where we are at.

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/97eHgrWmT0a7iZyZXFQg_epics-progress.png" alt="Notion database showing progress bar">
</figure>

We settled on defining progress as the percentage of tasks completed. 

<aside class="info">
⭐ Going further: we like to create a separate Shipped Column for each week, so ideally this calculation would still work. And we don’t necessarily want to count tasks in Discussion as they’re not truly in scope and may not be done.
</aside>

To do this we need three data points: count of incomplete tasks, count of shipped tasks and a count of total tasks. We’ll use Notion’s Formulas and Rollups to build the data we need. But before we can count per epic we need to know which _tasks_ are Incomplete vs Shipped.

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/0SiBJybBRKaRl28uTuMY_notion-track-shipped.gif" alt="Using formulas in Notion">
</figure>

- Visit Tasks database
- Add property
- Name: Incomplete
- Type: Formula
- Formula: `if(contains(prop("Status"), "Shipped"), false, if(prop("Status") == "Discussion/Ideas", false, true))`

<aside class="info">
⭐ This marks a task as Incomplete so long as it doesn’t have a status that contains the word “Shipped” or has a status of “Discussion/Ideas”
</aside>

- Add another property
- Name: Shipped
- Type: Formula
- Formula: `contains(prop("Status"), "Shipped")`

Now we have the tasks data we need so we can create the epics data, starting with how many tasks are incomplete per epic:

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/axr5LBXdRAys24MDYrYp_notion-epics-track-shipped.gif" alt="Using rollups and formulas to count incomplete vs shipped tasks per epic">
</figure>

- Visit Epics database
- Add property
- Name: Incomplete
- Type: Rollup
- Relation: Tasks (database)
- Property: Incomplete
- Calculate: Checked

Next we calculate how many tasks are shipped per epic:

- Add property
- Name: Shipped
- Type: Rollup
- Relation: Tasks (database)
- Property: Shipped
- Calculate: Checked

Finally, we need to know how many tasks in total there are per epic:

- Add property
- Name: Total tasks
- Type: Formula
- Formula: `prop("Incomplete") + prop("Shipped")`
- Number format: Number

Now we have the data we need to show a percentage of progress complete:

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/PKYrbdwQymvfpVB8Bp0K_notion-epic-percentage-complete.gif" alt="Using formulas to show a progress bar in Notion">
</figure>

- Add property
- Name: % Complete
- Type: Formula
- Formula: `format(floor(100 * prop("Shipped") / max(prop("Total tasks"), 1))) + "%"`

Or to show a fancier progress bar:

- Add property
- Name: Progress
- Type: Formula
- Formula: `if(not empty(prop("Shipped")) and not empty(prop("Total tasks")), slice("⬤⬤⬤⬤⬤⬤⬤⬤⬤⬤", 0, floor(10 * prop("Shipped") / prop("Total tasks"))) + slice("◯◯◯◯◯◯◯◯◯◯", 0, 10 - floor(10 * prop("Shipped") / prop("Total tasks"))) + " " + format(floor(100 * prop("Shipped") / prop("Total tasks"))) + "%", "")`

With special thanks to [Red Gregory’s blog] for inspiration.

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/yU1BQWRQQ0CGDcfkkmAV_epic-table.png" alt="Epics table view for database">
</figure>

### Dates and timelines

It can also be useful to chart epics against a rough timeline, to give stakeholders an idea of what the plan is for what gets worked on when. 

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/Eb0ux67kS861x3WLAdsw_notion-epics-timeline.gif" alt="Creating a timeline view in Notion">
</figure>

To do this, we need a date column:

- Add property
- Name: Date Forecast
- Type: Date
- Date format: Full date

Now we can create a timeline view:

- Create new view
- Data source: Epics
- New empty view
- Timeline

Add your epics to the timeline:

- Select “No date” from the header
- Select all the epics you want to add
- Click and drag them to order and change their length

<figure role="figure">
  <img src="https://images.thoughtbot.com/blog-vellum-image-uploads/TNfUIXa1R9uT7DXHMENH_epics-timeline.png" alt="Timeline view final version in Notion">
</figure>

### Create an epics database per project

Finally, like we did for tasks, we want to use the raw epics database to create a linked view for each project.

- New page
- Title: Epics: Project A
- Database: Table
- Select data source: Epics
- Copy an existing view: Table
- Filter > Project: Project A
- Add view
- Database: Timeline

## Known limitations

One issue we’ve come across: When you are viewing a tasks board for a project, the list of Epics is not filtered by that project (you see the full list of epics). This hasn’t been an issue for now but may become an annoyance as we spin up more projects. Notion support have said they have added this feature request to their backlog so fingers crossed!

## thoughtbot’s Notion product development template

As promised here is a [template] with all of the above already set up. Feel free to copy it and get started.

## A journey’s beginning

This is just the start of our journey using Notion.Things will probably change as we discover better ways to do things. One area we’re still exploring is where and how to store all project-related documents (research, designs, technical docs) in one place that is easily accessible and well structured. But Notion’s flexibility should make it easy for us to continue to experiment.

[Part 1]: https://thoughtbot.com/blog/using-notion-to-manage-product-development
[property]: https://www.notion.so/help/guides/database-properties-help-organize-your-teams-information
[linked databases]: https://www.notion.so/help/guides/using-linked-databases
[Red Gregory’s blog]: https://www.redgregory.com/notion/2021/6/4/17-progress-bar-designs-in-notion
[template]: https://tide-chard-300.notion.site/Thought-Burgers-Projects-e5fd354b090747cbbdf9ab5d3f85442b
