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.
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.
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.
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).
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.
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.
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 checks require nothing but a date property with your deadline and another formula property with this formula:
now() > prop("Deadline")
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.
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)
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:
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".
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"
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")
Sure. All you need is a Last Edited property.
and(prop("Done?") == true, formatDate(now(), "l") == formatDate(prop("Last Edited"), "l"))
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 ")
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.
Yes! The Checkbox Method is fully backwards compatible. To set up statistics for all your existing entries, proceed as follows:
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.
Sure do. It's an ever growing collection. Check this out:
Tweet at @mfreihaendig and I will try to get back to you asap.
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.