The Google Calendar to Roam Integration allows users to import the list of events on a given day into their daily notes page.


You could use the Copy Extension button below to individually install this extension. To install, just paste anywhere in your Roam graph and click "Yes, I Know What I'm Doing".

Manual Installation

If instead you prefer to manually install, first create a block with the text {{[[roam/js]]}} on any page in your Roam DB. Then, copy and paste this code block as a child of the block.

var existing = document.getElementById("roamjs-google-calendar");
if (!existing) {
  var extension = document.createElement("script");
  extension.src = ""; = "roamjs-google-calendar";
  extension.async = true;
  extension.type = "text/javascript";


A [[roam/js/google-calendar]] page will be created upon installing the extension for the first time and will serve as a configuration page.


On the home tab, you will find the oauth field. Use this panel to log into your google account within Roam. If you don't want to connect your Google account, you will only be able to access public calendars.


On the import tab, you will find numerous fields used to configure the calendar import feature.

Calendars specify which calendars you would like Roam to read before importing. If you specify more than one, it will read from all of those calendars. You must use the calendar ID provided by Google which you could find in the calendar settings. This will usually be your gmail address, such as

Include Event Link hyperlinks the event summary with a link to the google calendar event. This field is ignored if you specify a Format.

Skip Free filters out the events from your calendar that you've set to 'Free'

Format specifies the text to add for each calendar event. Could use the following placeholders to be replaced with the event's data:

  • {summary} - the name of the event
  • {link} - the link for the event
  • {hangout} - the hangout link for the event
  • {location} - the location for the event
  • {start} - the start time of the event. Add a colon and format to customize the start time format. For example, {start:hh:mm} will resolve to 12:00
  • {end} - the end time of the event. Add a colon and format to customize the end time format. For example, {end:hh:mm} will resolve to 12:00
  • {attendees} - the attendees of the event, using either their display name if available or email if not, each of whom are tagged and comma delimited. By default, Format will be {summary} ({start:hh:mm am} - {end:hh:mm a}) - [Meet]({hangout})

In any page, activate the Roam Command Palette by hitting CTRL+P on windows or CMD+P on Mac, then click the Import Google Calendar command. The extension will fill the page with the events you have for that day. It will be displayed in the timezone of your browser. It will use either the page's title if it's a daily note, or the current date if it's not.

This extension is also integrated with Smart Blocks! If you have both this extension and Roam42 installed, there will be a <%GOOGLECALENDAR%> command available. The command will automatically run the import google calendar logic and paste the events in blocks before continuing with the rest of the workflow.



This extension is brought to you by RoamJS! If you are facing any issues reach out to or click on the chat button on the bottom right. If you get value from using this extension, consider sponsoring RoamJS by clicking on the button below!

A special thanks to those who's contributions also helped make this extension possible:


Add your email below to stay up to date on all RoamJS features, fixes, and news!

Other Extensions