Can Notion actually replace a dedicated to-do list app that was specifically designed to just do that: task management?
Notion has always been a beast when it comes to organising your notes, task, books - just about anything. That's because Notion combines the power of spreadsheets, the flexibility of a text processor and the organisation of hierarchical structures under one roof.
Since the release of the Notion API, Notion's speed issues got compensated and you get your tasks now as quickly into Notion as into any other dedicated To-Do app.
And here's the last piece to the puzzle that turns Notion into a true powerhouse: Statistics for Notion.
It's a simple workaround to get the level of insights and statistics in Notion that's usually reserved for specifically designed software.
I'm calling it The Checkbox Method and once you know how it's done, you can use it to gather insights for any sort of Notion Database, not just task managers.
Read on to learn how this is done or jump to the bottom to grab the setup for yourself. Or check out this video walkthrough.
The problem with statistics in Notion
Notion is both amazing and horrible at slicing data for you.
It's amazing because you can use related databases and various views to see the content of a database in countless ways.
It's horrible because you're stuck with this visual representation of your data and can't ask Notion (natively) to show you that data in numbers.
Wanna see all your books in the category "Non-Fiction". Here they are.
Wanna know how many there are? Have fun counting.
Luckily, there's a workaround.
Get Statistics for Notion with The Checkbox Method
You can solve that problem and create a new functionality within Notion by combining three features that can't provide statistics on their own.
Notion Roll-ups + Templates + Notion Formulas = Statistics in Notion
Here's how The Checkbox Method works.
1. The Magic of Roll-ups
Roll-ups in Notion are like little gateways. You connect a database to another via a relation and then, you can ask the roll-up to gather information for you. Usually, the use case for this looks something like this:
You have your tasks in database A and your projects in database B. Both databases are related. With a roll-up in database B, you could have Notion look into the tasks related to a specific project and sum up the time you've assigned to each task. And just like that, database B can display the total amount of time a project will take.
Now that's cool, but we don't want to have statistics only for one project. We want them for our whole workspace.
To do that, we create a separate database that has no other job than to create statistics. Let's call it Statistics. We will only need one entry in it (labelled My Stats).
2. Boring old templates
Within each database, you can set up templates for entries to pre-fill certain information. With your task database, you could have a template for urgent tasks, so that your Property High Priority is tagged automatically.
To make sure that our statistics actually gather information for each and every entry in our database, we need create a base template for all entries in that database to auto-fill a relation to our statistics page.
Now we're just one step away before statistics can take over our workspace.
We need some little checkboxes. After all, this is called The Checkbox Method.
3. If it can be a checkmark, it can be a statistic
To recap, here's how our setup looks like right now:
We have a database for which we want statistics. Let's call this our Main Database.
We have a separate database called Statistics. It only has one entry called My Stats. There's a relation between the two databases.
We set up templates for our Main Database so that each and every entry here has a pre-filled relation to My Stats.
Now remember, Roll-Ups are great at displaying sums of simple conditions. The easiest thing for a Roll-Up to count are checkboxes. So if we can get Notion to display information - any information - as a simple checkbox, then we can have statistics on it.
That's it. That's The Checkbox Method that will turn your Notion workspace into an analytics-powerhouse.
So how do we get Notion to turn "This task is due next week" into a checkbox?
With the use of formulas.
One formula style to rule them all
Notion Formulas will return a checkbox (or boolean for all computer scientists out there) whenever you ask it to test whether a statement is true.
So all you need to do to get whatever statistic your heart desires is to figure out:
How can I ask Notion a yes or no question about it.
Here's how a simple statistics setup for a task manager could look like:
Important to note: those checkboxes must be set up in your Main Database, not in your Statistics Database.
Done and Waiting On are the two simplest checkboxes to get with any task manager. They are true checkboxes, meaning that you - the user - has to check and uncheck them. So no need to figure out a formula for that (unless you use a Select Property to track that in your database in which case you'd need to add one).
Feel free to copypaste any formula below directly into your workspace. Beware of one quirk though: sometimes, copypasting the formula into notion will use a weird variation of the " symbol. It looks nearly identical to the Notion one, but Notion gets confused and returns a syntax error. Resolve the problem by either typing out the whole formula or replace all " symbols by typing " directly into the Notion Formula box.
For the rest, the formulas look like this:
Overdue statistics in Notion
Overdue checks require nothing but a date property with your deadline and another formula property with this formula:
now() > prop("Deadline")
Count how many tasks have a DO date for today
Figuring out whether a task has a DO (or Due) date property that matches today (i.e. should be done today) is as simple as this:
formatDate(now(), "l") == formatDate(prop("Do Date"), "l")
Important to note here: Notion formulas want you to put two equal signs (==) instead of just one to test whether something is really alike. Also, the formula uses the small letter L inside of the quotation marks, not the capital version of i.
Count how many deadlines are within the next week
And lastly, you can see how many deadlines are piling up for the week ahead by asking Notion this question:
and(dateBetween(prop("Deadline"), now(), "days") < 7, dateBetween(prop("Deadline"), now(), "days") > 0)
How to get any sort of statistic in Notion
You know the drill by now, all you have to do is turn an information you'd love to see into a checkbox. Here are a few more ideas and use cases:
How many books am I reading?
Use a formula to check whether a Status Field equals the specific value you're looking for. In this case, the checkbox should be ticked if the status says "Reading"
prop("Status") == "Reading"
Important to note here: Notion formulas want you to put two equal signs (==) instead of just one to test whether something is really alike.
It's also case sensitive, so don't test for "reading" if your status is "Reading".
How many notes do I have on note-taking
Same idea here, you're probably using a tag to assign categories to your notes. They can be checked just the same as status fields.
prop("Tag") == "Note-Taking"
Ok, but how many notes do I have on both note-taking and zettelkasten?
Well if you're into Zettelkasten notes, you'd have to test for several statements. That's done by using the AND operator.
and(prop("Tag") == "Note-Taking", prop("Tag") == "Zettelkasten")
Impressive. Can you also show me how many tasks I've completed today?
Sure. All you need is a Last Edited property.
and(prop("Done?") == true, formatDate(now(), "l") == formatDate(prop("Last Edited"), "l"))
How to get the actual statistics
So now that we got a bunch of pretty checkboxes in our Main Database, let's do something useful with that.
Head over to the Statistics Database and create roll-ups for each and every checkbox.
Select the corresponding relation, pick the property with the checkbox and have it count the checked or unchecked boxes. Here's how that looks like if you want to count your open tasks:
Now that we have this number, we just need to display it in a pretty way. For that, we create a separate property in our Statistics Database. To reduce the confusion later on, I recommend naming all roll-up properties with a # before the name of the thing you're counting and giving your second property that same name without a #.
Your second property uses the concat operator to combine the number with any phrase you want. This is the template:
concat("✓ YOUR TEXT BEFORE THE NUMBER " + format(prop("#Open Tasks")) + " YOUR TEXT AFTER THE NUMBER ")
And this would turn into something like this for open tasks:
concat("✓ You have a total of " + format(prop("#Open Tasks")) + " open tasks ")
Do I have to use the same statistics everywhere?
No. By creating linked databases for your Statistics Database, you can choose every time which properties you'd like to display. In my task manager (that you can download for free below), I use some short daily stats for the task widget and more comprehensive stats on the main page.
Is there a way to get statistics for entries that are already in my database?
Yes! The Checkbox Method is fully backwards compatible. To set up statistics for all your existing entries, proceed as follows:
- Set up The Checkbox Method as explained above. Create a separate Statistics Database (with the single entry My Stats), create a relation property set to your main database, create a bunch of yes/no questions that return checkboxes and finally, set up your "translate this number into text" formulas.
- Go into your main database and select any entry. Press Esc to get the blue selector around the entry. Next, press your keyboard shortcut for Select All (cmd + a on mac or cntrl + a on windows). Now, all entries should be highlighted blue. Rightclick anywhere into that blue selection, go to Edit Property, pick the relation property to the Statistics Database and set it to the single existing entry My Stats.
- That's it. Enjoy your stats.
Can you only gather statistics for one database?
No, you can have statistics for all your databases. Just repeat the above steps for separate use cases.
Even better, sometimes you might want to have statistics from two different databases within one statistic database. In my task manager (download it for free below), My Stats displays information from the task database AND the project database.
To do so, simply create another relation from the Statistics Database to the second database of choice and start rolling up checkbox fields.
Do you have more Notion Content?
Sure do. It's an ever growing collection. Check this out:
Got more questions?
Tweet at @mfreihaendig and I will try to get back to you asap.
- Set up a dedicated statistics database with one entry
- Relate all your entries in the main database for which you want statistics with that one entry
- For each statistically relevant information, create a true/false checkbox property in your main database
- Use roll-ups in your statistics database to count the number of checkboxes
- Use concat formulas to create some pretty text around it
- Use a linked database + gallery view to display the statistics everywhere
I want statistics for Notion!
Not in the mood to build this yourself or just want to see how it would look like in action?
Sign up below to receive a fully functional Task Manager in Notion including a pre-loaded statistic function using The Checkbox Method and a task widget for you to paste anywhere else in your workspace.
Plus, you'll also receive my bi-weekly newsletter where I help you to boost your productivity, craft your life and become a Notion Ninja.