How to track habits and journal in Notion

In Notion, there are certainly many ways to skin a cat. Over the years I’ve played with all sorts of journal and habit tracking systems – back then I disdained the rather simple habit tracker of checkbox fields, but over time Notion’s features have expanded, and now that Notion allows for scheduling templates, I’ve actually come around.

First of all, I’ve uploaded a free example template of this, which you can find here. I sanitized it a bit from my system because some of them, like morning light exposure and cold showers, might not be general enough to be relevant to most people. Of course, once you’ve copied the template you can really make any modifications you want! I’ve integrated it into my wider second-brain system, which I discuss in my article here: you can buy the full template on Gumroad for five bucks, or $2.50 if you use the promo code “158fxlv”. The habit tracker will also be included in that template if you want the whole thing, but you don’t need it if you just want the habit tracker.

Habit Tracking

There are pros and cons to the checkbox habit tracker. The pros are that it’s simple – it’s not too cognitively taxing to fill out at the end of the day, and it provides a handy checklist of things you intend to do routinely. It also just feels good to check boxes and try to keep streaks. This simplicity necessarily results in a lack of detail – if you have a habit called “read” associated with a yes or no checkbox, you don’t really get any information on how much reading you actually did. One potential solution to this is to replace your checkbox with a number field, which could be the number of minutes spent on the activity, or some other useful measure (pages read, for example) – I used to do this, myself, but in the end, I found filling out a timesheet for myself every day was tedious and required too much self-auditing. I prefer now to keep it simple, but consistent.

I like to use a formula property that sums up how I did checkbox-wise as a percentage, plus a “rating” number field which is my subjective rating on how the day went from 1 to 10 – you could then easily see the averages for these over different time periods, or view them side by side in a calendar. The formula is sometimes a bit annoying to update if you’re regularly adding or removing habits – it’s a kind of messy formula that counts your checked boxes and divides them by the total number of fields to give you a percentage.

Not pretty – on the bright side, if you rename a property it’ll automatically rename it in here too – but if you add a new one, you’ll basically need to add another + unaryPlus(prop(”your_new_property”)) and add 1 to the number you’re dividing by.

Planning, Reviewing, & Journaling

Another few useful additions to a daily review are some open text fields that can allow for a bit of reflection and orientation – this is essentially a digital journal. I have four of these fields: intentions, the good, the bad, and reflections. These are all pretty self-explanatory – intentions is often a quick write-up of my plans for the day, and the rest are usually filled out at the end of the day – what went well, what went poorly, and reflections as my more open place for thoughts, musings, and general journal stuff. Another thing I like about using Notion for this (which I’ve discussed in other articles) is its capacity for backlinks. By typing the ‘@’ symbol, Notion opens up a menu wherein you can create or reference any other object in your Notion system (such as a task in your task manager database, a note in your notes database, etc). This means you can quickly type up a to-do list and populate your task manager at the same time.

What I like about this daily review system is that it acts as both a habit tracker and a journal – and with Notion’s scheduled templates, you can schedule a new one to be created automatically each day. This is nice because you will always have a record for each day, even if you miss a day – I like to have a “missed day” checkbox which I select on the occasional day I forgot to fill it out, just to give some context that the completely blank day may have just been a failure to record rather than an actually really bad day – these can also then be filtered out if you don’t want, say, a month of bad record-keeping to mess with summary stats. In the template I disabled “Repeat” because I didn’t want it to create a bunch of new records for you when you copy it – just go to the blue “New” button, select the … symbol by the template, and set it to repeat daily.

The nice thing about having an automatically generated database item for each day is that you can then use your date created property to reliably filter based on time periods – something that isn’t possible if you manually create a record a day late because you forgot. This is really handy to start getting an idea of how well you’ve been doing with your habits or to quickly skim your journal entries for a given period of time.