A watchdog that runs inside n8n cannot tell you n8n is down.

Error workflows, assert-the-outcome steps, hourly audit workflows: all useful, and all running in the same process they are meant to watch. When that process hangs, stops firing, or has its watchdog quietly switched off, every one of them goes silent with it. And silence is indistinguishable from healthy. runheartbeat watches from outside your instance, so silence is the alert.

What only something outside can catch

The instance goes quiet. No heartbeat for three intervals and you get an alert. A dead container, a full disk, a lost network, or someone switching off the watchdog all land here. Nothing running inside n8n can report this, because it is not running.

An error workflow that is switched off. If the workflow you set under Settings → Error workflow has no active published version, n8n skips it, writes one line to the server log, and moves on. No failed execution, nothing in the UI, no notification. You believe you have alerting and you have none.

Workflows with no error workflow attached. n8n makes you wire this up one workflow at a time and gives you no global switch, so every instance past a handful has gaps. We count them and name them.

What it catches that you would expect

An execution that hangs. Still running past your threshold, never finishing, never failing. n8n has nothing for this.

A workflow that fails. You get the failing node by name and a link straight to that execution. Eight repeats of the same failure arrive as one alert, not eight.

Two workflows, not one per workflow

Setup is two imports and done. One watchdog, one error reporter. You do not add a node to every workflow you want watched, and you do not touch them again when you build the next one.

That is not just less work. It is the reason the coverage list above can exist. The watchdog reads your instance through the n8n API and sees every workflow, including the ones you never wired anything into. A monitor you have to install workflow by workflow can only report on the workflows you remembered, and the ones you forgot are the ones worth worrying about.

It is also why the bill does not move when you build more. Forty workflows is forty chances to forget a step, but it is still one instance, and one instance is one price.

Pricing

Free while this is in beta, and one instance stays free after that. Accounts created during the beta keep the beta price on whatever they are running when billing starts. There is no card to enter today and nothing to cancel.

PlanInstancesPrice
Free1$0
Teamup to 5$29 / month
Agencyup to 25$99 / month

Every plan gets every alert type and all three channels. Nothing is held back from the free tier, because a watchdog with pieces removed is a watchdog you cannot trust.

Priced per instance, never per workflow. Your coverage gaps grow with your workflow count, so charging more for having more of them would be charging you for the problem.

What it does not do

It does not check that your data was correct.

A workflow that runs green and writes plausible but wrong values is a different problem, and the right tool for it lives inside the workflow: an assertion step that compares the record count against a range you expect, and throws if it does not match.

Use both. They fail in opposite directions. An in-workflow assertion catches bad data while n8n is healthy. runheartbeat catches the case where n8n is not healthy enough to run your assertion.

runheartbeat · monitoring for self-hosted n8n