--- title: "Cron Job Monitoring with Heartbeats | Uptrack" description: "Find out when a cron job stops running. Your job pings a URL after each run, and Uptrack alerts you when a ping is late. Needs a paid plan, from $3/mo." url: https://uptrack.app/cron-monitoring ---

# Find out when a cron job stops running

Cron sends no alert when a job fails to start, crashes or hangs. With a heartbeat monitor, your job pings a URL after each run. When a ping is late, Uptrack alerts you by email, Slack, Discord, Telegram or webhook. [See plans](https://uptrack.app/pricing) Heartbeat monitors need a paid plan, from $3/mo · 30-day money-back guarantee on paid plans ## How a heartbeat monitor works The job reports in, so the monitor can tell when it stops. This also catches the case where the whole server is down, because no ping arrives. There is no agent to install. 1. 1 ### Create a heartbeat monitor Pick "Heartbeat / Cron" as the monitor type. Uptrack gives the monitor a unique ping URL. 2. 2 ### Add the ping to your job Call the URL when the job finishes. Use && so the ping goes out only after the job succeeded. 3. 3 ### Send one ping by hand The monitor starts to watch after its first ping. Run the curl command once to start it. A crontab line. The ping runs only if the backup script exits with 0: ``` 0 2 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 -o /dev/null https://api.uptrack.app/api/heartbeat/YOUR_TOKEN ``` A POST with the optional fields. A GET takes the same fields as query parameters: ``` curl -fsS -X POST -H 'Content-Type: application/json' \ -d '{"status":"ok","message":"backup finished"}' \ https://api.uptrack.app/api/heartbeat/YOUR_TOKEN ``` Copy the exact URL from the page of your monitor. It has the token of that monitor in place of `YOUR_TOKEN`. ## When Uptrack alerts you Uptrack alerts when the last ping is older than the expected interval plus the grace period. The timer starts at the last ping, not at the time on your schedule. Uptrack looks for late pings once a minute. | Setting | Default | What it does | | --------------------------- | --------------- | ---------------------------------------------------- | | expected\_interval\_seconds | 3600 (1 hour) | How often a ping should arrive. | | grace\_period\_seconds | 300 (5 minutes) | Extra time before Uptrack counts the ping as missed. | Example: a nightly job takes up to 20 minutes. Set the interval to 86400 seconds and the grace period to 1800 seconds. You hear about it when no ping arrives within 24 hours and 30 minutes of the last one. - One late job opens one incident. You do not get a new alert every minute. - The next ping closes the incident by itself. - A paused monitor sends no alert, and a monitor with no ping yet sends none either. ## What you can watch Anything that runs on a schedule and can send one HTTP request when it is done. - ### Database backups A nightly pg\_dump or mysqldump that did not run leaves you with no recent backup. - ### Data pipelines A broken import or export shows up as stale dashboards, often days later. - ### Queue workers A worker can ping from a timer inside its loop, so a stalled worker goes quiet and you hear about it. - ### Scheduled reports and billing A weekly email or a monthly billing run that is skipped is easy to miss. ## Heartbeat monitoring is not for you if - You need to know why a job failed. Uptrack sees a ping or no ping. It does not read exit codes, logs or job output. - You need a start signal, to tell a job that never started from one that hangs. Heartbeat monitors have the one ping only. - You only need cron monitoring and nothing else. Dedicated tools such as Healthchecks.io and Cronitor are built for it. Better Stack lists 10 heartbeats on its free plan (checked 2026-10-12). - You need heartbeat monitors without paying. They need a paid plan, from $3/mo. See how Uptrack compares with [Healthchecks.io](https://uptrack.app/compare/healthchecks) and [Cronitor](https://uptrack.app/compare/cronitor). ## Frequently asked questions ### What is cron job monitoring? Cron job monitoring tells you when a scheduled job did not run. The job sends a small request, called a heartbeat or ping, after each successful run. The monitor expects that ping on a schedule. When a ping is late, you get an alert. ### Does cron job monitoring work on every plan? No. Heartbeat monitors need a paid plan. Paid plans start at $3/mo and have a 30-day money-back guarantee. Heartbeat monitors count against the monitor limit of your plan and have no extra fee. ### How late can a ping be before Uptrack alerts me? A new heartbeat monitor expects a ping every 1 hour (3600 seconds) with a grace period of 5 minutes (300 seconds). Uptrack alerts when the last ping is older than the interval plus the grace period. It looks for late pings once a minute. To change the two values, send expected\_interval\_seconds and grace\_period\_seconds in the settings when you create the monitor with the API. ### What happens if the job runs but fails? Uptrack only knows whether a ping arrived. It does not read the exit code or the logs of your job. Send the ping only after the real work succeeded, for example with && in a shell script. A failed job then sends no ping and the monitor alerts. ### Will I get an alert for a monitor that never received a ping? No. A heartbeat monitor starts to watch after its first ping. Send one ping when you set the job up, for example by running the curl command by hand. ### Which requests does the ping URL accept? GET, POST and HEAD. A POST can carry a JSON body with the optional fields execution\_time, status and message. A GET can carry the same fields as query parameters. An unknown token returns 404. ### Is the ping URL a secret? Yes. The token in the URL is the only credential, so anyone who has the URL can send a ping and keep the monitor quiet. Keep it out of public repositories and logs. ## Watch your first cron job Heartbeat monitors share the monitor limit of your plan, with no extra fee. Read the [heartbeat monitoring feature page](https://uptrack.app/features/heartbeat-monitoring), or see [free uptime monitoring](https://uptrack.app/free-uptime-monitoring) for websites and APIs. [See plans](https://uptrack.app/pricing) from $3/mo · 30-day money-back guarantee on paid plans