Workflow: Email Summary Agent
Integrations: aggregate, gmail, noOp, scheduleTrigger, stickyNote, stopAndError

{"id": "M8oLW9Qd59zNJzg2", "meta": {"instanceId": "workflow-9c21771e", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:42.050907", "updatedAt": "2025-09-29T07:07:42.050923", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production"}, "name": "Email Summary Agent", "tags": ["automation", "n8n", "production-ready", "excellent", "optimized"], "nodes": [{"id": "94c09c05-539b-452e-83b7-0a029bbe6b7f", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [-120, -140], "parameters": {"width": 248.47086922498647, "height": 314.47468983163634, "content": "- Starts the workflow every day at 7 AM.\n- Adjust the time if you want the workflow to run at a different hour."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "5e5cbc87-5c01-438b-a1c0-e8468d3ee20b", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [160, -137.04548301590512], "parameters": {"width": 213.36643278764896, "height": 313.40934714314244, "content": "Fetches all emails received in the past 24 hours from the email address"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "9a82f5e9-7d0b-430f-9dbb-d8ae0b129dad", "name": "Daily 7AM Trigger", "type": "n8n-nodes-base.scheduleTrigger", "position": [-40, 0], "parameters": {"rule": {"interval": [{"triggerAtHour": 7}]}}, "typeVersion": 1.2, "notes": "This scheduleTrigger node performs automated tasks as part of the workflow."}, {"id": "dd3e4b10-187b-45ce-b999-f0143e5af134", "name": "Fetch Emails - Past 24 Hours", "type": "n8n-nodes-base.gmail", "position": [220, 0], "webhookId": "20f1d11d-8a69-43f3-9323-33eaf1b3b600", "parameters": {"filters": {"q": "={{ \n (() => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n return `isb.quantana@quantana.in after:${yesterday.getFullYear()}/${(yesterday.getMonth() + 1).toString().padStart(2, '0')}/${yesterday.getDate().toString().padStart(2, '0')}`;\n })()\n}}"}, "operation": "getAll", "returnAll": true}, "credentials": {"gmailOAuth2": {"id": "YFARhQXJAjbwXjSO", "name": "Vishal Gmail"}}, "typeVersion": 2.1, "notes": "This gmail node performs automated tasks as part of the workflow."}, {"id": "4a8fdfd9-93d7-43a2-92b0-88d845f217bf", "name": "Organize Email Data - Morning", "type": "n8n-nodes-base.aggregate", "position": [460, 0], "parameters": {"include": "specifiedFields", "options": {}, "aggregate": "aggregateAllItemData", "fieldsToInclude": "id, From, To, CC, snippet"}, "typeVersion": 1, "notes": "This aggregate node performs automated tasks as part of the workflow."}, {"id": "9e2426e8-57ba-4708-b66f-b58bd19eabff", "name": "Summarize Emails with OpenAI - Morning", "type": "n8n-nodes-base.noOp", "position": [680, 0], "parameters": {"modelId": {"__rl": true, "mode": "list", "value": "gpt-4o-mini", "cachedResultName": "GPT-4O-MINI"}, "options": {}, "messages": {"values": [{"content": "=Go through this email summary and identify all key details mentioned, any specific issues to look at, and action items.\nUse this format to output\n{\n \"summary_of_emails\": [\n \"Point 1\",\n \"Point 2\",\n \"Point 3\"\n ],\n \"actions\": [\n {\n \"name\": \"Name 1\",\n \"action\": \"Action 1\"\n },\n {\n \"name\": \"Name 1\",\n \"action\": \"Action 2\"\n },\n {\n \"name\": \"Name 2\",\n \"action\": \"Action 3\"\n }\n ]\n}\n\nInput Data:\n\n {{ $json.data.toJsonString() }}\n\n"}]}, "jsonOutput": true}, "credentials": {"openAiApi": {"id": "ksU2WMcMqe2lPgRw", "name": "OpenAi account"}}, "typeVersion": 1.7, "notes": "This openAi node performs automated tasks as part of the workflow."}, {"id": "4aa68ee8-d38f-418a-9f20-6cc76850c638", "name": "Send Summary - Morning", "type": "n8n-nodes-base.gmail", "position": [1040, 0], "webhookId": "83f2aeb9-7b6c-4336-b5ed-8acfcd259850", "parameters": {"sendTo": "team-email@example.com", "message": "=<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Email Summary - isbonline@quantana.in</title>\n <style>\n body {\n font-family: Arial, sans-serif;\n margin: 0;\n padding: 0;\n background-color: #f9f9f9;\n color: #333;\n line-height: 1.6;\n }\n .email-container {\n max-width: 600px;\n margin: 20px auto;\n background: #ffffff;\n border: 1px solid #ddd;\n border-radius: 10px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n }\n .email-header {\n background-color: #0073e6;\n color: #fff;\n padding: 20px;\n text-align: center;\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n }\n .email-header h1 {\n margin: 0;\n font-size: 24px;\n }\n .email-content {\n padding: 20px;\n }\n .section-title {\n font-size: 20px;\n color: #0073e6;\n margin-bottom: 10px;\n }\n ul {\n list-style: none;\n padding: 0;\n }\n ul li {\n margin: 10px 0;\n padding: 10px;\n background: #f4f4f4;\n border-left: 4px solid #0073e6;\n border-radius: 5px;\n }\n .action-item {\n font-weight: bold;\n margin: 5px 0;\n }\n .action-detail {\n margin-left: 10px;\n }\n .email-footer {\n background-color: #0073e6;\n color: #fff;\n text-align: center;\n padding: 10px;\n font-size: 14px;\n border-bottom-left-radius: 10px;\n border-bottom-right-radius: 10px;\n }\n </style>\n</head>\n<body>\n <div class=\"email-container\">\n <div class=\"email-header\">\n <h1>Email Summary</h1>\n </div>\n <div class=\"email-content\">\n <div>\n <h2 class=\"section-title\">Summary of Emails:</h2>\n <ul>\n {{ $json.message.content.summary_of_emails.map(email => `<li>${email}</li>`).join('') }}\n </ul>\n </div>\n <div>\n <h2 class=\"section-title\">Actions:</h2>\n <ul>\n {{ $json.message.content.actions.map(action => `\n <li>\n <span class=\"action-item\">${action.name}:</span>\n <span class=\"action-detail\">${action.action}</span>\n </li>\n `).join('') }}\n </ul>\n </div>\n </div>\n <div class=\"email-footer\">\n <p>Generated by Quantana ESAgent <br /> A Quantana AI Labs Initiative\n </div>\n </div>\n</body>\n</html>", "options": {"ccList": "cc-list@example.com", "appendAttribution": false, "replyToSenderOnly": false}, "subject": "=ESAgent - {{ new Date(new Date().setDate(new Date().getDate() - 1)).toLocaleDateString('en-GB', { day: '2-digit', month: 'short', year: 'numeric' }) }}-00:00 to {{ new Date(new Date().setDate(new Date().getDate())).toLocaleDateString('en-GB', { day: '2-digit', month: 'short', year: 'numeric' }) }}-07:00AM"}, "credentials": {"gmailOAuth2": {"id": "YFARhQXJAjbwXjSO", "name": "Vishal Gmail"}}, "typeVersion": 2.1, "notes": "This gmail node performs automated tasks as part of the workflow."}, {"id": "c7667667-9533-40cb-9c09-914a11560600", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [400, -132.6641804468672], "parameters": {"width": 226.7095107678671, "height": 305.83657700487913, "content": "Organizes the fetched email data, extracting fields like sender, receiver, CC, and a preview snippet."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "43955af4-3a18-44d7-8c8d-cf8051b18bdd", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [980, -180], "parameters": {"width": 232.8435827211592, "height": 359.7308639651144, "content": "- Sends the summarized email report to recipients with a styled HTML layout.\n- Update the \"sendTo\" and \"ccList\" fields with the email addresses of your recipients.\n\n"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "error-90147a4b", "name": "Error Handler", "type": "n8n-nodes-base.stopAndError", "typeVersion": 1, "position": [1000, 400], "parameters": {"message": "Workflow execution error", "options": {}}}], "active": false, "pinData": {}, "settings": {"timezone": "UTC", "callerPolicy": "workflowsFromSameOwner", "executionOrder": "v1", "saveManualExecutions": true, "errorWorkflow": null, "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000}, "versionId": "b18912ed-6c1f-4912-b75a-1553f7620917", "connections": {"9e2426e8-57ba-4708-b66f-b58bd19eabff": {"main": [[{"node": "error-handler-9e2426e8-57ba-4708-b66f-b58bd19eabff-45adbdab", "type": "main", "index": 0}]]}}, "description": "Automated workflow: Email Summary Agent. This workflow integrates 6 different services: stickyNote, scheduleTrigger, stopAndError, gmail, aggregate. It contains 10 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: Email Summary Agent. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}