This workflow corresponds to n8n.io template #7429 — we link there as the canonical source.
This workflow follows the Gmail → Google Sheets 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 →
{
"id": "wrf8Kd0XRbKFEHwR",
"name": "Meeting Minutes Automation (Google Sheets + Gmail)",
"tags": [
{
"id": "3T7uxjPBNibzqJlE",
"name": "Google",
"createdAt": "2025-08-18T07:15:32.460Z",
"updatedAt": "2025-08-18T07:15:32.460Z"
},
{
"id": "7zEwLFClveXBEcdb",
"name": "google sheet",
"createdAt": "2025-08-18T07:16:22.756Z",
"updatedAt": "2025-08-18T07:16:22.756Z"
},
{
"id": "E9IjhPyJvr7DXQgz",
"name": "meeting minutes",
"createdAt": "2025-08-18T07:17:07.060Z",
"updatedAt": "2025-08-18T07:17:07.060Z"
},
{
"id": "WsGNTPBsmCdx55kq",
"name": "email",
"createdAt": "2025-08-18T07:16:22.745Z",
"updatedAt": "2025-08-18T07:16:22.745Z"
},
{
"id": "bg5CwpF83fBHrGAh",
"name": "Productivity",
"createdAt": "2025-08-18T07:15:32.499Z",
"updatedAt": "2025-08-18T07:15:32.499Z"
},
{
"id": "eAzNESqLUWwWMrE9",
"name": "gmail",
"createdAt": "2025-08-18T07:16:22.709Z",
"updatedAt": "2025-08-18T07:16:22.709Z"
}
],
"nodes": [
{
"id": "aecc3b32-343b-421b-b758-e642f5e7c750",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"color": 3,
"height": 176,
"content": "## Required\n\n\n- Google account Gmail\n- Google Sheet"
},
"typeVersion": 1
},
{
"id": "ba8eb175-dfc8-4b58-b7ce-31d5ebed6fd0",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
272,
-352
],
"parameters": {
"color": 2,
"width": 416,
"height": 848,
"content": "## 1.Workflow trigger et data gathering\n\nTrigger: Manual Trigger : run the workflow after you finish writing the meeting minutes and you\u2019re ready to send them.\n\nNodes involved:\n\n- Manual Trigger \u2192 starts the workflow\n\n- Google Sheets (Read) \u2192 pulls the minutes from your sheet\n\nGoogle Sheet requirements:\n\n- Required columns: Topic, Status, Owner, Next Step\n\nSetup:\n\n- Select the Spreadsheet and Tab (e.g., Meeting Minutes).\n\n- Enable Use first row as header.\n\n- Ensure column names match exactly (spelling/case).\n\nTip:\n- If you later want automation, replace Manual Trigger with a Schedule (daily/weekly).\n"
},
"typeVersion": 1
},
{
"id": "67394444-d561-468f-bc5d-14e7d73e6c48",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
704,
-352
],
"parameters": {
"color": 4,
"width": 560,
"height": 848,
"content": "## 2. Send the email\n\nPurpose: Build the meeting-minutes message from your sheet data and send it to the right recipients.\n\nNodes involved:\n\n- Code (Function) \u2192 formats content (HTML) and subject line\n\n- Gmail \u2192 sends the email\n\nSetup (Code node)\n- Use this snippet to generate a subject, HTML body, and recipients from your sheet rows/columns:\n\n- Setup (Gmail node)\n\n- Credentials: select your Gmail OAuth credential\n\n\nValidation\n- Send a test email to yourself first\n- Check that all required columns (Topic, Status, Owner, Next Step) appear and render correctly\n\n\n"
},
"typeVersion": 1
},
{
"id": "7722b28d-8289-4b46-838d-6ef72865abed",
"name": "Trigger",
"type": "n8n-nodes-base.manualTrigger",
"position": [
304,
336
],
"parameters": {},
"typeVersion": 1
},
{
"id": "9a808aca-5b56-4d5d-9f60-861e17dd85b8",
"name": "Email with meeting minutes",
"type": "n8n-nodes-base.gmail",
"position": [
928,
336
],
"parameters": {
"sendTo": "email",
"message": "={{$json.html}}",
"options": {},
"subject": "Meeting notes today's meeting"
},
"typeVersion": 2.1
},
{
"id": "cd26d1d7-ba33-4983-acd4-f2d65f88c413",
"name": "Generate the email",
"type": "n8n-nodes-base.code",
"position": [
720,
336
],
"parameters": {
"jsCode": "const allItems = $input.all();\n\n\nconsole.log(\"Donn\u00e9es re\u00e7ues:\", JSON.stringify(allItems, null, 2));\n\n// build the table\nlet tableRows = '';\nallItems.forEach(item => {\n tableRows += `\n <tr>\n <td>${item.json.Topic || ''}</td>\n <td>${item.json.Status || ''}</td>\n <td>${item.json.Owner || ''}</td>\n <td>${item.json[\"Next Step\"] || ''}</td>\n </tr>`;\n});\n\n// generate HTML\nconst html = `\n<!DOCTYPE html>\n<html>\n<head>\n <style>\n table {\n border-collapse: collapse;\n width: 100%;\n margin: 20px 0;\n font-family: Arial, sans-serif;\n }\n th, td {\n border: 1px solid #dddddd;\n text-align: left;\n padding: 8px;\n }\n th {\n background-color: #f2f2f2;\n font-weight: bold;\n }\n </style>\n</head>\n<body>\n <p>Hello,</p>\n <p>Here are the elements of the meeting:</p>\n \n <table>\n <thead>\n <tr>\n <th>Topic</th>\n <th>Status</th>\n <th>Owner</th>\n <th>Next Step</th>\n </tr>\n </thead>\n <tbody>\n ${tableRows}\n </tbody>\n </table>\n \n <p>Have a good day.<br/>PM Team</p>\n</body>\n</html>`;\n\nreturn [{ json: { html } }];"
},
"typeVersion": 2
},
{
"id": "3f6ccf89-ad6f-4981-b089-03305093a3ff",
"name": "Get the data",
"type": "n8n-nodes-base.googleSheets",
"position": [
512,
336
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "id",
"value": "id"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "url"
}
},
"typeVersion": 4.6
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "ee35c6b7-b5c5-4b38-b126-fa4a6df47265",
"connections": {
"Trigger": {
"main": [
[
{
"node": "Get the data",
"type": "main",
"index": 0
}
]
]
},
"Get the data": {
"main": [
[
{
"node": "Generate the email",
"type": "main",
"index": 0
}
]
]
},
"Generate the email": {
"main": [
[
{
"node": "Email with meeting minutes",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow sends a summary of your meeting minutes via Gmail, directly from the notes stored in your Google Sheet.
Source: https://n8n.io/workflows/7429/ — 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.
Loan eligibility workflow. Uses formTrigger, googleSheets, gmail. Event-driven trigger; 53 nodes.
Splitout Code. Uses manualTrigger, httpRequest, stickyNote, splitOut. Event-driven trigger; 46 nodes.
Automate CSV imports into HubSpot without the mess. Powered by n8n. Supercharged by Pollup AI.
AICARE Email Blast System. Uses googleDrive, httpRequest, googleSheets, gmail. Event-driven trigger; 39 nodes.
Telegram Code. Uses stickyNote, telegramTrigger, telegram, googleDrive. Event-driven trigger; 37 nodes.