Workflow: Error Code Automation

Workflow Details

Download Workflow
{
    "id": "vnhhf9aNsw0kzdBV",
    "meta": {
        "instanceId": "8fccc85e4982eaaf920505127420cfb3a600b56930a56e499973488bb6dc5e3a",
        "templateCredsSetupCompleted": true
    },
    "name": "CV Evaluation - Error Handling",
    "tags": [
        {
            "id": "GLfSiUrpHvSix03S",
            "name": "Error Handling",
            "createdAt": "2025-03-03T17:54:29.858Z",
            "updatedAt": "2025-03-03T17:54:29.858Z"
        }
    ],
    "nodes": [
        {
            "id": "e2fd6e88-ae06-48ea-a73f-8e523b747a33",
            "name": "Error Trigger",
            "type": "n8n-nodes-base.errorTrigger",
            "position": [
                -40,
                180
            ],
            "parameters": [],
            "typeVersion": 1
        },
        {
            "id": "6b75ee9b-4540-4199-a393-c3e2583fd6bb",
            "name": "Gmail",
            "type": "n8n-nodes-base.gmail",
            "position": [
                1360,
                160
            ],
            "webhookId": "d9c9328c-5be7-4ebe-a20a-c025e52cdf46",
            "parameters": {
                "sendTo": "={{ $json.config.emailing.sendTo }}",
                "message": "=<p>Workflow <a href=\"{{ $json.workflow.url }}\">{{ $json.workflow.id }}<\/a> ({{ $json.workflow.name }})<br\/>\nhas triggered the error handling workflow <a href=\"{{ $json.errorHandlingWorkflow.url }}\">{{ $json.errorHandlingWorkflow.id }}<\/a> ({{ $json.errorHandlingWorkflow.name }})<br\/>\nwith the error details below.<\/p>\n{{ $json.html }}\n<h2>Error handling JSON (complete error handling data)<\/h2>\n<pre>\n{{ JSON.stringify({\n  execution: $json.execution,\n  trigger: $json.trigger,\n  workflow: $json.workflow,\n  errorHandlingWorkflow: $json.errorHandlingWorkflow,\n}, null, 2) }}\n<\/pre>",
                "options": {
                    "senderName": "={{ $json.config.emailing.senderName }}"
                },
                "subject": "=Workflow {{ $json.workflow.id }} ({{ $json.workflow.name }}) {{ $json.workflow.isExecutionError ? \"execution error\" : \"trigger failure\" }}: {{ $json.execution.error.message || $json.trigger.error.message }}"
            },
            "credentials": {
                "gmailOAuth2": {
                    "id": "DsQxovsVtYdErSwk",
                    "name": "Gmail m42g@g"
                }
            },
            "typeVersion": 2.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "2a3fd36f-a04b-4b43-bc5a-ac9d18adea82",
            "name": "Merge",
            "type": "n8n-nodes-base.merge",
            "position": [
                1160,
                160
            ],
            "parameters": {
                "mode": "combine",
                "options": [],
                "combineBy": "combineByPosition"
            },
            "typeVersion": 3
        },
        {
            "id": "b93cf843-42a2-4f64-873a-afdef2451934",
            "name": "Config",
            "type": "n8n-nodes-base.set",
            "position": [
                120,
                180
            ],
            "parameters": {
                "options": {
                    "dotNotation": true
                },
                "assignments": {
                    "assignments": [
                        {
                            "id": "53ac5417-db98-41e5-bc6d-acb6dd1fec42",
                            "name": "config.appUrl",
                            "type": "string",
                            "value": "https:\/\/YourAccountName.app.n8n.cloud\/"
                        },
                        {
                            "id": "0f85c65a-80bb-4977-90b9-1b4e741b5f70",
                            "name": "config.emailing.sendTo",
                            "type": "string",
                            "value": "recipient@gmail.com"
                        },
                        {
                            "id": "138c091f-7cd4-453a-9c75-5d193b617a39",
                            "name": "config.emailing.senderName",
                            "type": "string",
                            "value": "Marvin the Yeoman Warder"
                        }
                    ]
                },
                "includeOtherFields": true
            },
            "typeVersion": 3.399999999999999911182158029987476766109466552734375
        },
        {
            "id": "5da22c60-fa54-4ddf-add8-f2b26610ef92",
            "name": "Constants",
            "type": "n8n-nodes-base.set",
            "position": [
                280,
                180
            ],
            "parameters": {
                "options": {
                    "dotNotation": true
                },
                "assignments": {
                    "assignments": [
                        {
                            "id": "d69f8081-b58c-4283-a424-a2804c51258a",
                            "name": "workflow.url",
                            "type": "string",
                            "value": "={{ $json.config.appUrl + \"workflow\/\" + $json.workflow.id }}"
                        },
                        {
                            "id": "735040f7-8f6e-4bda-a1be-e7784132ead8",
                            "name": "workflow.isExecutionError",
                            "type": "boolean",
                            "value": "={{ Boolean($json.execution) }}"
                        },
                        {
                            "id": "9206cdcc-4387-47e9-902e-f7d6b1f6893f",
                            "name": "errorHandlingWorkflow.id",
                            "type": "string",
                            "value": "={{ $workflow.id }}"
                        },
                        {
                            "id": "21de1fda-f4e4-4aef-afee-e3d7e6635f42",
                            "name": "errorHandlingWorkflow.name",
                            "type": "string",
                            "value": "={{ $workflow.name }}"
                        },
                        {
                            "id": "651ff8f3-be7b-4990-8248-38383f6d5f6a",
                            "name": "errorHandlingWorkflow.url",
                            "type": "string",
                            "value": "={{ $json.config.appUrl + \"workflow\/\" + $workflow.id }}"
                        }
                    ]
                },
                "includeOtherFields": true
            },
            "typeVersion": 3.399999999999999911182158029987476766109466552734375
        },
        {
            "id": "a3e45087-e799-4b1b-b420-8d106bdd6daf",
            "name": "If",
            "type": "n8n-nodes-base.if",
            "position": [
                460,
                40
            ],
            "parameters": {
                "options": [],
                "conditions": {
                    "options": {
                        "version": 2,
                        "leftValue": "",
                        "caseSensitive": true,
                        "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                        {
                            "id": "a757d78d-799b-401b-8c01-3103fddfe757",
                            "operator": {
                                "type": "boolean",
                                "operation": "true",
                                "singleValue": true
                            },
                            "leftValue": "={{ $json.workflow.isExecutionError }}",
                            "rightValue": "={{ true }}"
                        }
                    ]
                }
            },
            "typeVersion": 2.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "249a330d-1e9f-412c-a067-c96fbbcd1e6f",
            "name": "HTML for Execution Error",
            "type": "n8n-nodes-base.html",
            "position": [
                660,
                -140
            ],
            "parameters": {
                "html": "<h2>Execution details<\/h2>\n<p>See execution details at <a href=\"{{ $json.execution.url }}\">{{ $json.execution.url }}<\/a><\/p>\n<p>Execution id: {{ $json.execution.id }}<\/p>\n<p>retryOf: {{ $json.execution.retryOf }}<\/p>\n<p>lastNodeExecuted: {{ $json.execution.lastNodeExecuted }}<\/p>\n<p>mode: {{ $json.execution.mode }}<\/p>\n<p>Message: {{ $json.execution.error.message }}<\/p>\n<h3>Stack trace<\/h3>\n<pre>\n{{ $json.execution.error.stack }}\n<\/pre>"
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875,
            "alwaysOutputData": true
        },
        {
            "id": "cc9e2e40-7858-4d86-bfda-65b4ad9f6ada",
            "name": "HTML for Trigger Error",
            "type": "n8n-nodes-base.html",
            "position": [
                660,
                40
            ],
            "parameters": {
                "html": "<h2>Trigger failure details<\/h2>\n<p>A trigger on main workflow has thrown an error.<\/p>\n<h3>Mode<\/h3>\n<p>{{ $json.trigger.mode }}<\/p>\n<h3>Error<\/h3>\n<p>Message: {{ $json.trigger.error.message }}<\/p>\n<p>DateTime: {{ DateTime.fromMillis($json.trigger.error.timestamp) }}<\/p>\n<p>Name: {{ $json.trigger.error.name }}<\/p>\n<p>Description: {{ $json.trigger.error.description }}<\/p>\n<p>Context:<br\/>\n<pre>{{ JSON.stringify($json.trigger.error.context, null, 2) }}<\/pre><\/p>\n\n<h3>Cause<\/h3>\n<p>Message: {{ $json.trigger.error.cause.message }}<\/p>\n<p>Name: {{ $json.trigger.error.cause.name }}<\/p>\n<p>Code:{{ $json.trigger.error.cause.code }} <\/p>\n<p>Status: {{ $json.trigger.error.cause.status }}<\/p>\n<h3>Stack trace<\/h3>\n<pre>\n{{ $json.trigger.error.cause.stack }}\n<\/pre>"
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875,
            "alwaysOutputData": true
        },
        {
            "id": "865dc047-69fc-4409-888b-701468746945",
            "name": "KeepEitherOfHTMLs",
            "type": "n8n-nodes-base.merge",
            "position": [
                900,
                -40
            ],
            "parameters": {
                "mode": "combine",
                "options": {
                    "includeUnpaired": true
                },
                "combineBy": "combineByPosition"
            },
            "typeVersion": 3
        },
        {
            "id": "4d975de4-b458-43ac-9bfd-d6ab8205dc9a",
            "name": "Code",
            "type": "n8n-nodes-base.code",
            "position": [
                100,
                480
            ],
            "parameters": [],
            "typeVersion": 2
        },
        {
            "id": "e85a2fd7-eaff-4390-93ed-27c038aab890",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                60,
                -40
            ],
            "parameters": {
                "color": 5,
                "width": 220,
                "height": 380,
                "content": "## Config\n\nDefine\n- your n8n app base url\n- notifications recipient email \n- sender name"
            },
            "typeVersion": 1
        },
        {
            "id": "efedfd1a-8e4f-44cb-aa0b-e10608f2328d",
            "name": "Sticky Note1",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                60,
                -1000
            ],
            "parameters": {
                "color": 4,
                "width": 1060,
                "height": 820,
                "content": "## Send email via Gmail on workflow error (execution and trigger-level errors)\n\nThis error handling workflow sends an email via Gmail on workflow errors with details.\n\nIt extends https:\/\/n8n.io\/workflows\/696-send-email-via-gmail-on-workflow-error\/ by adding functionality covering also trigger-level errors.\n\n\n---\n\n### Features\n- Get notifications on both main workflow trigger and execution time errors.\n- Subject line will have the failed workflow id, name, error source (execution or trigger), error message.\n- Body will contain links to both failed and error handling workflows as well as execution or trigger error details.\n- Body will also contain a machine readable and enriched JSON from **`Error Trigger`** describing the error.\n\nUse this **error handling workflow** for as many workflows as you wish.\n\n\n---\n\n### Configiration\n- Copy this workflow to your workspace and, optionally, move it under the project that contains your main workflow\n- In this **error handling workflow** settings, set **This workflow can be called by** as appropriate\n- In **`Config`** node, define your app url, notifications recipient email, and sender name (useful to build filters in your inbox)\n- In **`Gmail`** node, create and select **credentials**\n- In your **main workflow** settings, pick this error handling workflow in the **Error Workflow** field ([How to...](https:\/\/docs.n8n.io\/flow-logic\/error-handling\/#create-and-set-an-error-workflow))\n\n\n---\n\n### Related resources\n- [n8n Error Trigger](https:\/\/docs.n8n.io\/integrations\/builtin\/core-nodes\/n8n-nodes-base.errortrigger\/) documentation.\n\n\n---\n\n### Author\n- Reach out [Olek](https:\/\/community.n8n.io\/u\/olek\/summary) on community.n8n.io\n- [Olek](https:\/\/n8n.io\/creators\/olek\/) on n8n creators hub"
            },
            "typeVersion": 1
        },
        {
            "id": "98d42327-3d06-4fc0-a31c-64114ae5cfc2",
            "name": "Sticky Note2",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1300,
                -40
            ],
            "parameters": {
                "height": 380,
                "content": "## Gmail credentials\nSetup your Gmail account credentials here."
            },
            "typeVersion": 1
        }
    ],
    "active": false,
    "pinData": [],
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "aef68c1b-3efa-4f48-97ba-23c686cb7683",
    "connections": {
        "If": {
            "main": [
                [
                    {
                        "node": "HTML for Execution Error",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "HTML for Trigger Error",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Merge": {
            "main": [
                [
                    {
                        "node": "Gmail",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Config": {
            "main": [
                [
                    {
                        "node": "Constants",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Constants": {
            "main": [
                [
                    {
                        "node": "Merge",
                        "type": "main",
                        "index": 1
                    },
                    {
                        "node": "If",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Error Trigger": {
            "main": [
                [
                    {
                        "node": "Config",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "KeepEitherOfHTMLs": {
            "main": [
                [
                    {
                        "node": "Merge",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "HTML for Trigger Error": {
            "main": [
                [
                    {
                        "node": "KeepEitherOfHTMLs",
                        "type": "main",
                        "index": 1
                    }
                ]
            ]
        },
        "HTML for Execution Error": {
            "main": [
                [
                    {
                        "node": "KeepEitherOfHTMLs",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

e-mail Chatbot with both semantic and structured RAG, using Telegram and Pgvector
View
Mattermost Noop Automate Triggered
View
Manual HTTP Create Webhook
View
Manual Code Create Webhook
View
Amazon keywords
View
Dynamically generate HTML page from user request using OpenAI Structured Output
View
Analyze_Crowdstrike_Detections__search_for_IOCs_in_VirusTotal__create_a_ticket_in_Jira_and_post_a_message_in_Slack
View
Send daily weather updates via a message using the Gotify node
View
YT New Video Upload
View
Notify_user_in_Slack_of_quarantined_email_and_create_Jira_ticket_if_opened
View