AutomationFlowsEmail & Gmail › Proceeding

Proceeding

Proceeding. Uses gmail, googleTasks, googleCalendar, notion. Webhook trigger; 11 nodes.

Webhook trigger★★★★☆ complexity11 nodesGmailGoogle TasksGoogle CalendarNotion
Email & Gmail Trigger: Webhook Nodes: 11 Complexity: ★★★★☆ Added:

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 →

Download .json
{
  "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": []
}
Pro

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 →

More Email & Gmail workflows → · Browse all categories →

Related workflows

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

Email & Gmail

Complete Calendly automation that handles confirmations, cancellations and reschedules in a single workflow. WHAT IT DOES:

Google Sheets, Google Calendar, Slack +1
Email & Gmail

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

Google Drive, Slack, Gmail +2
Email & Gmail

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

HTTP Request, Slack, Notion +1
Email & Gmail

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

Microsoft Teams, Discord, Gmail +3
Email & Gmail

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

Google Calendar, Gmail