Skip to main content
Heartbeat · free plan

Cron job monitoring

Find out when a nightly backup, an export or a script did not run. After each run the job pings its own PingZen URL; if no ping comes within the interval and the grace period, you get an alert in Telegram, email or Slack.

How to set it up →
  • Interval from 1 minute to 30 days
  • Outbound HTTPS only
  • fail signal — alert at once
How heartbeat monitoring worksTop: a server with a cron job sits in a closed network and after every run sends an HTTPS ping to its PingZen address itself, an outbound connection only. If the ping does not come, PingZen sends an alert to Telegram or email. Bottom: pings arrive once per interval; when the next ping misses both the interval and the grace period after it, the alert goes out.The job reports in by itselfClosed networkServercron, backupPingZenwaits for pingAlertTelegram, emailHTTPS, outbound onlyno pingWhen the alert goes outintervalintervalintervalgracepingping duealert
The job reports in by itself. No ping for longer than the interval plus the grace period, and PingZen sends an alert.

What it looks like in PingZen

Heartbeats next to each other: a backup that missed its ping, a new job waiting for the first one, and the jobs that report in on time. Demo data.

Connect in three steps

No agent and no SDK: one HTTPS request at the end of the job is enough.

  1. Create a heartbeat

    Give it a name, the interval the job runs at and a grace period. PingZen gives it a unique ping URL.

  2. Add one line to the job

    A curl call at the end of the script or in crontab. Signals tell success from failure.

  3. Choose where alerts go

    Telegram, email, Slack, Discord, Teams, Mattermost, webhooks or web push — the same channels as for websites.

# crontab: backup at 3:00, then success — or fail if it broke
0 3 * * * /opt/backup.sh && curl -fsS -X POST https://pingzen.dev/api/v1/ping/PING_KEY/db-backup/success || curl -fsS -X POST https://pingzen.dev/api/v1/ping/PING_KEY/db-backup/fail

# or just a ping, GET or POST
curl -fsS --retry 3 https://pingzen.dev/api/v1/ping/PING_KEY/db-backup
Alerts in Telegram →
A heartbeat card: the timeline of the last 20 pings and their log.

What heartbeats in PingZen can do

start, success and fail signals

fail marks the heartbeat Down and alerts at once, without waiting for the interval to run out. start resets the countdown.

Checked every 30 seconds

The heartbeat turns Down as soon as the interval and the grace period have passed since the last ping. The next ping brings it back up.

Quiet until the first ping

A new heartbeat waits for its first ping and does not alert while it is pending.

From a minute to a month

Interval from 1 minute to 30 days, grace period up to 24 hours. A hint shows up when the interval does not match the job's real rhythm.

Works behind NAT

Only an outbound HTTPS request from the job's machine: no open ports, no static IP, no private checker.

History, API and MCP

90 days of pings; JSON up to 10 KB and the run time (duration_ms) can ride along with a ping. Heartbeats can be created through the REST API and MCP.

What heartbeats do not do

  • No cron-expression schedules or time zones: only a fixed interval.
  • No “still missing” reminders, maintenance windows or status pages for heartbeats; pause one instead of a maintenance window.
  • The run time is not measured by itself: the job reports it in duration_ms.
  • The JSON sent with a ping is not shown in the interface or in alerts, only through the API.

Frequently asked questions

Know when a job did not run

A free account, no card. Create a heartbeat, add one curl line, connect Telegram.