Documentation Tips— How to show progress in Notion based on your Jira board

A practical example of how to create a progress bar in Notion

Inês de Matos
6 min readApr 7, 2023

When thinking of Jira, you probably associate the Confluence platform as the main tool for wiki pages. In fact it’s a great combo because everything is easily connected between them since they are owned by the same company — Atlassian.

I think it’s a powerful setup, but lately I have been working with Notion instead of Confluence and I have been playing around a little bit trying to discover its strong capabilities.

Therefore I will share with you an example focused on exposing the progress of Jira items while also affecting the progress of our goals defined in Notion.

Connect your Jira account

To start you need to ensure you have a Jira account connected with your Notion workspace. For that you just need to go to Settings & Members > My Connections, from there you should find the app to connect and then just follow the instructions.

Jira connection in Notion

Sync a Jira board into a database

In a document of preference, type “/ to show all the options and search for “Jira”, once is filtered select the one that says Synced Databases. This will create an inline database a la Notion prompting you to select from which board you want to sync with. You can search and select from the results or you can just paste the url from the board like this one https://xxxx.atlassian.net/jira/software/projects/MEH/boards/ .

Create database inline from Jira

After this you will see a huge database with a lot of properties inherited from Jira and if you have a lot of items in your board it can take a while to load everything.

So let’s hide all the properties except the status, because you won’t need them, but feel free to explore them and see what it brings. The reason why we are just showing the Status it’s because we need it to be visible so we can understand the next steps.

Hide properties from Jira database

After this, you may filter the database just to show the Epics (which in our example it will be the main issue type connected to a goal, but it can be anything else). Go to Filter > Search for “Issue type” and then type “Epic”, you should see the result pretty quick.

Filter Jira database by Epic

Create a property based on status

Now, it’s when the magic actually begins.

We will create a new property of type Formula named as “Done?” and afterwards click on Edit.
This will prompt a small modal where we can write a formula as we wish, in this case we want to know when an Epic is done.

For that, we want to use a conditional statement (if) over the property “Status” to infer the status (duh xD) of an Epic.

if(prop("Status") == "Done", 1, 0)

This means, every time an Epic is Done, please put the number 1, if it’s not just keep with the 0.

Create property based on Jira issue status

Create another database with your goals

Now we want to connect our Epics to another database where our goals will be defined.

Once again type “/” and search for “inline database” to create a new database. Name it as Goals or whatever you like and write some goals (1 per row).

Create new inline database with several goals (one per row)

Create a relation between databases

To create this relation we need to create a new property of type Relation, then select the board and toggle the option to show this same relation on the board you just selected. Don’t forget to name it, let’s say Roadmap.

Create relation between two databases

To see this relation work, you can go to your Jira database and select the goals you want for each Epic. You will see the Goals database being automatically updated.

Behaviour in Notion after selecting the goals for each epic

Get the total of items based on the relation

In the Goals database, create a new property of type Rollup and name it as “Total Epics” and select the property anchoring the relation with the Epics, which in this case is Roadmap.

The Rollup type allow us to fetch and do operations over the properties of the Epics related to each Goal.

In this case we just want to count the total of Epics associated with one Goal and for this you can select any property, you just need to ensure the option Count all is selected in the Calculate field. Keep it as a number.

New property to count all the epics for each goal

Get the total of done items

Now, do you remember that Done? property?

This property will be used to count the total of done Epics in our Goals table. This means we need to create a new property of type Rollup, select the relation again (Roadmap), select the property Done? and select to Sum for the calculation.

Why does this work?
We defined previously that an Epic when is done is defined as a 1 on the Done? property, adding it all up to the total of done Epics.

New property to count all the done epics for each goal

Create the progress bar

To create the progress bar we first need to get the fraction of the total of done over the total of Epics.

Create a new property of type Formula, call it Progress and then add the following arithmetic formula to it:

prop("Total of Done") / prop("Total of Epics")

Select to show as a Bar. You will see the progress bar is not working properly, that’s because by default it’s dividing the outcome of the formula by 100. So to compensate this, we need to multiply our value by 100.

prop("Total of Done") / prop("Total of Epics") * 100
New property with a formula to show a progress bar

Although, it looks great, our formula still has a flaw. If your progress is an infinite number you will get a huge floating number on your cell. To avoid this, we need to use the round() function to ignore the decimal numbers, multiply it by 10000 to show us a number of 4 digits and then divide by 100 so we can have the floating comma in the right place.

round(prop("Total of Done") / prop("Total of Epics") * 10000) / 100
Refining the formula value from the previous property with a floating number with 2 decimal digits

Show it as a gallery

Now if you want to have a clear view of your goals, you can create a new view as a Gallery, remove the card preview selecting None and choose the card size to be small.

Then on the Properties of the Gallery choose the Progress property to be shown and then sort it by the progress.

Gallery for to show the goals

Final result

Final state with both databases

All combined

Epics status affecting the goals progress defined in a notion document (the gif was speed up for the sake of the article)

In general, the mindset to use Notion database is to overuse the properties as variables to achieve these kind of automations. The concepts shown in this tutorial can be applied to other use cases wherever your imagination goes.

I hope this is helpful to someone 🙏.

--

--

Inês de Matos

Software Engineer @ Web Summit. I try to bring humanity into a such digital world.