2 min read

πŸ«€ Monitor Your n8n Cron Jobs with BetterStack Heartbeats

When you're running time-based workflows in n8n β€” like scheduled reports, cleanup jobs, or daily integrations β€” it's easy to assume everything "just works." But what if something breaks silently? What if the workflow fails to start, or gets stuck?
πŸ«€ Monitor Your n8n Cron Jobs with BetterStack Heartbeats

This is where BetterStack Heartbeats shine. You can think of them as a simple β€œping” monitor: if your workflow doesn’t check in on time, you get notified.

Here’s how to set it up.


πŸ”§ What You’ll Need

  • An n8n instance (self-hosted or cloud)
  • A BetterStack account (free tier is enough!)
  • A cron-based workflow you want to monitor

πŸ“‘ Step 1: Create a Heartbeat in BetterStack

  1. Log into your BetterStack dashboard.
  2. Go to the Heartbeats section and click "New Heartbeat."
  3. Give it a name like daily-report-cron.
  4. Set the expected interval β€” e.g., "every 1 day" or "every 6 hours".
  5. Copy the Ping URL they give you.

πŸ” Step 2: Add the Ping to Your n8n Workflow

In your workflow that starts with a Cron node:

  1. After the Cron trigger and your main logic (or at the end),
  2. Add an HTTP Request node.
  3. Set it to GET and paste in your BetterStack Ping URL.
  4. (Optional) Rename the node to something like Send Heartbeat.

This node will "ping" BetterStack every time the workflow completes.


⚠️ Step 3: Add Alerts in BetterStack

If a ping doesn't arrive on time, BetterStack will alert you via:

  • Email
  • Slack
  • PagerDuty
  • Webhook
  • ... or even SMS

You can configure alerts per heartbeat, or across your entire project.


πŸ›  Tips for Better Monitoring

  • Ping at the end of your workflow to confirm it completed successfully.
  • If your workflow has multiple branches or uses Execute Workflow, make sure all successful paths end with a GET request to your BetterStack Ping URL.
  • To report failures, add an error-handling path using the Error Trigger or IF/Catch logic, and make a GET or POST request to the same heartbeat URL, but with the /fail suffix.
    Example: https://betteruptime.com/api/v1/heartbeat/abc123/fail
    This tells BetterStack explicitly: β€œSomething went wrong.”
  • Use different heartbeats for different workflows (e.g., daily-sync, backup-cleanup, etc.), so you can quickly tell which one didn’t behave.

βœ… Why This Matters

n8n is great at running background jobs β€” but without external monitoring, failures can go unnoticed.
Adding a simple heartbeat turns your Cron workflows from silent assumptions into trustworthy, monitored systems.