This workflow corresponds to n8n.io template #16032 — we link there as the canonical source.
This workflow follows the Agent → Datatable 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": "Z9WkEO27MjTZ9I7w",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Automate Email Triage and High-Priority Alerts using Gemini AI",
"tags": [],
"nodes": [
{
"id": "9786c566-1a4c-4af7-90c1-4589742caafa",
"name": "Set Context",
"type": "n8n-nodes-base.set",
"position": [
-1952,
16
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "cfg-001",
"name": "data_table_id",
"type": "string",
"value": "YOUR_DATA_TABLE_ID_HERE"
},
{
"id": "cfg-002",
"name": "owner_name",
"type": "string",
"value": "Nguyen Thieu Toan (Jay Nguyen)"
},
{
"id": "cfg-003",
"name": "owner_email",
"type": "string",
"value": "user@example.com"
},
{
"id": "cfg-004",
"name": "blocked_sender_keywords",
"type": "string",
"value": "noreply,no-reply,donotreply,do-not-reply,mailer-daemon,notifications@,newsletter@,unsubscribe"
},
{
"id": "cfg-005",
"name": "max_content_chars",
"type": "number",
"value": 5000
}
]
}
},
"typeVersion": 3.4
},
{
"id": "e5969893-ae8b-4e9b-b2b9-da86b87f69aa",
"name": "Parse Email Fields",
"type": "n8n-nodes-base.code",
"position": [
-1728,
16
],
"parameters": {
"jsCode": "const item = $input.first();\nconst emailData = item.json;\nconst maxChars = $('Set Context').item.json.max_content_chars || 5000;\n\n// --- Sender ---\nlet senderEmail = '';\nlet senderName = '';\nif (emailData.from?.value?.[0]) {\n senderEmail = emailData.from.value[0].address || '';\n senderName = emailData.from.value[0].name || senderEmail;\n} else if (emailData.from?.text) {\n const emailMatch = emailData.from.text.match(/<([^>]+)>/) || emailData.from.text.match(/([^\\s]+@[^\\s]+)/);\n senderEmail = emailMatch ? emailMatch[1] : emailData.from.text;\n const nameMatch = emailData.from.text.match(/^([^<]+)/);\n senderName = nameMatch ? nameMatch[1].trim().replace(/\"/g, '') : senderEmail;\n}\n\n// --- Date ---\nconst receivedDate = new Date(emailData.date || emailData.receivedTime || Date.now());\nconst formattedDate = receivedDate.toLocaleString('en-US', {\n year: 'numeric', month: '2-digit', day: '2-digit',\n hour: '2-digit', minute: '2-digit', hour12: true\n});\n\n// --- Content ---\nlet emailContent = '';\nif (emailData.text) {\n emailContent = emailData.text;\n} else if (emailData.html) {\n emailContent = emailData.html\n .replace(/<style[\\s\\S]*?<\\/style>/gi, '')\n .replace(/<script[\\s\\S]*?<\\/script>/gi, '')\n .replace(/<[^>]+>/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n} else {\n emailContent = emailData.body || emailData.textPlain || emailData.textHtml || '';\n}\nif (emailContent.length > maxChars) {\n emailContent = emailContent.substring(0, maxChars) + '... [truncated]';\n}\n\n// --- Message ID (dedup key) ---\nconst messageId = emailData.id || emailData.messageId || (`${senderEmail}_${receivedDate.getTime()}`);\n\nreturn [{\n json: {\n message_id: messageId,\n sender_name: senderName,\n sender_email: senderEmail,\n subject: emailData.subject || '(No Subject)',\n content: emailContent,\n received_at: formattedDate,\n has_attachment: (emailData.attachments?.length > 0) ? 'Yes' : 'No',\n labels: (emailData.labelIds || []).join(', ')\n }\n}];"
},
"typeVersion": 2
},
{
"id": "4e163638-bb0b-4dde-a853-08f9d7bcb096",
"name": "Filter Noise & Bots",
"type": "n8n-nodes-base.if",
"position": [
-1504,
16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "filter-001",
"operator": {
"type": "boolean",
"operation": "false"
},
"leftValue": "={{ $('Set Context').item.json.blocked_sender_keywords.split(',').some(kw => $json.sender_email.toLowerCase().includes(kw.trim())) }}",
"rightValue": true
},
{
"id": "filter-002",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.sender_email }}",
"rightValue": ""
},
{
"id": "filter-003",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.content }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.3
},
{
"id": "0e5497be-6dcb-4a5d-b64a-1ad7b765482b",
"name": "Already Logged?",
"type": "n8n-nodes-base.dataTable",
"position": [
-1280,
16
],
"parameters": {
"operation": "getAll",
"dataTableId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Set Context').item.json.data_table_id }}"
}
},
"typeVersion": 1.1
},
{
"id": "ea75dfeb-936c-48b3-a830-e07634e41055",
"name": "Is New Email?",
"type": "n8n-nodes-base.if",
"position": [
-1056,
16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "dup-check-001",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $json.id }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.3
},
{
"id": "4c94d7c5-e0e2-4e85-b6a9-0c9bfb9e7ad2",
"name": "AI Email Analyzer",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-832,
16
],
"parameters": {
"text": "=Analyze the following email and return a structured JSON evaluation.\n\n**Email Metadata:**\n- From: {{ $('Parse Email Fields').item.json.sender_name }} <{{ $('Parse Email Fields').item.json.sender_email }}>\n- Subject: {{ $('Parse Email Fields').item.json.subject }}\n- Received: {{ $('Parse Email Fields').item.json.received_at }}\n- Has Attachment: {{ $('Parse Email Fields').item.json.has_attachment }}\n\n**Email Content:**\n{{ $('Parse Email Fields').item.json.content }}",
"options": {
"systemMessage": "=You are an intelligent AI email assistant for {{ $('Set Context').item.json.owner_name }} ({{ $('Set Context').item.json.owner_email }}), representing GenStaff AI.\n\nAnalyze the email and return a valid JSON object. No markdown fences, no preamble.\n\nFields to return:\n{\n \"summary\": \"string \u2014 2-3 sentence concise summary of what this email is about\",\n \"category\": \"string \u2014 one of: Work | Finance | Legal | Personal | Newsletter | Notification | Spam | Other\",\n \"priority\": \"string \u2014 one of: High | Medium | Low\",\n \"action_required\": \"boolean \u2014 true if the recipient needs to do something, false otherwise\",\n \"action_detail\": \"string or null \u2014 if action_required is true, describe what action is needed in one sentence; otherwise null\",\n \"deadline\": \"string or null \u2014 deadline or due date if mentioned (format dd/MM/yyyy), otherwise null\",\n \"sentiment\": \"string \u2014 one of: Positive | Neutral | Negative | Urgent\",\n \"key_entities\": [\"string array \u2014 up to 5 important names, companies, amounts, or IDs mentioned\"]\n}\n\nPriority logic:\n- High: deadline within 3 days, payment/legal/security matter, explicit urgency\n- Medium: action required but no immediate deadline\n- Low: informational, FYI, newsletter-type content"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "c91738c9-72df-4e7e-8884-8fcca3fdf32c",
"name": "Google Gemini Flash",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-832,
464
],
"parameters": {
"options": {},
"modelName": "=models/gemini-3-flash-preview"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "d47ced26-367a-4354-b455-b698948b5c75",
"name": "Parse Analysis JSON",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-752,
240
],
"parameters": {
"autoFix": true,
"jsonSchemaExample": "{\n \"summary\": \"The client is requesting a project update by end of week and asking about the revised timeline for Phase 2 delivery.\",\n \"category\": \"Work\",\n \"priority\": \"High\",\n \"action_required\": true,\n \"action_detail\": \"Reply with project status update and revised Phase 2 timeline before Friday.\",\n \"deadline\": \"06/06/2026\",\n \"sentiment\": \"Neutral\",\n \"key_entities\": [\"Phase 2\", \"John Smith\", \"Acme Corp\", \"Friday deadline\"]\n}"
},
"typeVersion": 1.3
},
{
"id": "759bee2f-4b35-46ea-b388-00633991d18f",
"name": "Log to Data Table",
"type": "n8n-nodes-base.dataTable",
"position": [
-384,
16
],
"parameters": {
"columns": {
"value": {
"labels": "={{ $('Parse Email Fields').item.json.labels }}",
"subject": "={{ $('Parse Email Fields').item.json.subject }}",
"summary": "={{ $('AI Email Analyzer').item.json.output.summary }}",
"category": "={{ $('AI Email Analyzer').item.json.output.category }}",
"deadline": "={{ $('AI Email Analyzer').item.json.output.deadline || '' }}",
"priority": "={{ $('AI Email Analyzer').item.json.output.priority }}",
"logged_at": "={{ $now.toFormat('dd/MM/yyyy HH:mm') }}",
"sentiment": "={{ $('AI Email Analyzer').item.json.output.sentiment }}",
"message_id": "={{ $('Parse Email Fields').item.json.message_id }}",
"received_at": "={{ $('Parse Email Fields').item.json.received_at }}",
"sender_name": "={{ $('Parse Email Fields').item.json.sender_name }}",
"key_entities": "={{ ($('AI Email Analyzer').item.json.output.key_entities || []).join(', ') }}",
"sender_email": "={{ $('Parse Email Fields').item.json.sender_email }}",
"action_detail": "={{ $('AI Email Analyzer').item.json.output.action_detail || '' }}",
"has_attachment": "={{ $('Parse Email Fields').item.json.has_attachment }}",
"action_required": "={{ $('AI Email Analyzer').item.json.output.action_required }}"
},
"schema": [
{
"id": "message_id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "message_id",
"defaultMatch": false
},
{
"id": "sender_name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "sender_name",
"defaultMatch": false
},
{
"id": "sender_email",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "sender_email",
"defaultMatch": false
},
{
"id": "subject",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "subject",
"defaultMatch": false
},
{
"id": "received_at",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "received_at",
"defaultMatch": false
},
{
"id": "has_attachment",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "has_attachment",
"defaultMatch": false
},
{
"id": "labels",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "labels",
"defaultMatch": false
},
{
"id": "summary",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "summary",
"defaultMatch": false
},
{
"id": "category",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "category",
"defaultMatch": false
},
{
"id": "priority",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "priority",
"defaultMatch": false
},
{
"id": "action_required",
"type": "boolean",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "action_required",
"defaultMatch": false
},
{
"id": "action_detail",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "action_detail",
"defaultMatch": false
},
{
"id": "deadline",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "deadline",
"defaultMatch": false
},
{
"id": "sentiment",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "sentiment",
"defaultMatch": false
},
{
"id": "key_entities",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "key_entities",
"defaultMatch": false
},
{
"id": "logged_at",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "logged_at",
"defaultMatch": false
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"filters": {
"conditions": [
{
"keyValue": "={{ $('Parse Email Fields').item.json.message_id }}"
}
]
},
"options": {},
"operation": "upsert",
"dataTableId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Set Context').item.json.data_table_id }}"
}
},
"typeVersion": 1.1
},
{
"id": "5bbc5066-4c1d-4842-b6a7-5baaf6e52902",
"name": "Notify via Telegram (High Priority)",
"type": "n8n-nodes-base.if",
"position": [
-160,
16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "priority-check-001",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('AI Email Analyzer').item.json.output.priority }}",
"rightValue": "High"
}
]
}
},
"typeVersion": 2.3
},
{
"id": "e31ed63a-caba-4bbe-ac1c-74d58ade601f",
"name": "Send Telegram Alert",
"type": "n8n-nodes-base.telegram",
"position": [
64,
16
],
"parameters": {
"text": "=\ud83d\udd34 *High Priority Email*\n\n\ud83d\udce7 *From:* {{ $('Parse Email Fields').item.json.sender_name }} \\({{ $('Parse Email Fields').item.json.sender_email }}\\)\n\ud83d\udccc *Subject:* {{ $('Parse Email Fields').item.json.subject }}\n\ud83d\udd50 *Received:* {{ $('Parse Email Fields').item.json.received_at }}\n\n\ud83d\udccb *Summary:*\n{{ $('AI Email Analyzer').item.json.output.summary }}{{ $('AI Email Analyzer').item.json.output.action_detail ? '\\n\\n\u2705 *Action Needed:* ' + $('AI Email Analyzer').item.json.output.action_detail : '' }}{{ $('AI Email Analyzer').item.json.output.deadline ? '\\n\u23f0 *Deadline:* ' + $('AI Email Analyzer').item.json.output.deadline : '' }}\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ud83c\udff7 *Category:* {{ $('AI Email Analyzer').item.json.output.category }} | *Sentiment:* {{ $('AI Email Analyzer').item.json.output.sentiment }}\n\ud83d\udcce *Attachment:* {{ $('Parse Email Fields').item.json.has_attachment }}\n\n_Automated by GenStaff AI \u00b7 nguyenthieutoan.com_",
"chatId": "={{ $('Set Context').item.json.owner_email }}",
"additionalFields": {
"parse_mode": "MarkdownV2",
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "0733a260-d03e-4d4a-94e4-967e340f09f2",
"name": "Main Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2800,
-400
],
"parameters": {
"width": 550,
"height": 960,
"content": "## Automate Email Triage and High-Priority Alerts using Gemini AI\n\nThis workflow monitors your **Gmail** inbox, automatically filters out noise, and uses **Gemini AI** to categorize emails, summarize content, and extract action items. The analysis is logged into an **n8n Data Table**, and if an email is flagged as \"High Priority\", it instantly sends a smart digest to your **Telegram**.\n\nAll behavior is controlled from a single node (`Set Context`). No complex logic editing is required to adapt this workflow to your specific needs.\n\n### How it works\n1. **Trigger & Context:** Gmail Trigger fetches new emails. The `Set Context` node defines variables like blocked keywords, max characters, and table IDs.\n2. **Filter & Parse:** Extracts the email body, strips messy HTML, and ignores emails from predefined blocked keywords (e.g., noreply, newsletter).\n3. **Deduplication:** Checks the Data Table to ensure the email hasn't been processed yet based on its message ID.\n4. **AI Analysis:** Google Gemini reads the content to determine category, priority level, required actions, deadlines, and key entities.\n5. **Logging & Alert:** Logs the structured assessment into the n8n Data Table. If the priority is evaluated as \"High\", it pushes an instant, formatted Markdown alert to Telegram.\n\n### Setup\n* [ ] Connect your **Gmail OAuth2** credential in the Trigger node.\n* [ ] Connect your **Google Gemini** credential in the AI Agent and LLM nodes.\n* [ ] Connect your **Telegram Bot** credential in the Alert node.\n* [ ] Create an **n8n Data Table** matching the schema and add its ID to the `Set Context` node.\n* [ ] Update `owner_name`, `owner_email`, and Telegram `chatId` in the `Set Context` / Telegram node.\n* [ ] Activate the workflow.\n\n### Customization tips\n* **Different Email Source:** Swap the Gmail Trigger for an IMAP or Outlook node.\n* **Adjust AI Rules:** Edit the `systemMessage` in the AI Email Analyzer node to change how priorities are defined or what categories are allowed.\n\n### LICENCE\nThis template is shared free of charge. Copyright belongs to Nguyen Thieu Toan. Any copying or modification must credit the author."
},
"typeVersion": 1
},
{
"id": "7bdb7b09-6e19-4de0-9b4c-ca65c4b9c8e9",
"name": "Section 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2224,
-400
],
"parameters": {
"color": 7,
"width": 856,
"height": 580,
"content": "## Section 1: Fetch & Pre-process Emails\nPolls Gmail periodically, formats the raw email payload (sender, date, stripping HTML), and filters out newsletters or automated bot messages using predefined keywords."
},
"typeVersion": 1
},
{
"id": "f3d89a58-5ceb-43bf-8d61-eddda4a13ddb",
"name": "Section 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1312,
-400
],
"parameters": {
"color": 7,
"width": 840,
"height": 996,
"content": "## Section 2: Deduplication & AI Analysis\nQueries the n8n Data Table to check for previously processed message IDs. If it's a new email, it pushes the clean content to the Gemini AI Agent to extract structured summaries, priority, and required actions."
},
"typeVersion": 1
},
{
"id": "d6a5bbb9-3591-4953-aab4-bd0f219928cd",
"name": "Section 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-416,
-400
],
"parameters": {
"color": 7,
"width": 600,
"height": 580,
"content": "## Section 3: Logging & Urgent Alerts\nSaves the comprehensive AI assessment into the n8n Data Table. A logic gate checks the priority level; if 'High', it formats and sends an instant Telegram alert to the recipient."
},
"typeVersion": 1
},
{
"id": "5bb381ab-9cb1-4dea-ab0a-b445966e11c8",
"name": "Warning Setup",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2032,
-208
],
"parameters": {
"color": 3,
"width": 264,
"height": 220,
"content": "## \u26a0\ufe0f Important!\n\nYou MUST update the `data_table_id` inside the **Set Context** node and configure your **Telegram Chat ID** before testing. Make sure your Gemini and Gmail credentials are fully connected."
},
"typeVersion": 1
},
{
"id": "648ea0dd-5bf9-4959-9a31-354cde8f330f",
"name": "Author Message",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2224,
192
],
"parameters": {
"color": 4,
"width": 550,
"height": 364,
"content": "## Author Message\n\nHi! I am **Nguyen Thieu Toan (Jay Nguyen)** \u2014 a Verified n8n Creator and CEO/Founder of **GenStaff**. Thank you for using this template!\n\nThis workflow is shared with you for free. If it brings value to your work, optimizes your operations, or saves you time, you can buy me a coffee here: **[My Donate Website](https://nguyenthieutoan.com/payment/)** *(PayPal, Momo, Bank Transfer)*\n\n* Website: [nguyenthieutoan.com](https://nguyenthieutoan.com)\n* Email: me@nguyenthieutoan.com\n* Company: GenStaff ([genstaff.net](https://genstaff.net))\n* Socials (Facebook / X / LinkedIn): @nguyenthieutoan\n\n*Discover more of my automation solutions:* **[Click here](https://n8n.io/creators/nguyenthieutoan/)**"
},
"typeVersion": 1
},
{
"id": "78857866-163e-4162-985b-a8115101e6b2",
"name": "Gmail Trigger",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
-2192,
16
],
"parameters": {
"simple": false,
"filters": {},
"options": {
"downloadAttachments": false
},
"pollTimes": {
"item": [
{
"mode": "everyHour"
}
]
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.4
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"executionOrder": "v1"
},
"versionId": "6def4112-bc7f-4c0a-9bb5-f39596324f03",
"connections": {
"Set Context": {
"main": [
[
{
"node": "Parse Email Fields",
"type": "main",
"index": 0
}
]
]
},
"Gmail Trigger": {
"main": [
[
{
"node": "Set Context",
"type": "main",
"index": 0
}
]
]
},
"Is New Email?": {
"main": [
[
{
"node": "AI Email Analyzer",
"type": "main",
"index": 0
}
]
]
},
"Already Logged?": {
"main": [
[
{
"node": "Is New Email?",
"type": "main",
"index": 0
}
]
]
},
"AI Email Analyzer": {
"main": [
[
{
"node": "Log to Data Table",
"type": "main",
"index": 0
}
]
]
},
"Log to Data Table": {
"main": [
[
{
"node": "Notify via Telegram (High Priority)",
"type": "main",
"index": 0
}
]
]
},
"Parse Email Fields": {
"main": [
[
{
"node": "Filter Noise & Bots",
"type": "main",
"index": 0
}
]
]
},
"Filter Noise & Bots": {
"main": [
[
{
"node": "Already Logged?",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Flash": {
"ai_languageModel": [
[
{
"node": "AI Email Analyzer",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Parse Analysis JSON",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Parse Analysis JSON": {
"ai_outputParser": [
[
{
"node": "AI Email Analyzer",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Notify via Telegram (High Priority)": {
"main": [
[
{
"node": "Send Telegram Alert",
"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.
googleApigooglePalmApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow checks Gmail every hour, filters out automated senders, uses Google Gemini to summarize and classify each new email, logs the analysis to an n8n Data Table, and sends a Telegram alert when an email is marked as high priority. Runs every hour and pulls new emails…
Source: https://n8n.io/workflows/16032/ — 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.
An AI-powered Gmail assistant built with n8n that automatically labels emails, learns from your decisions, and safely improves over time using human-in-the-loop training.
This n8n template automates the collection, storage, and safety analysis of Facebook posts while simultaneously providing an interactive AI assistant on Telegram.
This workflow automatically transforms your messy inbox into a neatly organized space while ensuring you never miss a critical message. It connects to your Gmail account and triggers for every new ema
This workflow automates the process of extracting structured, usable information from unstructured email messages across multiple platforms.
Creators, marketers, and brands that want to turn a single product photo into premium motion clips, then optionally publish to Instagram/TikTok/YouTube via LATE. No editing skills required.