This workflow corresponds to n8n.io template #2528 — we link there as the canonical source.
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 →
{
"id": "0HVA2TOmkdNpH5DP",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Google calendar to Outlook",
"tags": [],
"nodes": [
{
"id": "e7e75d4a-ee5a-4ee7-b69d-71d8eb51fe55",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
920,
800
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineAll"
},
"typeVersion": 3
},
{
"id": "6e159340-910c-4c1e-9e6b-c6ef679309be",
"name": "Incoming Event Trigger",
"type": "n8n-nodes-base.googleCalendarTrigger",
"position": [
500,
360
],
"parameters": {
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "eventCreated",
"calendarId": {
"__rl": true,
"mode": "list",
"value": "user@example.com",
"cachedResultName": "Your Name"
}
},
"credentials": {
"googleCalendarOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "7ffb13c3-7d16-4bd8-aed0-7f6378394a1c",
"name": "Cancel Event Trigger",
"type": "n8n-nodes-base.googleCalendarTrigger",
"position": [
280,
600
],
"parameters": {
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "eventCancelled",
"calendarId": {
"__rl": true,
"mode": "list",
"value": "user@example.com",
"cachedResultName": "Your Name"
}
},
"credentials": {
"googleCalendarOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "f0e81f5b-a813-4e03-9400-a97842b6b9b5",
"name": "Create Outlook Event",
"type": "n8n-nodes-base.microsoftOutlook",
"position": [
740,
360
],
"parameters": {
"subject": "={{ \"From private: \" + $json.summary }}",
"resource": "event",
"operation": "create",
"calendarId": {
"__rl": true,
"mode": "list",
"value": "AAMkAGUxOTQ4ZmU0LWMxYjUtNDRiZi1iYjdlLTNmYTFhOWQ3MWZhNwBGAAAAAABlzj22ZOwJQZOQBjwNTK5fBwBW9yW5dIfsR51ayk6B4bZSAAAAAAEGAABW9yW5dIfsR51ayk6B4bZSAAAAAeGaAAA=",
"cachedResultName": "Calendar"
},
"endDateTime": "={{ $json.end.dateTime != undefined ? $json.end.dateTime : $json.end.date }}",
"startDateTime": "={{ $json.start.dateTime != undefined ? $json.start.dateTime : $json.start.date }}",
"additionalFields": {
"body": "={{ $json.description != undefined ? $json.description + \"\\n\" : \"\" + $json.htmlLink }}"
}
},
"credentials": {
"microsoftOutlookOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "0e7c3511-cb4a-46a7-937e-57bdf6bdc00c",
"name": "Get Event to Cancel",
"type": "n8n-nodes-base.microsoftOutlook",
"position": [
520,
600
],
"parameters": {
"limit": 1,
"filters": {
"custom": "=contains(subject, '{{ $json.summary }}')"
},
"resource": "event",
"calendarId": {
"__rl": true,
"mode": "list",
"value": "AAMkAGUxOTQ4ZmU0LWMxYjUtNDRiZi1iYjdlLTNmYTFhOWQ3MWZhNwBGAAAAAABlzj22ZOwJQZOQBjwNTK5fBwBW9yW5dIfsR51ayk6B4bZSAAAAAAEGAABW9yW5dIfsR51ayk6B4bZSAAAAAeGaAAA=",
"cachedResultName": "Calendar"
},
"fromAllCalendars": false
},
"credentials": {
"microsoftOutlookOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "6540c5f5-963b-4260-8c10-1c7f5bb75315",
"name": "Delete Event",
"type": "n8n-nodes-base.microsoftOutlook",
"position": [
780,
600
],
"parameters": {
"eventId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"resource": "event",
"operation": "delete",
"calendarId": {
"__rl": true,
"mode": "list",
"value": "AAMkAGUxOTQ4ZmU0LWMxYjUtNDRiZi1iYjdlLTNmYTFhOWQ3MWZhNwBGAAAAAABlzj22ZOwJQZOQBjwNTK5fBwBW9yW5dIfsR51ayk6B4bZSAAAAAAEGAABW9yW5dIfsR51ayk6B4bZSAAAAAeGaAAA=",
"cachedResultName": "Calendar"
}
},
"credentials": {
"microsoftOutlookOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "03cf261c-4c26-4db1-a335-e249c0f590ec",
"name": "Send E-mail with details",
"type": "n8n-nodes-base.microsoftOutlook",
"position": [
1060,
620
],
"parameters": {
"subject": "={{ $json.subject + \" Cancelled\" }}",
"bodyContent": "<h1>Event cancelled via Google Calendar</h1>",
"toRecipients": "user@example.com",
"additionalFields": {
"bodyContentType": "html"
}
},
"credentials": {
"microsoftOutlookOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "34dc3a4d-0db5-4efc-8814-c94d3468540a",
"connections": {
"Merge": {
"main": [
[
{
"node": "Send E-mail with details",
"type": "main",
"index": 0
}
]
]
},
"Delete Event": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Get Event to Cancel": {
"main": [
[
{
"node": "Delete Event",
"type": "main",
"index": 0
},
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Cancel Event Trigger": {
"main": [
[
{
"node": "Get Event to Cancel",
"type": "main",
"index": 0
}
]
]
},
"Incoming Event Trigger": {
"main": [
[
{
"node": "Create Outlook Event",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
googleCalendarOAuth2ApimicrosoftOutlookOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow is used as a bridge between your private Google Calendar to your Work Outlook Calendar. The same mentality can be used with other calendar types.
Source: https://n8n.io/workflows/2528/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Google calendar to Outlook. Uses googleCalendarTrigger, microsoftOutlook. Event-driven trigger; 7 nodes.
Sync New Calendly Bookings to Easy8 CRM with Comment, Sales Activity, and Outlook Email
This n8n workflow sends a real-time Slack notification when a user submits a contact form on your website. It also optionally sends a confirmation email via either Outlook or Gmail.
Get notified if the actual data release is positive or negative for the relevant currency. Use the Telegram chat message about the news release as a trigger to open a trading position in MetaTrader 4.
Sync your Google Calendar events with Google Sheets and get daily Slack summaries with meeting statistics. FEATURES: