AutomationFlowsData & Sheets › Notion and Google Calendar Sync

Notion and Google Calendar Sync

Notion and Google Calendar Sync. Uses notionTrigger, googleCalendar, notion, googleCalendarTrigger. Event-driven trigger; 13 nodes.

Event trigger★★★★☆ complexity13 nodesNotion TriggerGoogle CalendarNotionGoogle Calendar Trigger
Data & Sheets Trigger: Event Nodes: 13 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "Notion and Google Calendar Sync",
  "nodes": [
    {
      "parameters": {
        "databaseId": "24ddcbfd883580feab1dfa7270343d5b",
        "resource": "database",
        "triggerOn": [
          "create",
          "update"
        ]
      },
      "name": "Notion Trigger",
      "type": "n8n-nodes-base.notionTrigger",
      "typeVersion": 1,
      "id": "e0b5d921-a532-4e94-a320-1b22e171b764",
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "position": [
        250,
        250
      ]
    },
    {
      "parameters": {
        "value1": "={{ $json.deleted }}",
        "options": {}
      },
      "name": "If Notion Item Deleted?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "id": "4e1837e2-45e0-466d-a197-2a5a544c2049",
      "position": [
        500,
        250
      ]
    },
    {
      "parameters": {
        "calendarId": "85e8d827fde536807e1317e061a1fa3310c72c6050c933ec0e5d6e4df7bb96ee@group.calendar.google.com",
        "eventId": "={{ $json.properties.gcal_id.rich_text[0].plain_text }}",
        "resource": "event",
        "operation": "delete"
      },
      "name": "Delete from Google Calendar",
      "type": "n8n-nodes-base.googleCalendar",
      "typeVersion": 1,
      "id": "557a1b6c-82ce-4122-b5e1-95561a7a0b35",
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "position": [
        750,
        350
      ]
    },
    {
      "parameters": {
        "calendarId": "85e8d827fde536807e1317e061a1fa3310c72c6050c933ec0e5d6e4df7bb96ee@group.calendar.google.com",
        "eventId": "={{ $json.properties.gcal_id.rich_text[0].plain_text }}",
        "resource": "event",
        "operation": "get"
      },
      "name": "Get gcal_id from Notion",
      "type": "n8n-nodes-base.googleCalendar",
      "typeVersion": 1,
      "id": "7b095932-d17b-4022-8178-5e4e7e6f9815",
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "position": [
        750,
        150
      ]
    },
    {
      "parameters": {
        "value1": "={{ $json.id }}",
        "options": {}
      },
      "name": "If Event Exists?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "id": "99335f4f-4d26-444f-83a3-a75d5a9d8212",
      "position": [
        1000,
        150
      ]
    },
    {
      "parameters": {
        "calendarId": "85e8d827fde536807e1317e061a1fa3310c72c6050c933ec0e5d6e4df7bb96ee@group.calendar.google.com",
        "eventId": "={{ $json.id }}",
        "resource": "event",
        "operation": "update",
        "updateFields": {
          "updateFields": [
            {
              "field": "summary",
              "value": "={{ $json.properties.Name.title[0].plain_text }}"
            },
            {
              "field": "start",
              "value": "={{ $json.properties.Date.date.start }}"
            },
            {
              "field": "end",
              "value": "={{ $json.properties.Date.date.end || $json.properties.Date.date.start }}"
            }
          ]
        }
      },
      "name": "Update Google Calendar Event",
      "type": "n8n-nodes-base.googleCalendar",
      "typeVersion": 1,
      "id": "1e16f31e-45e3-4f93-b413-5a02e64c3a2f",
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "position": [
        1250,
        100
      ]
    },
    {
      "parameters": {
        "calendarId": "85e8d827fde536807e1317e061a1fa3310c72c6050c933ec0e5d6e4df7bb96ee@group.calendar.google.com",
        "resource": "event",
        "operation": "create",
        "summary": "={{ $json.properties.Name.title[0].plain_text }}",
        "start": "={{ $json.properties.Date.date.start }}",
        "end": "={{ $json.properties.Date.date.end || $json.properties.Date.date.start }}"
      },
      "name": "Create Google Calendar Event",
      "type": "n8n-nodes-base.googleCalendar",
      "typeVersion": 1,
      "id": "2d14878b-3b32-429a-8b85-d28f09d849b2",
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "position": [
        1250,
        200
      ]
    },
    {
      "parameters": {
        "pageId": "={{ $json.id }}",
        "resource": "page",
        "operation": "update",
        "properties": {
          "gcal_id": {
            "type": "rich_text",
            "rich_text": {
              "content": "={{ $json.id }}"
            }
          }
        }
      },
      "name": "Update Notion with gcal_id",
      "type": "n8n-nodes-base.notion",
      "typeVersion": 1,
      "id": "6a9f4c39-4458-466d-a7b6-17b5e43a9d8c",
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "position": [
        1500,
        150
      ]
    },
    {
      "parameters": {
        "calendarId": "85e8d827fde536807e1317e061a1fa3310c72c6050c933ec0e5d6e4df7bb96ee@group.calendar.google.com",
        "resource": "event",
        "triggerOn": [
          "create",
          "update",
          "delete"
        ],
        "interval": 3
      },
      "name": "Google Calendar Trigger",
      "type": "n8n-nodes-base.googleCalendarTrigger",
      "typeVersion": 1,
      "id": "5f9a4e0a-40a2-4a0b-99d9-95e297a7a9a1",
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "position": [
        250,
        550
      ]
    },
    {
      "parameters": {
        "databaseId": "24ddcbfd883580feab1dfa7270343d5b",
        "resource": "page",
        "operation": "search",
        "filter": {
          "property": "gcal_id",
          "filter": "equals",
          "value": "={{ $json.id }}"
        }
      },
      "name": "Find Notion Page by gcal_id",
      "type": "n8n-nodes-base.notion",
      "typeVersion": 1,
      "id": "e7c65c4d-612b-42e1-8a6e-4e4b7b3b3a24",
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "position": [
        500,
        550
      ]
    },
    {
      "parameters": {
        "value1": "={{ $json.results.length }}",
        "options": {}
      },
      "name": "If Page Found?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "id": "8b584d43-5240-4e3f-91a1-9a7f34f378a8",
      "position": [
        750,
        550
      ]
    },
    {
      "parameters": {
        "pageId": "={{ $json.results[0].id }}",
        "resource": "page",
        "operation": "update",
        "properties": {
          "Name": {
            "type": "title",
            "title": {
              "content": "={{ $json.summary }}"
            }
          },
          "Date": {
            "type": "date",
            "date": {
              "start": "={{ $json.start.dateTime || $json.start.date }}",
              "end": "={{ $json.end.dateTime || $json.end.date }}"
            }
          }
        }
      },
      "name": "Update Notion Page",
      "type": "n8n-nodes-base.notion",
      "typeVersion": 1,
      "id": "b1b1c554-6663-4411-b1e9-467f5c7604d3",
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "position": [
        1000,
        500
      ]
    },
    {
      "parameters": {
        "databaseId": "24ddcbfd883580feab1dfa7270343d5b",
        "resource": "page",
        "operation": "create",
        "parentType": "database",
        "properties": {
          "Name": {
            "type": "title",
            "title": {
              "content": "={{ $json.summary }}"
            }
          },
          "Date": {
            "type": "date",
            "date": {
              "start": "={{ $json.start.dateTime || $json.start.date }}",
              "end": "={{ $json.end.dateTime || $json.end.date }}"
            }
          },
          "gcal_id": {
            "type": "rich_text",
            "rich_text": {
              "content": "={{ $json.id }}"
            }
          }
        }
      },
      "name": "Create Notion Page",
      "type": "n8n-nodes-base.notion",
      "typeVersion": 1,
      "id": "9982a170-c9a9-4a90-8e12-420a442e971a",
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "position": [
        1000,
        600
      ]
    }
  ],
  "connections": {
    "Notion Trigger": {
      "main": [
        [
          {
            "node": "If Notion Item Deleted?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If Notion Item Deleted?": {
      "main": [
        [
          {
            "node": "Delete from Google Calendar",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get gcal_id from Notion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get gcal_id from Notion": {
      "main": [
        [
          {
            "node": "If Event Exists?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If Event Exists?": {
      "main": [
        [
          {
            "node": "Update Google Calendar Event",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create Google Calendar Event",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Google Calendar Event": {
      "main": [
        [
          {
            "node": "Update Notion with gcal_id",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Google Calendar Event": {
      "main": [
        [
          {
            "node": "Update Notion with gcal_id",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Calendar Trigger": {
      "main": [
        [
          {
            "node": "Find Notion Page by gcal_id",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find Notion Page by gcal_id": {
      "main": [
        [
          {
            "node": "If Page Found?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If Page Found?": {
      "main": [
        [
          {
            "node": "Update Notion Page",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create Notion Page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {},
  "staticData": null,
  "tags": [],
  "versionId": null,
  "id": "notion-google-sync-workflow"
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Notion and Google Calendar Sync. Uses notionTrigger, googleCalendar, notion, googleCalendarTrigger. Event-driven trigger; 13 nodes.

Source: https://gist.github.com/benhex22/a87a2b770af5e7d9ad629bfa87d944fc — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Data & Sheets

Sync your Google Contacts with your Notion database.

Google Contacts, HTTP Request, Notion +1
Data & Sheets

Overview Seamlessly transfer your Notion contacts to Google Contacts with organized group labels, simplifying your CRM management.

Notion, Google Contacts, HTTP Request +1
Data & Sheets

Sync Notion Database Pages As Clickup Tasks. Uses notionTrigger, clickUp, clickUpTrigger, notion. Event-driven trigger; 5 nodes.

Notion Trigger, ClickUp, ClickUp Trigger +1
Data & Sheets

This workflow creates/updates ClickUp tasks when Notion database pages are created/updated. All fields in the Notion database are mapped to a ClickUp property.

Notion Trigger, ClickUp, ClickUp Trigger +1
Data & Sheets

Reagendamiento_v2. Uses executeWorkflowTrigger, redis, httpRequest, n8n-nodes-evolution-api. Event-driven trigger; 89 nodes.

Execute Workflow Trigger, Redis, HTTP Request +3