AutomationFlowsSlack & Telegram › Summarize Daily Gmail Emails with Gemini and Send to Slack, Whatsapp and Docs

Summarize Daily Gmail Emails with Gemini and Send to Slack, Whatsapp and Docs

ByTricore Infotech Pvt Ltd @jinitp on n8n.io

Stop starting your day by drowning in unread emails. This workflow runs every morning and turns your Gmail inbox into a clean, prioritized briefing — automatically organized into what needs your attention, what meetings are coming up, and what you can read later. The summary…

Cron / scheduled trigger★★★★☆ complexityAI-powered28 nodesGmailGoogle GeminiGoogle DocsSlackWhatsAppError Trigger
Slack & Telegram Trigger: Cron / scheduled Nodes: 28 Complexity: ★★★★☆ AI nodes: yes Added:
Summarize Daily Gmail Emails with Gemini and Send to Slack, Whatsapp and Docs — n8n workflow card showing Gmail, Google Gemini, Google Docs integration

This workflow corresponds to n8n.io template #15403 — we link there as the canonical source.

This workflow follows the Error 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 →

Download .json
{
  "id": "bL9FtCyxzMAAFjDD",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "AI Daily Email Summary - Auto-Delivered to Slack, WhatsApp & Docs",
  "tags": [],
  "nodes": [
    {
      "id": "2e1cbca9-e97f-4406-910a-283662a946f4",
      "name": "Template Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -9584,
        1440
      ],
      "parameters": {
        "width": 500,
        "height": 956,
        "content": "## \ud83d\udce7 AI Daily Email Summarizer\n\n### Who it's for\nIndividuals and busy professionals who receive a high volume of emails and need a concise, prioritized daily summary.\n\n### What it does\nAutomatically fetches daily primary emails, scrubs sensitive PII (passwords, OTPs, API keys), and generates a prioritized overview using Google Gemini 2.5 Flash.\n\n### How it works\n1. **Fetch:** Pulls non-promotional emails from the last 24 hours.\n2. **Scrub:** Uses Regex to hide sensitive data before processing.\n3. **Summarize:** Gemini groups emails by priority (Action Required, Meetings, FYIs).\n4. **Deliver:** Routes the summary to Google Docs, Gmail, Slack, and/or WhatsApp.\n\n### How to set up\n1. Connect credentials for Gmail, Google Docs, Slack, WhatsApp, and Gemini API. *(Note: Only 1 Gmail credential is required for both reading and sending).* \n2. Update placeholder IDs in the **\u2699\ufe0f Set Configuration** node.\n3. *(Optional)* Update the fallback email in the 'Gmail: Send Error Alert' node.\n4. Toggle preferred delivery channels to `true`.\n5. Click **Test Workflow**.\n\n### Requirements\n- **n8n Version:** 1.0+\n- **Gemini Model:** Gemini 2.5 Flash *(Switch to 1.5-flash if 2.5 is unavailable/rate-limited)*\n- **Credentials:** Gmail, Google Docs, Slack, WhatsApp, Gemini API.\n\n### How to customize\n- **Summarization Scope:** Edit labels in the Gmail node.\n- **Filtering:** Toggle subject/sender filters in the Config node.\n- **AI Tone:** Modify the prompt in the 'Build LLM Prompt' node.\n\n### \ud83d\udce6 Version Info\n- **Gemini Model:** gemini-2.5-flash"
      },
      "typeVersion": 1
    },
    {
      "id": "e07090b0-03a7-42a0-855d-aa59d3df2a66",
      "name": "Zone 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -9072,
        1440
      ],
      "parameters": {
        "color": 6,
        "width": 460,
        "height": 576,
        "content": "## 1. \u2699\ufe0f Trigger & Configuration\nThis zone initializes the workflow and holds your personal settings.\n\n**Config Checklist:**\n- `targetEmail`: Where to send alerts.\n- `slackUserId`: Your unique Slack ID.\n- `whatsappNumber`: Phone with country code (no +).\n- `receiveOverviewIn...`: Toggle channels ON/OFF.\n\n**Required Credentials:**\n- Gmail OAuth2\n- Google Gemini API\n- Google Docs OAuth2\n- Slack OAuth2\n- WhatsApp Business API"
      },
      "typeVersion": 1
    },
    {
      "id": "42429671-325a-4e79-9fff-b25c96815f4c",
      "name": "Zone 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -8592,
        1440
      ],
      "parameters": {
        "color": 4,
        "width": 680,
        "height": 576,
        "content": "## 2. \ud83d\udce5 Ingestion & Sanitization\nFetches and cleans data before it leaves your secure environment.\n\n**What happens here:**\n- **Fetch:** Gmail pulls the last 24h of primary mail.\n- **PII Scrubbing:** Regex automatically hides:\n  - OTPs and 2FA Codes\n  - Passwords/Secrets\n  - Credit Card Numbers\n  - Bank Account/IFSC Details\n  - API Keys & Bearer Tokens\n- **Security Check:** Flagging 'High Risk' login alerts."
      },
      "typeVersion": 1
    },
    {
      "id": "8e3b267e-b765-44a0-9238-8f629a63ecdc",
      "name": "Zone 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -7888,
        1440
      ],
      "parameters": {
        "color": 5,
        "width": 780,
        "height": 572,
        "content": "## 3. \ud83e\udde0 AI Processing\nConverts a wall of text into a high-level executive summary.\n\n**AI Logic:**\n- **Empty Check:** Bypasses LLM if inbox is empty to save tokens.\n- **Prompting:** Instructs Gemini to group by:\n  - \ud83d\udd34 Action Required\n  - \ud83d\udcc5 Meetings & Events\n  - \ud83d\udccc Important Updates\n- **Constraint:** AI is strictly forbidden from guessing hidden PII values."
      },
      "typeVersion": 1
    },
    {
      "id": "dce1f417-3200-4379-a156-0cfb194896c9",
      "name": "Zone 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -7088,
        1440
      ],
      "parameters": {
        "color": 2,
        "width": 780,
        "height": 984,
        "content": "## 4. \ud83d\udce4 Multi-Channel Delivery\nRoutes the summary to your preferred devices.\n\n- **Google Docs:** Creates a permanent daily log.\n- **Gmail:** Sends a professional email report.\n- **Slack:** Instant DM for quick reading.\n- **WhatsApp:** Mobile-friendly notification."
      },
      "typeVersion": 1
    },
    {
      "id": "ad44706a-9632-4dc2-bf55-0bf8f9570569",
      "name": "Annotation: Scrubbing",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -8384,
        1984
      ],
      "parameters": {
        "color": 4,
        "width": 300,
        "content": "### \ud83d\udee0\ufe0f PII Scrubbing Logic\nThis code uses regular expressions to detect sensitive patterns (API keys, OTPs, Card numbers) and replaces them with [HIDDEN] tags before the AI sees them."
      },
      "typeVersion": 1
    },
    {
      "id": "94dc911e-7f08-49d7-a9ac-42fd01738ed8",
      "name": "Annotation: Formatting",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -7408,
        1904
      ],
      "parameters": {
        "color": 5,
        "width": 300,
        "content": "### \u270d\ufe0f AI Formatting\nCombines the Gemini output with dynamic date strings and formats the text specifically for WhatsApp and Slack (using markdown/emojis)."
      },
      "typeVersion": 1
    },
    {
      "id": "26dbbb70-583f-42d9-a9b1-ecd6d93e14a2",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -9008,
        1824
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 24
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "da902a8e-17a4-4266-abdc-9c8b3058c344",
      "name": "\u2699\ufe0f Set Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        -8816,
        1824
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "f-sub",
              "name": "filterBySubject",
              "type": "boolean",
              "value": false
            },
            {
              "id": "f-sub-v",
              "name": "filterSubjectText",
              "type": "string",
              "value": ""
            },
            {
              "id": "f-send",
              "name": "filterBySender",
              "type": "boolean",
              "value": false
            },
            {
              "id": "f-send-v",
              "name": "filterSenderEmail",
              "type": "string",
              "value": ""
            },
            {
              "id": "s-mail",
              "name": "receiveOverviewInMail",
              "type": "boolean",
              "value": false
            },
            {
              "id": "s-mail-v",
              "name": "targetEmail",
              "type": "string",
              "value": "PASTE_TARGET_EMAIL_HERE"
            },
            {
              "id": "s-slack",
              "name": "receiveOverviewInSlack",
              "type": "boolean",
              "value": false
            },
            {
              "id": "s-slack-v",
              "name": "slackUserId",
              "type": "string",
              "value": "PASTE_SLACK_USER_ID"
            },
            {
              "id": "s-wa",
              "name": "receiveOverviewInWhatsapp",
              "type": "boolean",
              "value": false
            },
            {
              "id": "s-wa-v",
              "name": "whatsappNumber",
              "type": "string",
              "value": "PASTE_WHATSAPP_NUMBER_HERE"
            },
            {
              "id": "s-doc",
              "name": "receiveOverviewInDoc",
              "type": "boolean",
              "value": false
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "dfd8ff16-8732-4d84-8cfa-2cbf12d42fdf",
      "name": "Gmail: Fetch Primary Emails",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -8512,
        1824
      ],
      "parameters": {
        "limit": 50,
        "filters": {
          "q": "={{ ($json.filterBySubject && $json.filterSubjectText ? `Subject: ${$json.filterSubjectText} ` : \"\") + ($json.filterBySender && $json.filterSenderEmail ? `from: ${$json.filterSenderEmail}` : \"\") }}",
          "labelIds": [
            "INBOX",
            "IMPORTANT",
            "CATEGORY_PERSONAL"
          ],
          "receivedAfter": "={{ $now.minus({ hours: $node[\"Schedule Trigger\"].parameter?.rule?.interval?.[0]?.hoursInterval || 24 }).toFormat(\"yyyy-MM-dd'T'HH:mm:ss\") }}",
          "receivedBefore": "={{ $now.toFormat(\"yyyy-MM-dd'T'HH:mm:ss\") }}"
        },
        "operation": "getAll"
      },
      "typeVersion": 2.1
    },
    {
      "id": "52892598-7e0d-4f48-a1f3-48e866fb07d1",
      "name": "Sanitize & Parse Emails",
      "type": "n8n-nodes-base.code",
      "position": [
        -8304,
        1824
      ],
      "parameters": {
        "jsCode": "const emails = $input.all();\n\nfunction sanitize(text) {\n  if (!text) return '';\ntext = text.replace(/\\b(otp|code|pin|verify|verification|token|passcode)\\b[\\s\\S]{0,40}?\\b(\\d{4,8})\\b/gi, '$1: [CODE HIDDEN]');\n  text = text.replace(/(password|passwd|pwd|pass|secret|pin)[\\s\\S]{0,30}?[:\\-=]\\s*\\S+/gi, '$1: [PASSWORD HIDDEN]');\n  text = text.replace(/\\b(?:\\d[ -]?){13,19}\\b/g, '[CARD NUMBER HIDDEN]');\n  text = text.replace(/(token|api[_\\s]?key|secret[_\\s]?key|access[_\\s]?key|auth[_\\s]?key|bearer)[\\s\\S]{0,30}?[:\\-=]\\s*\\S+/gi, '$1: [KEY HIDDEN]');\n  return text.trim();\n}\n\nconst emailList = emails.map((item, index) => {\n  const email = item.json;\n  return {\n    index: index + 1,\n    subject: sanitize(email.Subject || '(No Subject)'),\n    from: email.From || '(Unknown)',\n    snippet: sanitize(email.snippet || '')\n  };\n});\n\nreturn [{ json: { totalEmails: emailList.length, emailSummaryText: emailList.map(e => `From: ${e.from}\\nSub: ${e.subject}\\nSnippet: ${e.snippet}`).join('\\n\\n') } }];"
      },
      "typeVersion": 2
    },
    {
      "id": "7783fab2-1e79-4dd8-b1a9-27f1ccb1d4e6",
      "name": "Inbox Has Emails?",
      "type": "n8n-nodes-base.if",
      "position": [
        -8080,
        1824
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "check",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.totalEmails }}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "f3d80364-6407-4e5e-b742-b049efec9924",
      "name": "Build LLM Prompt",
      "type": "n8n-nodes-base.code",
      "position": [
        -7792,
        1712
      ],
      "parameters": {
        "jsCode": "return { json: { systemPrompt: \"Summarize emails professionally. Group by: Action Items, Meetings, and Updates. Do not guess redacted data. formatted text summary\", userPrompt: `Today is ${$now.toFormat('dd MMM yyyy')}. Emails:\\n${$input.first().json.emailSummaryText}` } };"
      },
      "typeVersion": 2
    },
    {
      "id": "e0567a9f-01ba-40f5-88ba-eaefb1a5113f",
      "name": "Generate AI Summary",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        -7568,
        1712
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "models/gemini-2.5-flash",
          "cachedResultName": "models/gemini-2.5-flash"
        },
        "options": {
          "systemMessage": "={{ $json.systemPrompt }}"
        },
        "messages": {
          "values": [
            {
              "content": "={{ $json.userPrompt }}"
            }
          ]
        },
        "builtInTools": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "af37a8e6-f10b-407d-b3b6-d284a4bf22e2",
      "name": "Format Populated Summary",
      "type": "n8n-nodes-base.code",
      "position": [
        -7280,
        1712
      ],
      "parameters": {
        "jsCode": "const summary = $input.first().json.content?.parts?.[0]?.text || $input.first().json.text || 'No summary generated.';\nreturn { json: { summary, docTitle: `Emails Overview - ${new Date().toDateString()}`, whatsappMessage: `\ud83d\udce7 *Daily Overview*\\n\\n${summary}` } };"
      },
      "typeVersion": 2
    },
    {
      "id": "19adb28a-1ed3-4bbc-adf9-5292883fb23a",
      "name": "Enable Google Docs?",
      "type": "n8n-nodes-base.if",
      "position": [
        -6960,
        1632
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "doc",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $('\u2699\ufe0f Set Configuration').item.json.receiveOverviewInDoc }}"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "9fef83fd-683f-4e40-8653-6b2cff06bdc3",
      "name": "Google Docs: Create New Doc",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        -6752,
        1616
      ],
      "parameters": {
        "title": "={{ $json.docTitle }}",
        "folderId": "default"
      },
      "typeVersion": 2
    },
    {
      "id": "4a6d2f16-f934-4d77-9110-4b093d54060b",
      "name": "Google Docs: Append Summary",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        -6528,
        1616
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ $('Format Populated Summary').item?.json?.summary }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $json.id }}"
      },
      "typeVersion": 2
    },
    {
      "id": "f8361741-bcd4-451f-bfaf-bd74428265b5",
      "name": "Enable Gmail Alert?",
      "type": "n8n-nodes-base.if",
      "position": [
        -6960,
        1824
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "mail",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $('\u2699\ufe0f Set Configuration').item.json.receiveOverviewInMail }}"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "3ef83791-85c3-4847-bd1b-135ce9feb6f7",
      "name": "Gmail: Send Overview Alert",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -6752,
        1824
      ],
      "parameters": {
        "sendTo": "={{ $('\u2699\ufe0f Set Configuration').item.json.targetEmail }}",
        "message": "={{ $json.summary }}\\n\\n {{ $('\u2699\ufe0f Set Configuration').first().json.receiveOverviewInDoc ? \"Log :\" + $('Google Docs: Create New Doc').first()?.json?.webViewLink : \"\" }}",
        "options": {},
        "subject": "={{ $json.docTitle }}"
      },
      "typeVersion": 2.2
    },
    {
      "id": "6f70e74e-a701-40ca-ab19-fda8e2b38263",
      "name": "Enable Slack Alert?",
      "type": "n8n-nodes-base.if",
      "position": [
        -6960,
        2016
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "slack",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $('\u2699\ufe0f Set Configuration').item.json.receiveOverviewInSlack }}"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "a68b324f-29d8-4944-9603-52c6f2a77056",
      "name": "Slack: Post Overview Alert",
      "type": "n8n-nodes-base.slack",
      "position": [
        -6752,
        2016
      ],
      "parameters": {
        "text": "={{ $json.summary }}\\n {{ $('\u2699\ufe0f Set Configuration').first().json.receiveOverviewInDoc ? \"Log :\" + $('Google Docs: Create New Doc').first()?.json?.webViewLink : \"\" }}",
        "user": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('\u2699\ufe0f Set Configuration').item.json.slackUserId }}"
        },
        "select": "user",
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "typeVersion": 2.4
    },
    {
      "id": "7a55fdc3-8958-425b-892d-9b7e477e25ac",
      "name": "Enable WhatsApp Alert?",
      "type": "n8n-nodes-base.if",
      "position": [
        -6960,
        2224
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "wa",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $('\u2699\ufe0f Set Configuration').item.json.receiveOverviewInWhatsapp }}"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "eb6b16b1-7234-4f85-ba44-9a6ff23bf50a",
      "name": "WhatsApp: Send Overview Alert",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        -6752,
        2224
      ],
      "parameters": {
        "textBody": "={{ $json.whatsappMessage }}\n{{ $('\u2699\ufe0f Set Configuration').first().json.receiveOverviewInDoc ? 'Log: ' + $('Google Docs: Create New Doc').first()?.json?.webViewLink : '' }}",
        "operation": "send",
        "additionalFields": {},
        "recipientPhoneNumber": "={{ $('\u2699\ufe0f Set Configuration').item.json.whatsappNumber}}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "3a536c2e-31f3-47eb-9eb3-b4b3b5e38dac",
      "name": "Error Trigger",
      "type": "n8n-nodes-base.errorTrigger",
      "position": [
        -8848,
        2224
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "ea55a75d-1373-4959-86a3-ea113a378614",
      "name": "Gmail: Send Error Alert",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -8608,
        2224
      ],
      "parameters": {
        "sendTo": "={{ $('\u2699\ufe0f Set Configuration').item.json?.targetEmail || 'PASTE_FALLBACK_EMAIL_HERE' }}",
        "message": "Node: {{ $json.node.name }}\\nError: {{ $json.execution.error.message }}",
        "options": {},
        "subject": "Workflow Error: Daily Email Summarizer"
      },
      "typeVersion": 2.2
    },
    {
      "id": "01fa0dc9-8c28-4f57-ae62-12da81f7220c",
      "name": "Zone 5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -8896,
        2048
      ],
      "parameters": {
        "width": 460,
        "height": 352,
        "content": "## 5. \u26a0\ufe0f Error Handling\nMonitoring execution health.\n\n- **Error Trigger:** Catches node failures globally.\n- **Gmail Alert:** Sends crash report to the config email (or hardcoded fallback email if config fails)."
      },
      "typeVersion": 1
    },
    {
      "id": "c1a14660-f23a-4fa8-a13a-35c6660ae566",
      "name": "Format Empty Summary",
      "type": "n8n-nodes-base.code",
      "position": [
        -7792,
        1872
      ],
      "parameters": {
        "jsCode": "const today = new Date().toLocaleDateString(undefined, {\n  weekday: 'long',\n  year: 'numeric',\n  month: 'long',\n  day: 'numeric'\n});\n\nconst emptyMessage = \"Inbox Zero! No primary emails requiring your attention today.\";\n\nreturn {\n  json: {\n    summary: emptyMessage,\n    today,\n    docTitle: `Emails Overview - ${today}`,\n    whatsappMessage: `\ud83d\udce7 *Daily Emails Overview*\\n\ud83d\udcc5 ${today}\\n\\n${emptyMessage}`\n  }\n};"
      },
      "typeVersion": 2
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "fa7b34d2-50a5-401f-bd51-c934093e6b21",
  "connections": {
    "Error Trigger": {
      "main": [
        [
          {
            "node": "Gmail: Send Error Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build LLM Prompt": {
      "main": [
        [
          {
            "node": "Generate AI Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "\u2699\ufe0f Set Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Inbox Has Emails?": {
      "main": [
        [
          {
            "node": "Build LLM Prompt",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Format Empty Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enable Gmail Alert?": {
      "main": [
        [
          {
            "node": "Gmail: Send Overview Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enable Google Docs?": {
      "main": [
        [
          {
            "node": "Google Docs: Create New Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enable Slack Alert?": {
      "main": [
        [
          {
            "node": "Slack: Post Overview Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate AI Summary": {
      "main": [
        [
          {
            "node": "Format Populated Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Empty Summary": {
      "main": [
        [
          {
            "node": "Enable Google Docs?",
            "type": "main",
            "index": 0
          },
          {
            "node": "Enable Gmail Alert?",
            "type": "main",
            "index": 0
          },
          {
            "node": "Enable Slack Alert?",
            "type": "main",
            "index": 0
          },
          {
            "node": "Enable WhatsApp Alert?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enable WhatsApp Alert?": {
      "main": [
        [
          {
            "node": "WhatsApp: Send Overview Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sanitize & Parse Emails": {
      "main": [
        [
          {
            "node": "Inbox Has Emails?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Populated Summary": {
      "main": [
        [
          {
            "node": "Enable Google Docs?",
            "type": "main",
            "index": 0
          },
          {
            "node": "Enable Gmail Alert?",
            "type": "main",
            "index": 0
          },
          {
            "node": "Enable Slack Alert?",
            "type": "main",
            "index": 0
          },
          {
            "node": "Enable WhatsApp Alert?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u2699\ufe0f Set Configuration": {
      "main": [
        [
          {
            "node": "Gmail: Fetch Primary Emails",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail: Fetch Primary Emails": {
      "main": [
        [
          {
            "node": "Sanitize & Parse Emails",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Docs: Create New Doc": {
      "main": [
        [
          {
            "node": "Google Docs: Append Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Stop starting your day by drowning in unread emails. This workflow runs every morning and turns your Gmail inbox into a clean, prioritized briefing — automatically organized into what needs your attention, what meetings are coming up, and what you can read later. The summary…

Source: https://n8n.io/workflows/15403/ — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

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

Slack & Telegram

Error Monitoring!. Uses errorTrigger, gmail, whatsApp, slack. Event-driven trigger; 8 nodes.

Error Trigger, Gmail, WhatsApp +3
Slack & Telegram

YouTube to X Post- AlexK1919. Uses twitter, stickyNote, youTube, toolCalculator. Scheduled trigger; 28 nodes.

Twitter, YouTube, Tool Calculator +6
Slack & Telegram

This workflow is an AI-powered roto matte generation and first-pass compositing pipeline designed for VFX production. It transforms structured roto requests into multiple high-precision matte passes u

HTTP Request, Slack, Error Trigger +4
Slack & Telegram

🌸 Affirmation Sender + Weekly Gratitude Digest v2

Email Send, Telegram, Notion +3
Slack & Telegram

This workflow is an AI-powered style look transfer and quality control pipeline designed for VFX and editorial production. It transforms a new shot brief and a hero reference image into multiple style

HTTP Request, Slack, Gmail +3