Automating Journaling & Habit Tracking with Notion and Cloud Functions

Automatically include data such as headlines, weather, finances, etc into your daily journal

Notion APICloud Functions

Last updated: Thu Dec 22 2022

cover image

Reducing Friction & Increasing Value

I find daily journaling and habit tracking very valuable, but impossible to stay consistent over a long period of time. I can do it well for a few weeks at a time, and next thing you know I haven’t journaled in two months.

When I do get around to journaling, I always find myself listing off things like everything I did in a day, the weather, or where I was. But it feels to me like it’s a waste of time and energy to have to remember about my day and then list it all out. Especially at the end of a long day when my brain is only half functioning.

I figured if I can reduce that friction, then I can keep up with journaling more consistently. I realized most of the information I write down is already found in other apps, like Calendar or Health. Automatically recording that type of information means that I don’t need to spend the mental energy remembering the details. I can put my full focus towards more important things, like writing about how I felt about a certain event, or thinking about what changes I need to make in my life. It also means that if I forget to open my journal for the day, it’s not just a wash. I’ll still have data that reminds me about what that day was like, and some of my habits are still tracked automatically.

How it works

Notion page image

The gist of it is that I have a microservice running on Google Cloud Functions called write-to-entry. I send some data to this service from anywhere via HTTP request, and it will write the data to the entry in my journal db.

Since shortcuts allows you to send HTTP requests, I’ve found that to be a great way to connect other apps to Notion. This means I automatically aggregate data that I’m manually entering in other sources, like fitness data from my lifting tracker Strong, or events from Google Calendar.

Beyond that, I can connect pretty much any API to Notion. I just have another service that makes a request from said API and converts it to the expected request format from write-to-entry, and we’re good to go. For example, I’m storing the top headlines from the News API every day.

Automating Journal Prompts

I wrote another service called append-prompts that will stick a different set of prompts into the journal depending on whatever logic I write.

For example, I came across this tweet by Sahil Bloom that suggested asking yourself these three questions every month:

  1. What really matters right now in my life?
  1. Are my current systems aligned with my long-term goals?
  1. What do I need to cut from my life?

So append-prompts checks the day of the month, and if it’s the first of the month then it will append these prompts into that day’s journal.

Habit Tracking

Notion page image

What’s really nice about Notion properties is that you can use the formula property to automatically track habits.

For example, whenever I track a run with my Apple Watch, it will record my workout duration. I can use the formula before to create an “Exercised” checkbox property. I know I could figure out which day I’m working out or not by the Workout Duration alone, but the checkbox is nicer for monitoring progress.

equal(if(prop("Workout Duration") > 0, "true", "false"), "true")