This workflow follows the Form Trigger → Gmail 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": "09_Storage_GoogleDrives_meeting_note",
"nodes": [
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "fd8aa648-3075-44c5-85fe-e616703d242d",
"leftValue": "={{ $json.meetingNoteUrl }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-864,
288
],
"id": "0e2d4156-9b15-449b-a08a-a4f8b26c1ef9",
"name": "If"
},
{
"parameters": {
"operation": "copy",
"fileId": {
"__rl": true,
"value": "1zgpbWKLaNF_MS4BQxFAnRmDLVspQ2AKR61_GMtKHRmY",
"mode": "list",
"cachedResultName": "meetingAutoSample",
"cachedResultUrl": "https://docs.google.com/document/d/1zgpbWKLaNF_MS4BQxFAnRmDLVspQ2AKR61_GMtKHRmY/edit?usp=drivesdk"
},
"name": "=\ud68c\uc758\ub85d \uc790\ub3d9\uc694\uc57d ( {{ $json.submittedAt }} )",
"sameFolder": false,
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"folderId": {
"__rl": true,
"value": "1zMWVilGdGue4ScwPa6v8-_7xpXV8nuD2",
"mode": "list",
"cachedResultName": "prompts",
"cachedResultUrl": "https://drive.google.com/drive/folders/1zMWVilGdGue4ScwPa6v8-_7xpXV8nuD2"
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
-656,
192
],
"id": "b432dea6-95ab-44c5-9c59-d0dafd5b56e1",
"name": "Copy file",
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "update",
"documentURL": "={{ $('Copy file').item.json.id }}",
"actionsUi": {
"actionFields": [
{
"action": "replaceAll",
"text": "=[\ud68c\uc758\ub85d]",
"replaceText": "={{ $json.content.parts[0].text }}"
},
{
"action": "replaceAll",
"text": "[\ud68c\uc758\uc77c\uc2dc]",
"replaceText": "={{ $('meetingUrlInput').item.json.meetingDate }}"
},
{
"action": "replaceAll",
"text": "[\ucc38\uc11d\uc790\uc815\ubcf4]",
"replaceText": "={{ $('meetingUrlInput').item.json.participants }}"
}
]
}
},
"type": "n8n-nodes-base.googleDocs",
"typeVersion": 2,
"position": [
-96,
176
],
"id": "1eddffa8-72e4-4a98-9e98-7f614981f29e",
"name": "Update a document",
"credentials": {
"googleDocsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"name": "={{ $('Copy file').item.json.name }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"folderId": {
"__rl": true,
"value": "1zMWVilGdGue4ScwPa6v8-_7xpXV8nuD2",
"mode": "list",
"cachedResultName": "prompts",
"cachedResultUrl": "https://drive.google.com/drive/folders/1zMWVilGdGue4ScwPa6v8-_7xpXV8nuD2"
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
320,
176
],
"id": "b7be50e7-a841-45d9-8c53-94655fa962e8",
"name": "Upload file",
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "download",
"fileId": {
"__rl": true,
"value": "={{ $json.documentId }}",
"mode": "id"
},
"options": {
"googleFileConversion": {
"conversion": {
"docsToFormat": "application/pdf",
"drawingsToFormat": "application/pdf",
"sheetsToFormat": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
}
}
}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
112,
176
],
"id": "adc48b05-6c1f-4d1f-9b32-ded511865c6e",
"name": "Download file",
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"__rl": true,
"value": "https://docs.google.com/spreadsheets/d/16KD6lk1KLzm-gxrYgFv7bgfXUlntNLddS9TAok-ZogM/edit?usp=sharing",
"mode": "url"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Sheet1",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/16KD6lk1KLzm-gxrYgFv7bgfXUlntNLddS9TAok-ZogM/edit#gid=0"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"keyValue": "={{ $json.name }}",
"\uc8fc\uad00\uc790": "={{ $('meetingUrlInput').item.json.hostEmail }}",
"\ucc38\uac00\uc790\uc815\ubcf4": "={{ $('meetingUrlInput').item.json.participants }}",
"\ud68c\uc758\ub85d": "={{ $json.webViewLink }}"
},
"matchingColumns": [
"keyValue"
],
"schema": [
{
"id": "keyValue",
"displayName": "keyValue",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "\uc8fc\uad00\uc790",
"displayName": "\uc8fc\uad00\uc790",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "\ucc38\uac00\uc790\uc815\ubcf4",
"displayName": "\ucc38\uac00\uc790\uc815\ubcf4",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "\ud68c\uc758\ub85d",
"displayName": "\ud68c\uc758\ub85d",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
528,
176
],
"id": "84e4a291-daac-45df-8133-46eb23421cef",
"name": "Append or update row in sheet",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sendTo": "={{ $('meetingUrlInput').item.json.hostEmail }}",
"subject": "=\ud68c\uc758\ub85d \uc694\uc57d \uc11c\ube44\uc2a4 \uc54c\ub9bc",
"message": "={{ $('meetingUrlInput').item.json.hostEmail }} \ub2d8 meetingNoteUrl\uc774 \ub204\ub77d\ub418\uc5c8\uc2b5\ub2c8\ub2e4.",
"options": {}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
-656,
384
],
"id": "d39be28e-3f10-4667-a8dd-e00903576f4d",
"name": "Send a message",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "models/gemini-2.5-flash",
"mode": "list",
"cachedResultName": "models/gemini-2.5-flash"
},
"messages": {
"values": [
{
"content": "=\ud68c\uc758\uc5d0 \ucc38\uc11d\ud55c \uc720\uc5b4\ubbf8\ub514\uc5b4(\ub9c8\ucf00\ud305 \uc5d0\uc774\uc804\uc2dc) \uc2e4\ubb34\ub2f4\ub2f9\uc790\uc785\ub2c8\ub2e4.\n\n\uc804\ub2ec\ub4dc\ub9b0 \ub9c1\ud06c\uc758 \ud68c\uc758 \ub179\ucde8\ub85d\uc73c\ub85c \ud074\ub77c\uc774\uc5b8\ud2b8 \ubbf8\ud305 \ud68c\uc758\ub85d \uc791\uc131.\n**\ud68c\uc758\ub85d \uc591\uc2dd**\uc740 \uc544\ub798 docs \ubb38\uc11c\uc5d0 \uc5c5\ub370\uc774\ud2b8 \ud615\uc2dd\uc73c\ub85c \ucd9c\ub825. \n\uc778\uc6a9/\ucd9c\ucc98 \ud45c\uc2dc \uc5c6\uc774 \ub0b4\uc6a9\ub9cc \uc54c\ub824\uc8fc\uc138\uc694.\n\n\uc720\uc5b4\ubbf8\ub514\uc5b4\uc758 \ub2f4\ub2f9\uc790\ub294 \uae40\uc9c4\ud604 \ucea0\ud398\uc778 \uc804\ub7b5\ud300\uc7a5\uc73c\ub85c \ubcc0\uacbd\ud558\uc5ec \uc791\uc131. (\uae40\ubbfc\uc900 \ucea0\ud398\uc778 \uc804\ub7b5\ud300\uc7a5, \uc774\uc218\uc601 \ud06c\ub9ac\uc5d0\uc774\ud2f0\ube0c \ub514\ub809\ud130\ub294 \uc0ad\uc81c)\n\n\ub179\ucde8\ud68c\uc758\ub85d: {{ $('meetingUrlInput').item.json.meetingNoteUrl }}\n\n\n[**\ud68c\uc758\ub85d \uc591\uc2dd**|docs format]\n# [\ud504\ub85c\uc81d\ud2b8 \uba85] \ud074\ub77c\uc774\uc5b8\ud2b8 \ubbf8\ud305 \ud68c\uc758\ub85d\n\n\n**\ud68c\uc758 \uc77c\uc2dc**: 202X\ub144 XX\uc6d4 XX\uc77c (\uc694\uc77c) OO:OO ~ OO:OO (\ucd1d X\uc2dc\uac04)\n**\ud68c\uc758 \uc7a5\uc18c**: (\uc608: OO\ube4c\ub529 \ub300\ud68c\uc758\uc2e4 / \uc628\ub77c\uc778 Zoom) \n**\uc791\uc131\uc790**: [\uc774\ub984/\uc9c1\ucc45]\n**\ubc30\ud3ec\uc77c**: 202X\ub144 XX\uc6d4 XX\uc77c\n\n---\n\n## 1. \ucc38\uc11d\uc790 \uc815\ubcf4\n\n[\ucc38\uc11d\uc790 \uc815\ubcf4]\n\n---\n\n## 2. \ud68c\uc758 \uc548\uac74 (Agenda)\n\n* (\uc608\uc2dc)\n 1. \uc9c0\ub09c Action Item \ub9ac\ubdf0 (5\ubd84)\n 2. [\ucea0\ud398\uc778 \uba85] \uc911\uac04 \uc131\uacfc \ubcf4\uace0 (20\ubd84)\n 3. \ucc28\uc8fc \uc2e4\ud589\uc548 (\uad11\uace0 \uc18c\uc7ac \ubc0f \ub9e4\uccb4 \uc6b4\uc601) \ub17c\uc758 (25\ubd84)\n 4. \uc774\uc288 \ubc0f \uae30\ud0c0 \uc0ac\ud56d \ub17c\uc758 (10\ubd84)\n\n---\n\n## 3. \uc8fc\uc694 \ub17c\uc758 \ub0b4\uc6a9 (Discussion)\n\n* **[\uc548\uac74 1. \uc9c0\ub09c Action Item \ub9ac\ubdf0]**\n * (\ub0b4\uc6a9) \uc9c0\ub09c \ud68c\uc758(X/XX)\uc5d0\uc11c \uacb0\uc815\ub41c 'A \uc18c\uc7ac \uc2dc\uc548 \uc804\ub2ec' \uac74 \uc644\ub8cc\ub428.\n * (\ub0b4\uc6a9) 'B \ub9e4\uccb4 \ud6a8\uc728 \ubd84\uc11d \ub9ac\ud3ec\ud2b8' \uae08\uc77c \uc624\uc804 \uacf5\uc720 \uc644\ub8cc. \ud074\ub77c\uc774\uc5b8\ud2b8 \uce21 \ud655\uc778 \uc608\uc815.\n\n* **[\uc548\uac74 2. [\ucea0\ud398\uc778 \uba85] \uc911\uac04 \uc131\uacfc \ubcf4\uace0 (X/XX ~ X/XX)]**\n * (\uc5d0\uc774\uc804\uc2dc) \ucea0\ud398\uc778 \ud575\uc2ec \uc131\uacfc(KPI)\uc778 'OO' \uc218\uce58 X% \ub2ec\uc131. \uc8fc\uc694 \ud0c0\uac9f \ub3c4\ub2ec\ub960 \ubaa9\ud45c\uce58 \ucd08\uacfc \ub2ec\uc131.\n * (\uc5d0\uc774\uc804\uc2dc) A \ub9e4\uccb4 \ub300\ube44 B \ub9e4\uccb4 \ud6a8\uc728(ROAS)\uc774 X% \ub192\uac8c \ub098\ud0c0\ub0a8. (\uc0c1\uc138 \ub9ac\ud3ec\ud2b8 \ubcc4\ucca8)\n * (\ud074\ub77c\uc774\uc5b8\ud2b8) C \ud0c0\uac9f \uadf8\ub8f9\uc5d0\uc11c\uc758 \uc804\ud658\uc728\uc774 \uc608\uc0c1\ubcf4\ub2e4 \ub0ae\uc740 \uc6d0\uc778 \ubd84\uc11d \uc694\uccad.\n * (\ud074\ub77c\uc774\uc5b8\ud2b8) \uc131\uacfc\uac00 \uc88b\uc740 B \ub9e4\uccb4 \uc18c\uc7ac \ucd94\uac00 \uc544\uc774\ub514\uc5b4 \uc81c\uc548 \uc694\uccad.\n\n* **[\uc548\uac74 3. \ucc28\uc8fc \uc2e4\ud589\uc548 \ub17c\uc758]**\n * (\uc5d0\uc774\uc804\uc2dc) B \ub9e4\uccb4 \ud6a8\uc728 \uadf9\ub300\ud654\ub97c \uc704\ud55c \uc2e0\uaddc \uc18c\uc7ac \uc2dc\uc548 3\uc885 \uc81c\uc548. (\uc2dc\uc548 \ubcc4\ucca8)\n * (\ud074\ub77c\uc774\uc5b8\ud2b8) 2\ubc88 \uc2dc\uc548\uc744 \uba54\uc778\uc73c\ub85c \ud558\ub418, 'OOO' \ubb38\uad6c \uc218\uc815\uc744 \uc694\uccad.\n * (\ub17c\uc758) C \ud0c0\uac9f \uadf8\ub8f9 \ubc18\uc751\ub960 \uac1c\uc120\uc744 \uc704\ud574 'XXX' \uba54\uc2dc\uc9c0\ub97c \uac15\uc870\ud558\ub294 \ud504\ub85c\ubaa8\uc158 \uae30\ud68d \ub17c\uc758.\n\n* **[\uc548\uac74 4. \uc774\uc288 \ubc0f \uae30\ud0c0 \uc0ac\ud56d]**\n * (\ud074\ub77c\uc774\uc5b8\ud2b8) \uacbd\uc7c1\uc0ac 'YYY'\uc5d0\uc11c \uc720\uc0ac \ud504\ub85c\ubaa8\uc158 \uc2dc\uc791. \ub300\uc751 \ubc29\uc548 \ub17c\uc758 \ud544\uc694.\n * (\uc5d0\uc774\uc804\uc2dc) \uc8fc\ub9d0 \uc774\uc288 \ubc1c\uc0dd \uc2dc \ube44\uc0c1 \uc5f0\ub77d\ub9dd \uc7ac\ud655\uc778.\n\n---\n\n## 4. \uacb0\uc815 \uc0ac\ud56d \ubc0f Action Item\n\n*\ud68c\uc758\uc5d0\uc11c \uacb0\uc815\ub41c \uc0ac\ud56d\uacfc \ud5a5\ud6c4 \uc870\uce58 \uacc4\ud68d\uc744 \uba85\ud655\ud788 \uae30\uc7ac\ud569\ub2c8\ub2e4.*\n\n| No. | Action Item (\uc218\ud589 \uc5c5\ubb34) | \ub2f4\ub2f9\uc790 (\uc18c\uc18d) | \uae30\ud55c (Due) | \ube44\uace0 (\uc0c1\ud0dc) |\n| :--- | :--- | :--- | :--- | :--- |\n| 1 | C \ud0c0\uac9f \uadf8\ub8f9 \uc804\ud658\uc728 \uc800\uc870 \uc6d0\uc778 \ubd84\uc11d \ub9ac\ud3ec\ud2b8 \uc804\ub2ec | OOO \ub9e4\ub2c8\uc800 (\uc5d0\uc774\uc804\uc2dc) | X\uc6d4 XX\uc77c (\uae08) | \uc9c4\ud589 \uc911 |\n| 2 | B \ub9e4\uccb4 \ucd94\uac00 \uc18c\uc7ac \uc544\uc774\ub514\uc5b4 (3\uc885) \uae30\ud68d\uc548 \uc804\ub2ec | OOO AE (\uc5d0\uc774\uc804\uc2dc) | X\uc6d4 XX\uc77c (\uc218) | \uc2e0\uaddc |\n| 3 | 2\ubc88 \uc2dc\uc548 \ubb38\uad6c \uc218\uc815\ubcf8 (V2) \uc804\ub2ec | OOO \ub514\uc790\uc774\ub108 (\uc5d0\uc774\uc804\uc2dc) | X\uc6d4 XX\uc77c (\ud654) | \uc2e0\uaddc |\n| 4 | B \ub9e4\uccb4 \ucd94\uac00 \uc18c\uc7ac \ucd5c\uc885 \ucee8\ud38c | OOO \ud300\uc7a5 (\ud074\ub77c\uc774\uc5b8\ud2b8) | X\uc6d4 XX\uc77c (\ubaa9) | \uc608\uc815 |\n| 5 | \uacbd\uc7c1\uc0ac 'YYY' \ub3d9\ud5a5 \ubd84\uc11d \ubc0f \ub300\uc751 \uc804\ub7b5 \uc81c\uc548 | OOO PM (\uc5d0\uc774\uc804\uc2dc) | X\uc6d4 XX\uc77c (\uae08) | \uc2e0\uaddc |\n\n---\n\n## 5. \ucc28\uae30 \ud68c\uc758 \uc77c\uc815 (Next Meeting)\n\n* **\uc77c\uc2dc:** 202X\ub144 XX\uc6d4 XX\uc77c (\uc694\uc77c) OO:OO\n* **\uc8fc\uc694 \uc548\uac74:** (\uc608: X\uc6d4 \ub9c8\ucf00\ud305 \uc131\uacfc \ub9ac\ubdf0 \ubc0f N\ubd84\uae30 \uc804\ub7b5 \ub17c\uc758)\n\n---"
}
]
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"typeVersion": 1,
"position": [
-448,
192
],
"id": "e7707692-ac2e-462c-8c3b-2c0fd0c04902",
"name": "Message a model",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"formTitle": "\ud68c\uc758\ub85d \uc694\uc57d \uc790\ub3d9\ud654",
"formDescription": "- \ud68c\uc758\ub85d \uae30\ub85d \uc815\ub9ac\n- \uc785\ub825 : \uc8fc\uad00\uc790 Email, \ucc38\uc5ec \uc778\uc6d0, \ud68c\uc758 \ub0b4\uc6a9(\ub204\ub77d \ud655\uc778 \ud544\uc694)\n- '\ud68c\uc758 \uc8fc\uc81c' AI \uc0ac\uc6a9\n- \ucd9c\ub825 \n- PDF \ud30c\uc77c\n- \ud68c\uc758\ub85d \uae30\ub85d sheet file \n + \uc8fc\uad00\uc790, \ucc38\uc5ec \uc778\uc6d0, \ud68c\uc758 \uc8fc\uc81c, \ub0a0\uc9dc(\uc785\ub825 \ub0a0\uc9dc), PDF \ub9c1\ud06c",
"formFields": {
"values": [
{
"fieldLabel": "hostEmail",
"placeholder": "\uc8fc\uad00\uc790 \uc774\uba54\uc77c",
"requiredField": true
},
{
"fieldLabel": "participants",
"placeholder": "\ucc38\uac00\uc790 \uc815\ubcf4",
"requiredField": true
},
{
"fieldLabel": "meetingDate",
"placeholder": "\ud68c\uc758\uc77c\uc2dc",
"requiredField": true
},
{
"fieldLabel": "meetingNoteUrl",
"placeholder": "\ud68c\uc758\ub85d URL\uc744 \uc785\ub825\ud574\uc8fc\uc138\uc694."
}
]
},
"options": {}
},
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2.3,
"position": [
-1072,
288
],
"id": "e1dd77e6-14aa-44c3-8acc-388d7d863fa8",
"name": "meetingUrlInput"
}
],
"connections": {
"If": {
"main": [
[
{
"node": "Copy file",
"type": "main",
"index": 0
}
],
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Copy file": {
"main": [
[
{
"node": "Message a model",
"type": "main",
"index": 0
}
]
]
},
"Update a document": {
"main": [
[
{
"node": "Download file",
"type": "main",
"index": 0
}
]
]
},
"Upload file": {
"main": [
[
{
"node": "Append or update row in sheet",
"type": "main",
"index": 0
}
]
]
},
"Download file": {
"main": [
[
{
"node": "Upload file",
"type": "main",
"index": 0
}
]
]
},
"Message a model": {
"main": [
[
{
"node": "Update a document",
"type": "main",
"index": 0
}
]
]
},
"meetingUrlInput": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "5288fb79-50d2-4ac3-bde6-b7e13130d4af",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "RTdWzQPyV3UpJxvg",
"tags": []
}
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.
gmailOAuth2googleDocsOAuth2ApigoogleDriveOAuth2ApigooglePalmApigoogleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
09_Storage_GoogleDrives_meeting_note. Uses googleDrive, googleDocs, googleSheets, gmail. Event-driven trigger; 9 nodes.
Source: https://github.com/jinh2kakao/jinh2kakao-toylearn_AI_multimedias_tech/blob/40a8c8ab2d165a5f5a790ee8790a5ce24419a211/codes/quests/09_Storage_GoogleDrives_meeting_note.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.
This workflow monitors Gmail for Japanese side-gig inquiries, flags risky wording, and uses Google Gemini to extract details and score each request. It logs every opportunity to Google Sheets, then dr
Triage Japanese side gigs with Gmail, Gemini, Sheets, Drive, and Calendar. Uses gmail, googleDrive, googleDocs, googleCalendar. Event-driven trigger; 29 nodes.
Transform any resume into a professional, ATS-compliant document with AI. Supports Global ATS, German, and Japanese resume formats, generates personalized cover letters, and automates PDF creation and
This workflow serves as a complete "AI Receptionist" for mortgage brokers or high-ticket service providers. It automates the messy process of qualifying leads, getting internal approval, and collectin
Transcript Audio To Text. Uses googleDocs, googleDrive, openAi, gmail. Event-driven trigger; 31 nodes.