Heartbeat Monitoring
Heartbeat monitoring is a push-based check — a "dead man's switch" for jobs that run on their own. Instead of us reaching out to a URL on a schedule, your job reaches out to us: it sends an HTTP request ("a ping") to a unique URL each time it finishes successfully. If an expected ping doesn't arrive in time, we open an incident and alert you, exactly as we would for a website going down.
It's the right check type for anything that runs in the background and produces no public endpoint to poll — the absence of a signal is the alert.
Use Cases
- Backups & snapshots — know the first night a backup doesn't run, not when you need to restore
- Queue workers & daemons — a periodic heartbeat proves the worker is actually processing, not just running
- Scheduled tasks & ETL — nightly imports, report generation, cache warming and data syncs
- Anything on a timer — if it should happen every N minutes/hours/days, a heartbeat catches a skipped run
How It Works
- Each heartbeat monitor gets a unique, unguessable ping URL
- You tell us how often the job should run (the expected interval) and how much lateness to tolerate (the grace period)
- Your job hits the ping URL when it finishes — we record the ping and schedule the next expected one
- If the expected interval plus the grace period elapse without a ping, we open an incident and notify you
- The next successful ping resolves the incident automatically
Setting Up a Heartbeat Monitor
- Click Add Monitor and select Heartbeat as the monitor type
- Give it a display name, choose the expected interval (e.g. every 5 minutes, hourly, daily) and a grace period
- Save the monitor — it stays in a pending state until its first ping arrives
- Copy the ping URL from the monitor's page and add it to the end of your job
Sending a Heartbeat
Hit the ping URL with any HTTP client when your job succeeds. GET, POST and
HEAD are all accepted. The most common approach is to chain a curl after the job
so it only fires on success:
# crontab — only pings if backup.sh exits 0
0 3 * * * /opt/backup.sh && curl -fsS https://your-domain/ping/your-token
To report a failed run and open an incident immediately, add ?status=fail:
/opt/job.sh || curl -fsS "https://your-domain/ping/your-token?status=fail"
Notifications
A missed heartbeat is treated as a critical-tier incident — the same severity as a hard outage. It routes through whichever channels you have configured for the critical tier (email, SMS, Slack, webhook, in-app). The alert reads "Heartbeat Missed"; when a ping arrives again, a "Heartbeat Resumed" recovery notification fires and the incident closes.
Outbound Only
Heartbeat monitors are never probed from our side — there is nothing to open in your firewall and no agent to install. Your job makes a single outbound HTTPS request. Keep the ping URL secret; anyone who has it can mark the monitor as alive.
Notes & Limitations
- Pending until first ping — a new monitor won't alert until it has received at least one ping to establish a baseline
- No sub-checks — heartbeat is a push monitor; SSL, DNS and body assertions don't apply. Use an HTTP monitor for those
- Plan-gated — heartbeat (and cron) monitoring is available on the Basic plan and above
- For jobs on a fixed clock rather than a rolling interval, use Cron Job monitoring instead