This workflow follows the Gmail → Google Calendar recipe pattern — see all workflows that pair these two integrations.
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 →
{
"name": "Proceeding",
"nodes": [
{
"parameters": {
"jsCode": "const body = $input.first().json.body || $input.first().json;\n\nif (!body.title) throw new Error('title\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.');\nif (!body.summary) throw new Error('summary\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.');\n\nreturn [{\n json: {\n body: {\n title: body.title,\n summary: body.summary,\n tags: Array.isArray(body.tags) ? body.tags : [],\n syncedAt: body.syncedAt || new Date().toISOString(),\n key_points: Array.isArray(body.key_points) ? body.key_points : [],\n decisions: Array.isArray(body.decisions) ? body.decisions : [],\n action_items: Array.isArray(body.action_items) ? body.action_items : [],\n transcript: body.transcript || '',\n recipientEmail: body.recipientEmail || body.email || ''\n }\n }\n}];"
},
"id": "643b0d18-1421-48c6-b38d-c3cbe1f420d5",
"name": "Validate Input",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-2928,
464
]
},
{
"parameters": {
"sendTo": "={{ $node['Validate Input'].json.body.recipientEmail || $env.DEFAULT_RECIPIENT_EMAIL }}",
"subject": "={{ '[\ud68c\uc758\ub85d] ' + $node['Validate Input'].json.body.title }}",
"message": "={{ '\ud68c\uc758\ub85d\uc774 Notion\uc5d0 \uc800\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\\n\\n[\ud68c\uc758 \uc81c\ubaa9]\\n' + $node['Validate Input'].json.body.title + '\\n\\n[\uc694\uc57d]\\n' + $node['Validate Input'].json.body.summary + '\\n\\n[\ud575\uc2ec \ub17c\uc758]\\n' + ($node['Validate Input'].json.body.key_points?.map(i => '- ' + i).join('\\n') || '\uc5c6\uc74c') + '\\n\\n[\uacb0\uc815\uc0ac\ud56d]\\n' + ($node['Validate Input'].json.body.decisions?.map(i => '- ' + i).join('\\n') || '\uc5c6\uc74c') + '\\n\\n[\uc561\uc158 \uc544\uc774\ud15c]\\n' + ($node['Validate Input'].json.body.action_items?.map(i => '- ' + i.task + ' / \ub2f4\ub2f9: ' + (i.assignee || '\ubbf8\uc815') + ' / \ub9c8\uac10: ' + (i.due_date || '\ubbf8\uc815')).join('\\n') || '\uc5c6\uc74c') }}",
"options": {}
},
"id": "8409a9ed-8830-4846-82b5-ec64bbab686e",
"name": "Gmail - Send Summary",
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
-3152,
800
]
},
{
"parameters": {
"jsCode": "const body = $node['Validate Input'].json.body;\nconst actionItems = body.action_items || [];\n\nif (actionItems.length === 0) {\n return [{ json: { skip: true, message: '\uc561\uc158 \uc544\uc774\ud15c \uc5c6\uc74c', meetingTitle: body.title } }];\n}\n\nreturn actionItems.map((item) => ({\n json: {\n skip: false,\n task: item.task || '\uc791\uc5c5\uba85 \uc5c6\uc74c',\n assignee: item.assignee || '\ubbf8\uc815',\n due_date: item.due_date || null,\n meetingTitle: body.title || '\ud68c\uc758 \uc81c\ubaa9 \uc5c6\uc74c',\n summary: body.summary || ''\n }\n}));"
},
"id": "899cae86-f17f-4a5e-b2a6-cc40e756fbb2",
"name": "Prepare Action Items",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-3008,
800
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 1
},
"conditions": [
{
"id": "f6e6a4c0-9ed8-45d0-9d7c-9199788851a7",
"leftValue": "={{ $json.skip }}",
"rightValue": true,
"operator": {
"type": "boolean",
"operation": "notEquals"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "188111e5-0327-454f-8000-d25055488f9c",
"name": "IF - Has Action Items",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
-2832,
800
]
},
{
"parameters": {
"task": "={{ $json.task }}",
"additionalFields": {
"notes": "={{ '\ud68c\uc758: ' + $json.meetingTitle + '\\n\ub2f4\ub2f9\uc790: ' + $json.assignee + '\\n\ub9c8\uac10\uc77c: ' + ($json.due_date || '\ubbf8\uc815') + '\\n\\n\uc694\uc57d: ' + $json.summary }}"
}
},
"id": "c093517f-7c0c-4b66-9a23-55ae2067226b",
"name": "Google Tasks - Create Task",
"type": "n8n-nodes-base.googleTasks",
"typeVersion": 1,
"position": [
-2512,
704
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 1
},
"conditions": [
{
"id": "fbf47584-f8bf-4bd6-82e0-2e832375ba30",
"leftValue": "={{ $json.due_date }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "693c5040-f1aa-40f9-b3dc-0cdfbe1f7a95",
"name": "IF - Has Due Date",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
-2368,
704
]
},
{
"parameters": {
"calendar": {
"__rl": true,
"value": "={{ $env.GOOGLE_CALENDAR_ID }}",
"mode": "list",
"cachedResultName": "primary"
},
"start": "={{ $json.due_date }}",
"end": "={{ $json.due_date }}",
"additionalFields": {
"description": "={{ '\ud68c\uc758: ' + $json.meetingTitle + '\\n\ub2f4\ub2f9\uc790: ' + $json.assignee + '\\n\uc694\uc57d: ' + $json.summary }}",
"summary": "={{ $json.task }}"
}
},
"id": "87da0cdf-a7df-41a2-99a6-dc9e37dd705c",
"name": "Google Calendar - Create Event",
"type": "n8n-nodes-base.googleCalendar",
"typeVersion": 1.3,
"position": [
-2128,
688
]
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={\n \"success\": true,\n \"message\": \"\ud68c\uc758\ub85d \uc800\uc7a5 \ubc0f \uc790\ub3d9\ud654 \uc694\uccad\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\",\n \"title\": \"{{ $node['Validate Input'].json.body.title }}\"\n}",
"options": {}
},
"id": "b28d997b-f0b1-490f-8914-4f076319ffd0",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
-1856,
1008
]
},
{
"parameters": {
"httpMethod": "POST",
"path": "start-docs",
"responseMode": "responseNode",
"options": {}
},
"id": "62bf704e-323d-4e6a-9eb6-ebc49c4c8bcb",
"name": "Webhook1",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-3184,
464
]
},
{
"parameters": {
"resource": "databasePage",
"databaseId": {
"__rl": true,
"value": "={{ $env.NOTION_DATABASE_ID }}",
"mode": "list",
"cachedResultName": "\ud68c\uc758\ub85d \uc800\uc7a5",
"cachedResultUrl": ""
},
"propertiesUi": {
"propertyValues": [
{
"key": "\ud68c\uc758 \uc81c\ubaa9|title",
"title": "={{ $json.body.title }}"
},
{
"key": "\uc694\uc57d|rich_text",
"textContent": "={{ $json.body.summary }}"
},
{
"key": "\ud0dc\uadf8|multi_select",
"multiSelectValue": "={{ $json.body.tags }}"
},
{
"key": "\ud68c\uc758 \uc77c\uc790|date",
"date": "={{ $json.body.syncedAt }}",
"timezone": "Asia/Seoul"
}
]
},
"blockUi": {
"blockValues": [
{
"type": "heading_1",
"textContent": "\ud83d\udccc \ud68c\uc758 \uc694\uc57d"
},
{
"textContent": "={{ $json.body.summary }}"
},
{
"type": "heading_2",
"textContent": "\ud83d\udca1 \ud575\uc2ec \ub17c\uc758 \ubc0f \uacb0\uc815\uc0ac\ud56d"
},
{
"textContent": "=[\ud575\uc2ec \ub17c\uc758 \ub0b4\uc6a9]\n{{ $json.body.key_points && $json.body.key_points.length > 0 ? $json.body.key_points.map(i => '\u2022 ' + i).join('\\n') : '\uc5c6\uc74c' }}\n\n[\uacb0\uc815\uc0ac\ud56d]\n{{ $json.body.decisions && $json.body.decisions.length > 0 ? $json.body.decisions.map(i => '\u2022 ' + i).join('\\n') : '\uc5c6\uc74c' }}"
},
{
"type": "heading_2",
"textContent": "\ud83d\udccb \ub2f4\ub2f9\uc790\ubcc4 \uc561\uc158 \uc544\uc774\ud15c"
},
{
"textContent": "={{ $json.body.action_items && $json.body.action_items.length > 0 ? $json.body.action_items.map(i => '\u2610 ' + i.task + ' (\ub2f4\ub2f9: ' + (i.assignee || '\ubbf8\uc815') + ' | \ub9c8\uac10: ' + (i.due_date || '\ubbf8\uc815') + ')').join('\\n') : '\uc5c6\uc74c' }}"
},
{
"type": "heading_2",
"textContent": "\ud83c\udf99\ufe0f \uc804\uccb4 \ub300\ud654 \uc2a4\ud06c\ub9bd\ud2b8"
},
{
"textContent": "={{ $json.body.transcript }}"
}
]
},
"options": {}
},
"id": "92ef62ac-a20c-4639-9a83-eb72aa1bd849",
"name": "Create a database page1",
"type": "n8n-nodes-base.notion",
"typeVersion": 2.2,
"position": [
-2624,
464
]
},
{
"parameters": {
"content": "\uac80\uc99d \ud6c4 \uc5c6\uc744 \uc2dc \uc624\ub958 \ubc1c\uc1a1 flow \ucd94\uac00\n"
},
"type": "n8n-nodes-base.stickyNote",
"position": [
-2976,
240
],
"typeVersion": 1,
"id": "bed2e27d-0d5d-4109-b998-532704a2b80f",
"name": "Sticky Note"
}
],
"connections": {
"Validate Input": {
"main": [
[
{
"node": "Create a database page1",
"type": "main",
"index": 0
}
]
]
},
"Gmail - Send Summary": {
"main": [
[
{
"node": "Prepare Action Items",
"type": "main",
"index": 0
}
]
]
},
"Prepare Action Items": {
"main": [
[
{
"node": "IF - Has Action Items",
"type": "main",
"index": 0
}
]
]
},
"IF - Has Action Items": {
"main": [
[
{
"node": "Google Tasks - Create Task",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Google Tasks - Create Task": {
"main": [
[
{
"node": "IF - Has Due Date",
"type": "main",
"index": 0
}
]
]
},
"IF - Has Due Date": {
"main": [
[
{
"node": "Google Calendar - Create Event",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Google Calendar - Create Event": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Webhook1": {
"main": [
[
{
"node": "Validate Input",
"type": "main",
"index": 0
}
]
]
},
"Create a database page1": {
"main": [
[
{
"node": "Gmail - Send Summary",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate"
},
"versionId": "7456c1b2-0756-4fdd-991d-08a9384a9afd",
"id": "dOJ4cFtahfcW6FnI",
"tags": []
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Proceeding. Uses gmail, googleTasks, googleCalendar, notion. Webhook trigger; 11 nodes.
Source: https://github.com/GAAC-IA/Auto-proceeding/blob/5adf50c3ca3a0a723da4716ea4ab583e5cfa883f/n8n/Proceeding.json — 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.
Complete Calendly automation that handles confirmations, cancellations and reschedules in a single workflow. WHAT IT DOES:
Automate your GoHighLevel (GHL) client onboarding process from the moment a deal is marked as “Won.” This workflow seamlessly generates client folders in Google Drive, duplicates contract and kickoff
Fully automates your Day 0–30 employee onboarding sequence the moment HR submits a webhook. No manual steps, no missed tasks. 🔐 Provisions Google Workspace account via Admin API 💬 Posts a personalised
This n8n workflow is designed for businesses, consultants, and service providers who want to automate their meeting scheduling process. The workflow creates a seamless booking system that can handle m
Tired of automated booking tools cluttering your calendar with spam or overlapping meetings? SyncPoint is a “Smart Gatekeeper” that checks your availability and asks for your manual approval via email