This workflow corresponds to n8n.io template #4634 — 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "8fbd7271-5dc7-4af6-bf6f-d2456745f629",
"name": "Get the Events for the Rest of the Day",
"type": "n8n-nodes-base.googleCalendar",
"onError": "continueErrorOutput",
"position": [
-240,
20
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "ae6ba2b2-d047-4a4c-abe6-c3b1605b22e5",
"name": "Respond with 200",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
260,
-140
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "799e0edd-cec4-4be7-a348-edffe3f2470f",
"name": "Hit this URL from Streamdeck http request button",
"type": "n8n-nodes-base.webhook",
"position": [
-500,
-20
],
"parameters": {},
"typeVersion": 2
},
{
"id": "da4bf348-2f4b-4ad5-bd95-61b966e5d692",
"name": "Push All Meetings 30 Minutes Later",
"type": "n8n-nodes-base.googleCalendar",
"onError": "continueErrorOutput",
"position": [
-20,
-80
],
"parameters": {},
"typeVersion": 1.3,
"alwaysOutputData": true
},
{
"id": "f3336226-00b0-4ab2-b7f4-24dfed0e8d12",
"name": "Push All Meetings 60 Minutes Later",
"type": "n8n-nodes-base.googleCalendar",
"onError": "continueErrorOutput",
"position": [
-20,
300
],
"parameters": {},
"typeVersion": 1.3,
"alwaysOutputData": true
},
{
"id": "33b441d9-7f6f-4718-a6a8-e1f777104020",
"name": "Push All Meetings 15 Minutes Later",
"type": "n8n-nodes-base.googleCalendar",
"onError": "continueErrorOutput",
"position": [
-20,
-460
],
"parameters": {},
"typeVersion": 1.3,
"alwaysOutputData": true
},
{
"id": "10e0b2ec-f720-45a8-b4b7-95bea9369168",
"name": "Get the Events for the Rest of the Day 60",
"type": "n8n-nodes-base.googleCalendar",
"onError": "continueErrorOutput",
"position": [
-240,
400
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "47044dae-9034-4aa7-baad-f7d12b31c48e",
"name": "Hit this URL from Streamdeck http request button 60",
"type": "n8n-nodes-base.webhook",
"position": [
-500,
360
],
"parameters": {},
"typeVersion": 2
},
{
"id": "b1fe27b1-648b-4928-87fa-6d54c28cc9aa",
"name": "Hit this URL from Streamdeck http request button 15",
"type": "n8n-nodes-base.webhook",
"position": [
-500,
-400
],
"parameters": {},
"typeVersion": 2
},
{
"id": "5df079fa-6e7d-4769-abd4-4957ec6c71d0",
"name": "Get the Events for the Rest of the Day 15",
"type": "n8n-nodes-base.googleCalendar",
"onError": "continueErrorOutput",
"position": [
-240,
-360
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "777ec669-c2dd-4414-a244-d92feb8a491c",
"name": "Respond with 500",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
260,
40
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "550337d6-a181-4d05-b730-a53bcfd3a370",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-880,
-340
],
"parameters": {
"content": ""
},
"typeVersion": 1
}
],
"connections": {
"Push All Meetings 15 Minutes Later": {
"main": [
[
{
"node": "Respond with 200",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond with 500",
"type": "main",
"index": 0
}
]
]
},
"Push All Meetings 30 Minutes Later": {
"main": [
[
{
"node": "Respond with 200",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond with 500",
"type": "main",
"index": 0
}
]
]
},
"Push All Meetings 60 Minutes Later": {
"main": [
[
{
"node": "Respond with 200",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond with 500",
"type": "main",
"index": 0
}
]
]
},
"Get the Events for the Rest of the Day": {
"main": [
[
{
"node": "Push All Meetings 30 Minutes Later",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond with 500",
"type": "main",
"index": 0
}
]
]
},
"Get the Events for the Rest of the Day 15": {
"main": [
[
{
"node": "Push All Meetings 15 Minutes Later",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond with 500",
"type": "main",
"index": 0
}
]
]
},
"Get the Events for the Rest of the Day 60": {
"main": [
[
{
"node": "Push All Meetings 60 Minutes Later",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond with 500",
"type": "main",
"index": 0
}
]
]
},
"Hit this URL from Streamdeck http request button": {
"main": [
[
{
"node": "Get the Events for the Rest of the Day",
"type": "main",
"index": 0
}
]
]
},
"Hit this URL from Streamdeck http request button 15": {
"main": [
[
{
"node": "Get the Events for the Rest of the Day 15",
"type": "main",
"index": 0
}
]
]
},
"Hit this URL from Streamdeck http request button 60": {
"main": [
[
{
"node": "Get the Events for the Rest of the Day 60",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator?
Source: https://n8n.io/workflows/4634/ — 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.
Connect a Vapi AI voice agent to Google Calendar to capture contact details and auto-book appointments. The agent asks for name, address, service type, and a preferred time. The workflow checks availa
github code Try yourself
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
jump-section: Comment Fix Pipeline. Uses httpRequest. Webhook trigger; 24 nodes.
This workflow provides a universal webhook endpoint that dynamically routes incoming requests to different subflows. It allows you to manage multiple API-like endpoints from a single entry point, whil