Workflow: Error Code Send

Workflow Details

Download Workflow
{
    "id": "3b1q6ZJTxeONrpUV",
    "meta": {
        "instanceId": ""
    },
    "name": "Error Alert and Summarizer",
    "tags": [],
    "nodes": [
        {
            "id": "d29a5b06-1609-416f-bc74-0274d3321019",
            "name": "Error Trigger",
            "type": "n8n-nodes-base.errorTrigger",
            "position": [
                -600,
                -40
            ],
            "parameters": [],
            "typeVersion": 1
        },
        {
            "id": "a71d3052-a89b-4e8e-baee-7fe245575f42",
            "name": "OpenAI Chat Model",
            "type": "@n8n\/n8n-nodes-langchain.lmChatOpenAi",
            "position": [
                528,
                180
            ],
            "parameters": {
                "model": {
                    "__rl": true,
                    "mode": "list",
                    "value": "gpt-4o",
                    "cachedResultName": "gpt-4o"
                },
                "options": []
            },
            "credentials": {
                "openAiApi": {
                    "id": "786",
                    "name": "OpenAi account"
                }
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875
        },
        {
            "id": "e71dee7b-4dfd-49ab-8939-f3808ee112d7",
            "name": "Structured Output Parser",
            "type": "@n8n\/n8n-nodes-langchain.outputParserStructured",
            "position": [
                648,
                180
            ],
            "parameters": {
                "jsonSchemaExample": "{\n\"diagnosis\":\"\",\n\"cause\":\"\",\n\"resolution\":\"\"\n}"
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875
        },
        {
            "id": "3611e9e8-f677-49c4-b06c-fa6c28f43930",
            "name": "SET EMAIL",
            "type": "n8n-nodes-base.set",
            "position": [
                -380,
                -40
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "45e1443a-fb44-42f8-96ad-423197c7265b",
                            "name": "TO",
                            "type": "string",
                            "value": "myemail@myemail.com"
                        },
                        {
                            "id": "968b05dc-f476-4e13-8166-e62005d0f936",
                            "name": "CC",
                            "type": "string",
                            "value": "theiremail@theiremail.com"
                        },
                        {
                            "id": "570663c5-29c0-44fb-9992-908b7cca8136",
                            "name": "BCC",
                            "type": "string",
                            "value": "theiremail@theiremail.com"
                        }
                    ]
                }
            },
            "typeVersion": 3.399999999999999911182158029987476766109466552734375
        },
        {
            "id": "3676f72e-d06d-44f8-be35-19efe09a257e",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -450,
                -260
            ],
            "parameters": {
                "color": 3,
                "height": 380,
                "content": "# SET YOUR EMAILS"
            },
            "typeVersion": 1
        },
        {
            "id": "f0b08a20-6ecc-4487-9a0a-30be07cc0cbb",
            "name": "Sticky Note1",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -40,
                -260
            ],
            "parameters": {
                "color": 3,
                "width": 280,
                "height": 380,
                "content": "# Enable\/Disable Manual Executions"
            },
            "typeVersion": 1
        },
        {
            "id": "b35cd2a6-5f22-4e06-9bb0-880855c423a8",
            "name": "Remove Manual Exec",
            "type": "n8n-nodes-base.if",
            "position": [
                60,
                -40
            ],
            "parameters": {
                "options": {
                    "ignoreCase": true
                },
                "conditions": {
                    "options": {
                        "version": 2,
                        "leftValue": "",
                        "caseSensitive": false,
                        "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                        {
                            "id": "9b2f3ff3-db9c-406b-a97f-37620dc5fab9",
                            "operator": {
                                "type": "string",
                                "operation": "notContains"
                            },
                            "leftValue": "={{ $json.mode }}",
                            "rightValue": "manual"
                        }
                    ]
                }
            },
            "typeVersion": 2.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "2a33b02a-78f1-4243-ba7d-f217ea4d1895",
            "name": "Get Failed Exec",
            "type": "n8n-nodes-base.n8n",
            "position": [
                -160,
                -40
            ],
            "parameters": {
                "options": {
                    "activeWorkflows": true
                },
                "resource": "execution",
                "operation": "get",
                "executionId": "={{ $('Error Trigger').item.json.execution.id }}",
                "requestOptions": []
            },
            "credentials": {
                "n8nApi": {
                    "id": "786",
                    "name": "n8n account"
                }
            },
            "typeVersion": 1
        },
        {
            "id": "b36ccbf9-4e47-44fc-aed3-424b6f121329",
            "name": "Extract Error Details",
            "type": "n8n-nodes-base.code",
            "position": [
                280,
                -40
            ],
            "parameters": {
                "jsCode": "\/\/ 1) Grab your full execution JSON\nconst exec = items[0].json;\n\n\/\/ 2) Build execution\u2010level metadata\nconst meta = {\n  executionId:    exec.id,\n  finished:       exec.finished,\n  mode:           exec.mode,\n  status:         exec.status,\n  createdAt:      exec.createdAt,\n  startedAt:      exec.startedAt,\n  stoppedAt:      exec.stoppedAt,\n  deletedAt:      exec.deletedAt,\n  workflowId:     exec.workflowId,\n  workflowName:   exec.workflowData?.name,\n  retryOf:        exec.retryOf,\n  retrySuccessId: exec.retrySuccessId,\n};\n\n\/\/ 3) Identify trigger node name from startData\nconst runNodeFilter = exec.data?.startData?.runNodeFilter || [];\nconst triggerNodeName = runNodeFilter[0] || null;\n\n\/\/ 4) Grab the raw trigger runData\nconst runData = exec.data?.resultData?.runData || {};\nconst triggerRuns = triggerNodeName ? (runData[triggerNodeName] || []) : [];\n\n\/\/ 5) Extract the JSON payload from the first run of the trigger\nlet triggerPayload = {};\nif (triggerRuns.length && triggerRuns[0].data?.main?.[0]?.[0]?.json) {\n  triggerPayload = triggerRuns[0].data.main[0][0].json;\n}\n\n\/\/ 6) Merge trigger info into meta\nmeta.triggerNodeName = triggerNodeName;\nmeta.triggerPayload  = triggerPayload;\n\n\/\/ 7) Now scan for all node errors, **excluding** any nodeName that contains \u201cSERP\u201d\nconst allErrors = [];\nfor (const [nodeName, runs] of Object.entries(runData)) {\n  \/\/ Skip any of the SERP nodes\n  if (nodeName.includes('SERP')) continue;\n\n  runs.forEach(run => {\n    if (run.executionStatus === 'error') {\n      const err     = run.error || exec.data.resultData.error || {};\n      const nodeDef = err.node || run.node || {};\n\n      allErrors.push({\n        ...meta,                    \/\/ exec + trigger metadata\n\n        nodeName,\n        nodeId:        nodeDef.id,\n        nodeType:      nodeDef.type,\n        nodeLabel:     nodeDef.name,\n\n        startTime:     run.startTime,\n        executionTime: run.executionTime,\n        source:        run.source,\n\n        errorName:        err.name,\n        errorMessage:     err.message,\n        errorDescription: err.description,\n        httpCode:         err.httpCode,\n        messages:         err.messages,\n        context:          err.context,\n        stack:            err.stack,\n\n        parameters:       nodeDef.parameters,\n        credentials:      nodeDef.credentials,\n      });\n    }\n  });\n}\n\n\/\/ 8) Return results\nif (!allErrors.length) {\n  return [{ json: { message: '\u2705 No (non\u2011SERP) errors found in this execution.' } }];\n}\nreturn allErrors.map(e => ({ json: e }));\n"
            },
            "typeVersion": 2
        },
        {
            "id": "a26fb0c8-99eb-466d-b201-89c402fa1af4",
            "name": "Error Solver Agent",
            "type": "@n8n\/n8n-nodes-langchain.agent",
            "position": [
                500,
                -40
            ],
            "parameters": {
                "text": "=Can you please help me with this error that occured in my n8n workflow? {{ JSON.stringify($json) }}",
                "options": {
                    "systemMessage": "You are an seasoned n8n expert with specializations in managing n8n instances and workflows. The user will provide a detailed error json object and your goal is to review, analyze and understand the error and using your expertise diagnose the error and provide a detailed report to the user with your diagnosis, cause and resolution so the user understands and can immediately fix the issue."
                },
                "promptType": "define",
                "hasOutputParser": true
            },
            "typeVersion": 1.8000000000000000444089209850062616169452667236328125
        },
        {
            "id": "8cfd7229-3ff1-4ba1-a67d-caa21be8064f",
            "name": "Set Diagnosis Fields",
            "type": "n8n-nodes-base.set",
            "position": [
                876,
                -40
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "fac5fbee-d63d-4148-b047-5ed5af4f2574",
                            "name": "error.diagnosis",
                            "type": "string",
                            "value": "={{ $json.output.diagnosis }}"
                        },
                        {
                            "id": "ece9388d-f667-4984-a143-7241f622fe76",
                            "name": "error.cause",
                            "type": "string",
                            "value": "={{ $json.output.cause }}"
                        },
                        {
                            "id": "acb6b34a-a651-42fc-a44a-331b2e0d745c",
                            "name": "error.resolution",
                            "type": "string",
                            "value": "={{ $json.output.resolution }}"
                        },
                        {
                            "id": "c765754b-d6d5-4592-ac3f-99a350bc3c19",
                            "name": "error.workflowName",
                            "type": "string",
                            "value": "={{ $('Extract Error Details').item.json.workflowName }}"
                        },
                        {
                            "id": "dabebc62-3e0c-4d22-afbf-54ba66a912fb",
                            "name": "error.workflowId",
                            "type": "string",
                            "value": "={{ $('Extract Error Details').item.json.workflowId }}"
                        },
                        {
                            "id": "6ab19800-9a0f-439f-bf62-7a7afc5bf958",
                            "name": "workflowLink",
                            "type": "string",
                            "value": "={{ $execution.resumeUrl.split('\/').slice(0, 3).join('\/') }}\/workflow\/{{ $('Extract Error Details').item.json.workflowId }}"
                        },
                        {
                            "id": "29daaea5-052b-46d4-8192-141db159bff2",
                            "name": "error.executionId",
                            "type": "string",
                            "value": "={{ $('Extract Error Details').item.json.executionId }}"
                        },
                        {
                            "id": "9e4e553c-c82b-41ec-8ee2-14162cdc3bd8",
                            "name": "executionLink",
                            "type": "string",
                            "value": "={{ $execution.resumeUrl.split('\/').slice(0, 3).join('\/') }}\/workflow\/{{ $('Extract Error Details').item.json.workflowId }}\/executions\/{{ $('Extract Error Details').item.json.executionId }}"
                        },
                        {
                            "id": "7269ea9f-ed49-46cd-89f2-d4a467da529d",
                            "name": "error.finished",
                            "type": "boolean",
                            "value": "={{ $('Extract Error Details').item.json.finished }}"
                        },
                        {
                            "id": "29a6e6d2-5058-4dd9-b2f9-3980a6a9073a",
                            "name": "error.startedAt",
                            "type": "string",
                            "value": "={{ $('Extract Error Details').item.json.startedAt }}"
                        },
                        {
                            "id": "a0ad0e13-5a6e-48db-9a80-74c09434de7f",
                            "name": "error.nodeName",
                            "type": "string",
                            "value": "={{ $('Extract Error Details').item.json.nodeName }}"
                        },
                        {
                            "id": "6c1001d4-a581-4520-9f16-a2c7cf0e1f84",
                            "name": "error.previousNode",
                            "type": "string",
                            "value": "={{ $('Extract Error Details').item.json.source[0].previousNode }}"
                        },
                        {
                            "id": "8c3402ca-3f15-44ae-9b96-ea37c174334c",
                            "name": "rawJson",
                            "type": "string",
                            "value": "={{ JSON.stringify($('Extract Error Details').item.json) }}"
                        }
                    ]
                }
            },
            "typeVersion": 3.399999999999999911182158029987476766109466552734375
        },
        {
            "id": "9e95edf0-b2f1-443b-9ac4-3e3b3311cad5",
            "name": "Send Gmail",
            "type": "n8n-nodes-base.gmail",
            "position": [
                1316,
                -40
            ],
            "webhookId": "2f253c1f-36c3-4d58-ba2f-3a50bb78f188",
            "parameters": {
                "sendTo": "={{ $('SET EMAIL').item.json.TO }}",
                "message": "={{ $json.html }}",
                "options": {
                    "ccList": "={{ $('SET EMAIL').item.json.CC }}",
                    "bccList": "={{ $('SET EMAIL').item.json.BCC }}",
                    "appendAttribution": true
                },
                "subject": "={{ $json.subject }}"
            },
            "credentials": {
                "gmailOAuth2": {
                    "id": "786",
                    "name": "Gmail account"
                }
            },
            "typeVersion": 2.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "1705ee42-0be4-41a2-8ff9-f6963eef7382",
            "name": "Generate Email",
            "type": "n8n-nodes-base.code",
            "position": [
                1100,
                -40
            ],
            "parameters": {
                "jsCode": "\/\/ 1. Pull in your error payload\nconst rawInput = items[0].json;\nconst parsed = typeof rawInput === 'string' ? JSON.parse(rawInput) : rawInput;\nconst errorArray = Array.isArray(parsed) ? parsed : [parsed];\n\n\/\/ 2. Build HTML & Markdown sections\nlet htmlSections = '';\n\n\nfor (const errObj of errorArray) {\n  const {\n    error: {\n      workflowName,\n      executionId,\n      nodeName,\n      previousNode,\n      diagnosis,\n      cause,\n      resolution,\n      startedAt,\n    },\n    workflowLink,\n    executionLink,\n  } = errObj;\n\n  \/\/ HTML block\n  htmlSections += `\n    <div style=\"border:1px solid #ddd;border-radius:4px;padding:16px;margin-bottom:20px;background:#fafafa;\">\n      <h3 style=\"margin:0 0 10px;color:#c0392b;font-family:Arial,sans-serif;\">\n        \ud83d\uded1 ${workflowName} \u2014 Error in node: ${nodeName}\n      <\/h3>\n      <p style=\"margin:4px 0;font-family:Arial,sans-serif;\">\n        <strong>Workflow:<\/strong> \n        <a href=\"${workflowLink}\" style=\"color:#2980b9;text-decoration:none;\">\n          ${workflowName}\n        <\/a><br\/>\n        <strong>Execution:<\/strong> \n        <a href=\"${executionLink}\" style=\"color:#2980b9;text-decoration:none;\">\n          #${executionId}\n        <\/a><br\/>\n        <strong>Previous Node:<\/strong> ${previousNode}<br\/>\n        <strong>Started At:<\/strong> ${new Date(startedAt).toLocaleString('en-US', { timeZone: 'America\/New_York' })}\n      <\/p>\n      <hr style=\"border:none;border-top:1px solid #ccc;margin:12px 0;\"\/>\n      <h4 style=\"margin:0 0 6px;color:#e67e22;font-family:Arial,sans-serif;\">\ud83d\udd0d Diagnosis<\/h4>\n      <p style=\"margin:4px 0 12px;font-family:Arial,sans-serif;\">${diagnosis}<\/p>\n      <h4 style=\"margin:0 0 6px;color:#e67e22;font-family:Arial,sans-serif;\">\u2699\ufe0f Cause<\/h4>\n      <p style=\"margin:4px 0 12px;font-family:Arial,sans-serif;\">${cause}<\/p>\n      <h4 style=\"margin:0 0 6px;color:#e67e22;font-family:Arial,sans-serif;\">\u2705 Resolution<\/h4>\n      <p style=\"white-space:pre-wrap;margin:4px 0;font-family:Arial,sans-serif;\">${resolution}<\/p>\n    <\/div>`;\n\n\/\/ 3. Wrap up\nconst html = `\n  <div style=\"font-family:Arial,sans-serif;color:#333;background:#fff;padding:20px;\">\n    <h2 style=\"margin-top:0;color:#2c3e50;\">Automated Error Report<\/h2>\n    ${htmlSections}\n     <p style=\"font-size:12px;color:#777;font-family:Arial,sans-serif;\">\n  This message was generated automatically by \n  <a href=\"https:\/\/realsimple.dev\" style=\"color:#777;text-decoration:none;\"><b>Real Simple Solutions<\/b><\/a>.\n<\/p>\n<div style=\"background:#f0f4ff;padding:8px 12px;margin-top:6px;border-radius:6px;font-size:12px;font-family:Arial,sans-serif;\">\n  \u2728 <strong>Want more n8n AI automation templates?<\/strong><br>\n  Check out our full collection on \n  <a href=\"https:\/\/joeper.es\/4jXyRub\" style=\"color:#0066cc;text-decoration:none;\"><b>Gumroad<\/b><\/a>.\n<\/div>\n  <\/div>\n`;\n\n\/\/ 4. Return all three\nreturn [\n  {\n    json: {\n      subject: `\ud83d\udea8 n8n Error: ${errorArray[0].error.workflowName} (#${errorArray[0].error.executionId})`,\n      html\n    },\n  },\n];\n"
            },
            "typeVersion": 2
        }
    ],
    "active": true,
    "pinData": [],
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "be484a20-26cd-4df4-a993-f7d01c2956e6",
    "connections": {
        "SET EMAIL": {
            "main": [
                [
                    {
                        "node": "Get Failed Exec",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Error Trigger": {
            "main": [
                [
                    {
                        "node": "SET EMAIL",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Generate Email": {
            "main": [
                [
                    {
                        "node": "Send Gmail",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Get Failed Exec": {
            "main": [
                [
                    {
                        "node": "Remove Manual Exec",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "OpenAI Chat Model": {
            "ai_languageModel": [
                [
                    {
                        "node": "Error Solver Agent",
                        "type": "ai_languageModel",
                        "index": 0
                    }
                ]
            ]
        },
        "Error Solver Agent": {
            "main": [
                [
                    {
                        "node": "Set Diagnosis Fields",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Remove Manual Exec": {
            "main": [
                [
                    {
                        "node": "Extract Error Details",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Set Diagnosis Fields": {
            "main": [
                [
                    {
                        "node": "Generate Email",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Extract Error Details": {
            "main": [
                [
                    {
                        "node": "Error Solver Agent",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Structured Output Parser": {
            "ai_outputParser": [
                [
                    {
                        "node": "Error Solver Agent",
                        "type": "ai_outputParser",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

ProspectLens company research
View
Manual Graphql Automate Triggered
View
Linkedin to Airtable
View
Code Schedule Import Webhook
View
Aggregate HTTP Create Webhook
View
Google Calendar Event Reminder
View
GoogleSheets Slack Send Triggered
View
Postgrestool Stickynote Send Triggered
View
🌐🪛 AI Agent Chatbot with Jina.ai Webpage Scraper
View
Wait Code Send Scheduled
View