Notion & Google Calendar Sync

Hi everyone!

Did any one create a Notion - Google Sync workflow and would be so kind to share their wisdom?

thanks in advance!

Hey @Christian_Haake!

Welcome to the community :sparkling_heart:

Can you share more details on what kind of workflow you’re looking for?

Hi @harshil1712 !

Thanks a lot!

That I want to do is, pretty much a sync workflow in to different scenarios:

  1. if Meeting added to gCal add page to database with basic information included. (Date/time, title, Link)
  2. if Time Block added to gCal add page to database with information included. (Date/time, title, custom field) if note added - vice versa

Thanks a lot in advance and Greetings form the “Westcoast” of Germany!


Did you check the documentation? There we have added an example that shows how you can use the Calendly Trigger node and add information to Notion. This, however, only works if you’re using Calendly. If you want to use Google Calendar, you will have to use Polling for that.

Syncing the from Notion to Google Calendar would be simpler. For that, you can use the Notion Trigger node.


thanks for the response!

I will check that out. Maybe we could build a sync template that works out of the box with notion and GoogleCall or Caldav


  • Check for new event with X string in the next 15days (Cal)
    → check if new
    → Create page in X database (notion)
  • update event with url of the notion page in Cal in the notes section

interval every 30 min

What do you think?

1 Like

You idea sounds perfect. That’s something that I would do. But while talking to some community members I learned a new way to trigger workflow using Google Script. You can trigger the workflow when an event is created, updated, or deleted in Google Calendar. I haven’t tried out the solution to the fullest, but I was able to trigger my workflow when a calendar event was created/updated/deleted.

Once you have that information, you can then add it Notion.

However, for Notion, you will have to still use polling and check for events at a certain time interval.

Let me know if you need any help building this. We can share it on the workflows page!

Hi Christian,

I have currently the same challange. Could you bring up a working gcal notion sync?

Sadly no :-/

Hi @volkimd
You might find this approach interesing. Instead of waiting for a trigger, just sync the calendar events within an interval (like week before-week after). Use Cron or Interval to set the timing. You can sync every minute or even second (but it would be too expensive in terms of server resources)

1 Like

@volkimd @artildo @Christian_Haake

Working on the Google Calendar trigger and last week added the update row event to the Notion trigger. (it’s not released yet). So, soon this is going to be much easier to do.


Hi @artildo,

this would be great. Already spend some time to get this up sadly without luck. My Problem is the validating part if email is new or already in notion. I am working with an propertie named helper id. In case of gcal sync this ID is based on gcaluid.
At first I catch gcal events after a specific date. In same Stage I get dbpages with type event. This will be the Arry against whichbI try to match gcaluids against the notion helper id. But I dont know whats the right and above all a working way.

Do you have a good example?

Many thanks and best regards

This is great. That reduce the amount of workflow executions massive.

Hi @volkimd Right now I have no any solutions. Let’s see what the new release brings to us.

Got created. We will review it internally and then release it.

1 Like

This is great. Thank you so much.

It solves the half of my problem.

Yeah. But I’m thinking about what it could be. Maybe a default possibility to compare items of two datasources.
Something like “iterate over A(gcal) and look if in B(notion)”.
This would be enough and will solve all of my current challenges regarding gsuite - notion automation.

It will greately depends on whether the triggers worsk with a specific event, or with all events in a range or by some other rule.

I don’t know if it is still interesting for you. I think I solved validation with function.
I set if I create an DB Page in Notion from an other source, like mail or calender, the unique ID of the source as id_helper. Based on this entry I can compare Items.

The comparing happens in a Function, as it gets Array of objects and operates it only one time. This makes it possible to work with loops and conditions. The rest is simple loop and if logic. If I get a match, I attach the notion page id to the Item(which is the gcal object). After this function I have an IF node where I check if notionPageId if empty. If its empty I create dbpage and set id_helper to iCalUID. If not I update the page at the notionPageId (only name or time).

for (gcalItem of $items("gcal")){
  for (notionItem of $items("notion")){
    if(gcalItem.json.iCalUID === notionItem.json.id_helper){
         gcalItem.json.notionPageId =;
         gcalItem.json.notionIdHelper = notionItem.json.id_helper;
     gcalItem.json.notionPageId = "";
     gcalItem.json.notionIdHelper = "";

return $items("gcal");

Hopefully it helps.

For the other direction I will use a Notion Trigger. Which will create the appointment in Gcal and update after creation the notion page with id_helper which is iCalUID.

This makes it possible that I create appointment in gcal but also I can organize everything via notion.

Hi @volkimd ,

I’m a bit new to n8n and since I’m visual minded… do you mind to share your workflow?

I’m trying to have a sync between my google calendar and notion. If you or anyone could help me out that would be great!