Column-based habit trackers are great for beginners because they're easy to understand, but they have some limitations. The Relation Property is a great option for tracking habits because, instead of using a single property to hold all selected habits, it supports them in separate databases. With this, you are able to revisit the pieces of information associated with individual habits and recall why they exist in the first place by navigating into the page contents. It also allows you to calculate the percentage changed on a single day without affecting the calculations or scores of previous months.
Companies Mentioned
If you’ve used Notion for recurring activities like daily habits, or routine checklists, then this blog is for you.
I have been using notion to track my habits for over 2 years. I used to use the column-based habit tracker, but I recently switched over to something different.
A Column-based habit tracker is where you have all your habits as columns (properties on a page) when using a database table view. Column-based habit trackers are great for beginners because they're easy to understand, but they have some limitations.
For example, if you have columns for “wake up” and “get dressed,” you can't perform aggregations on individual daily entries using columns. For example, it's difficult to know how many habits you've completed today. Also, using a formula would mean using the exact words on the column. Luckily if you change the name of the habit, Notion would also update the formula—but how about when you add new ones or delete a habit column? At that point, you've lost your correct values for the previous days or months.
Habits are great. They help you meet your goals, but they can also be a big waste of time. We've all had the experience of getting into a habit and then realizing that we've spent so long doing it that it's become boring or tedious. Most tracked habits should have an expiry that is the date when the habit would no longer be actively tracked.
Understanding this, while using a Column-based tracker, I created multiple habit databases per quarter using the column model. I revise my habits every month and quarter, introducing new ones and doing away with ones that are now part of me like waking up early, meditating and going to the gym. Although this worked well on a month-to-month basis, I lost the advantage of using a master database table that is using the table footer actions for calculations like getting the frequency of when I missed a habit, the average time I got out of bed or how many times I indulged in a bad habit.
Something different
How about we use a Relation Property instead? The Relation Property is a great option for tracking habits because, instead of using a single property to hold all selected habits, it supports them in separate databases. This allows you to calculate the percentage changed on a single day without affecting the calculations or scores of previous months. It also allows you to leverage a master database (a journal, habit entries, daily logs, etc) so that all of your habits are kept together and easily accessible. Here, each habit would be a database and each day in the journal would have a relation to habits, thereby using a single property to hold all selected habits.
The downside to this, compared to a Column-based style is that you lose the ability to easily check off habits when using database views however, you become more intentional about your habits. With this, you are able to revisit the pieces of information associated with individual habits and recall why they exist in the first place by navigating into the page contents.
While searching for a new way to track my habits, I needed something that would give me these sets of features
Calculate the percentage changed on a single day
Skipping a habit should also count toward the overall checked score
Supporting habits that can expire by adding and removing a habit column shouldn’t affect the calculations/score of the previous months.
Leverage a master database (a journal, habit entries, daily logs, etc)
Setting up habits that expire
Since I will be introducing new habits every month and quarter (i.e about 30 to 90 days). Every month, I'm going to add a set of habits I plan to track, link those up to the daily entry, and make a comparison between the habits performed today and the habits I have set out to perform using the habit IDs. This can be done using a regex () defined !
Getting progress on each daily entry can easily be done by setting an ID on individual habits, rolling up the IDs to the daily database and using the regex formula to derive the numeric difference between the planned and the executed habits. For example, in the image above, Aug 03 has two habits executed out of the 4 planned habits in August. The Daily Log will have a roll-up of all the planned habit IDs from August, and as we add executed habits for the day, we compare the executed against the planned to get a 0.5 execution score.
Want to see checkmarks for every habit? Easy! Simply add a formula that results in true or false.
For example contains(props("Selected Habit IDs"), <habit id>). You can also delete or update this column and it doesn't change the progress or the data saved in the previous months and days. 👏🏾
The only disadvantage when using this method is that when you’ve accumulated habits over months and years say 20 habits, updating the habit log property can be a pain because for a relational property; Notion gives you a filter bar and scrollable suggestions. You either have to search or scroll through the list of habits suggested to you.
But… it makes habit tracking intentional.
To make tracking easier, since the daily entry is a Notion page, we can create two table views filtered by the current page; one for pending and the other for completed. By dragging pending habits between views, Notion will automatically update the page’s habit log relation property with the dragged habit.
THE END
Leave a comment below if you want to know how I achieve my goals using habits on Notion.