Today, I will walk you through my task management setup based on Google Calendar and Roam Research.

I explained previously in Time Management how managing tasks in a calendar is beneficial because it forces us to face the inevitable truth about how much time we’ll need to get to the bottom of our task list. Consequently, it will help us prioritize our tasks and ultimately increase our impact.

Unfortunately, too many people still use a to-do list on which all tasks are represented equally regardless of their complexity.

The primary reason is that no single tool offers that option.

Luckily, Google Calendar and Roam Research are very easy to integrate, and their complementary sets of features make such a solution possible.

Here’s how to step by step:

Step 1: You need a Google Calendar

As far as I know, this is the only integration available with Roam. It’s also probably the most popular calendar solution and is free to use with any Gmail address.

I created a couple of demo calendars to illustrate this tutorial. They are inspired by mine.

You will notice that these demo calendars are using the time blocking technique I described in Time Management, but while that works really well with this method, it is absolutely not a requirement.

Step 2: You need a Roam Research graph.

If you are a Roam user, you can use one of your graphs.

If not, I created a demo graph so you can see the system at work. It might be helpful even if you already use Roam to double-check any detail:

You should be able to access it in read-only mode. If when you open you do not see a dark vertical sidebar on the left, please click on the small button at the top left, represented by three horizontal lines.

The date will change based on when you open the graph

You should then see something like this:

The date will vary based on when you open the graph

Step 3: Now, we install the necessary extensions in Roam

We need to add three Javascript extensions to the Roam Research graph:

Let’s walk together through that one step at a time. First, you need to have your Roam graph in a browser window or the Roam desktop app.

3.1 Let’s install the RoamJS Marketplace:

We are almost done with the extensions. Please just hit ⌘-P again and select Open Marketplace once more, then locate the Google Calendar and the SmartBlocks extensions in the list.

That’s it, well done! The installation part is finished; now, we can move to the configuration.

Step 4: Let’s connect Roam to your calendar.

All the following steps happen in your Roam graph.

The Google Calendar extension will have created two pages.

Of course, your account will be listed instead of mine.

You can, of course, play with all the other settings as you wish, but here are the ones I use:

Step 5: let’s automate the daily import.

We are almost there! 🙂

It’s time to create a SmartBlocks template.

Once again, you can play with the SmartBlocks commands, but here’s the template I use for my calendar import:

Let’s walk together through this template.

Now that we have a template set, it’s time for the last step!

Automating the import every night.

You can play with the settings in the Home section if you wish, but I leave them to the default values. The section we are interested in is Daily.

Daily must be enabled so that SmartBlocks runs the automation.
This is the name of the template we created earlier. If you used a different name for the template, make sure you edit it here.
Here we define at which time the template will be used every day. Your mileage may vary.
I like running it just after midnight so that I always have my calendar events when I go to the daily notes page for the day.

That’s it! If you have followed these five steps, your Roam graph is now connected to your Google Calendar, and your events are imported every night into your Daily Notes.

Let’s see how this works in practice.

Here’s a day in the demo calendar:

And the same day, in the demo Roam graph:

Here six events were imported into the Diary.

We see that the events starting with # were ignored.

As the day went by and I marked Done the ones that were done, I also took a few notes during the meetings. I can do that simply inline in the Diary.

I couldn’t get to that task I had scheduled for 13.00, which I noted in my Daily Review. For some reason, I couldn’t reschedule it immediately.

UPCOMING lists a task for May 8 that I noted earlier on a separate page.

UNSCHEDULED lists a task I noted somewhere else, but without setting a date.

Let’s now move to May 2nd, one weekend later, in the calendar:

And in Roam:

As you can see, the day’s events were imported, but the item not completed on Apr 29th is now automatically listed in the OVERDUE section.

The Daily and Weekly reviews

Once set, the system works without much maintenance from a technical perspective. It just works.

Whenever I realize I need to do something, all I have to do is add a Todo checkbox to the corresponding note in Roam. If the task has a deadline, I can note it; if not, it’ll appear in UNSCHEDULED

Every week, generally on Sunday, I take 30 minutes to assign slots in my calendar to the tasks in UNSCHEDULED, UPCOMING, and OVERDUE that I want to get done over the following week. I also decide whether the tasks I can’t get to can be delegated, wait, or should be deleted.

Each task added to the calendar can then be instantly marked as Done in Roam, as the calendar import will bring it back at the right time.

Every evening I look at the uncompleted tasks (if any) of the day and decide whether they need to be rescheduled immediately or can wait for the following weekly review.

If I reschedule them immediately, I add them to the calendar and mark them done in Roam. However, if they can wait for the following review, I simply leave them there.

That’s all. With this simple system, I guarantee that the tasks I consider priorities have time allocated, that I correctly estimate what I can do in a week, and that no task will fall between the cracks.

I realize this was long, I hope it was clear enough, but I’d love to hear from you if not. I also wondered if this should be a video instead of a post. Let me know what you think of it.

Finally, if you want more of this content, subscribe to Morfternight, my weekly newsletter just below, or follow me on Twitter: @p3ob7o.