n8n monitoring: alerts when a workflow fails, hangs or never runs
n8n records a failed execution, but nobody is told when a scheduled workflow stops running. One HTTP Request node at the end of the workflow pings LastPing; an error workflow reports failures with the error message; LastPing alerts you when a run is missed.
Your assistant can do this for you
Monitor my n8n workflows with LastPing
On this page
What this catches
- A workflow that never ran: deactivated, a paused instance, a broken trigger or a full disk: no ping in the window opens an incident.
- A failed execution: the error workflow posts the error message to /fail, and it lands on the incident.
- A hung execution: with the start ping, a maximum runtime on the monitor catches a workflow that starts and never finishes.
- Recovery: the next successful run closes the incident on its own.
Set it up
Create a monitor that matches the workflow's trigger
For a Schedule Trigger, create a monitor with the same cron expression and time zone, plus a grace window. For a workflow started by events, set a silence floor instead: the longest normal gap between runs. Copy the ping URL.
Ping on success at the end of the workflow
Add an HTTP Request node as the last node. Method GET, URL your ping URL. In the node's settings, set On Error to Continue, so a network blip on the ping never fails your workflow.
Method: GET
URL: https://ping.lastping.dev/<uuid>?rid={{ $execution.id }}
Optional: ping start after the trigger
An HTTP Request node right after the trigger, calling /start with the same run id, arms a maximum runtime, so a workflow that hangs opens an incident.
Method: GET
URL: https://ping.lastping.dev/<uuid>/start?rid={{ $execution.id }}
Report failures from an error workflow
Create a second workflow with an Error Trigger node followed by an HTTP Request node that posts the error to /fail. Then open the monitored workflow's settings and choose it as the Error workflow.
Method: POST
URL: https://ping.lastping.dev/<uuid>/fail?rid={{ $json.execution.id }}
Send Body: on, Raw, text/plain
Body: {{ $json.workflow.name }}: {{ $json.execution.error.message }}
Good to know
n8n runs an error workflow for executions started by a trigger, not for manual test runs, so test the failure path with an active workflow. Alerts go to email, Slack, Discord, Telegram, Microsoft Teams, Google Chat, a signed webhook, or a push to your phone through ntfy or Pushover.
Questions people ask
-
How do I get alerted when an n8n workflow fails?
Create an error workflow with an Error Trigger node and an HTTP Request node that posts the error message to your LastPing monitor's /fail URL, then pick it as the Error workflow in the monitored workflow's settings. LastPing opens an incident with the message on it.
-
How do I know if a scheduled n8n workflow did not run?
Add an HTTP Request node at the end of the workflow that calls your LastPing ping URL, and give the monitor the same cron schedule as the Schedule Trigger. If no ping arrives within the grace window, LastPing alerts you.
-
Does it need an n8n community node?
No. The built-in HTTP Request node is enough: a GET for success, a POST with a text body for failure.
-
Is it free?
Yes. LastPing is free for individuals, with no monitor cap.
The workflow that stopped is the one nobody opens.
One node to add. Free for individuals.