Cron Job Failure Alerts

Get alerted when a cron job fails silently.

PingCron watches for missed check-ins from your scheduled jobs and notifies you before backups, billing, reports, or sync jobs stay broken.

5 monitors free · No credit card · Live in under 60 seconds

Cron failures are easy to miss.

A cron job can fail for dozens of reasons — script errors, expired API credentials, deploy changes that broke environment variables, permission issues after a server update, missing dependencies, server downtime, even just changed network routes.

Cron itself doesn't guarantee you'll notice. It launches your command and moves on. If the script exits with an error, cron doesn't care. If your job hangs forever, cron doesn't care. If the cron daemon itself stops running after a reboot, cron isn't around to tell you.

Silent failures break backups, reports, billing jobs, scrapers, and data syncs — sometimes for weeks before anyone notices.

What you might be missing right now:

  • A backup script that's been failing for 3 weeks because of a permissions change
  • A daily billing reconciliation that quietly stopped after a deploy
  • An hourly ETL job that's running on stale credentials
  • A weekly report nobody's noticed isn't being sent
  • A cleanup script that hasn't run since the server rebooted

Setup

How an alert actually fires.

If PingCron doesn't receive the expected check-in, an alert fires after the grace period.

Before

0 2 * * * /scripts/backup.sh

After

0 2 * * * /scripts/backup.sh && curl -fsS https://api.pingcron.io/ping/abc123

Day 1 and Day 2 the script runs cleanly and pings PingCron. On Day 3 the script crashes silently — no ping arrives. Once the grace period elapses, PingCron sends an alert to every configured channel within seconds. Sample alert text: 'Daily database backup missed its expected check-in. Last successful ping: yesterday at 2:01 AM.'

What kind of failures can you alert on?

Any scheduled job that needs to keep running.

Backup failure alerts

Get notified when nightly dumps stop running.

Billing job alerts

Catch reconciliation failures before customers notice.

ETL / data sync alerts

Know when your hourly pipeline silently dies.

Report generation alerts

Stop missing reports stakeholders rely on.

Scraper failure alerts

Get told when scrapers stop collecting data.

Cleanup script alerts

Avoid disk-full surprises from broken cleanup jobs.

Laravel scheduler alerts

Know if artisan schedule:run stops firing.

Python and Node job alerts

Alert on any cron-driven script in any language.

How it works

Four steps. About a minute total.

01

Create a monitor

Name what you want to protect. PingCron generates a unique ping URL.

02

Choose expected interval and grace period

Every minute, every 5 minutes, hourly, daily — whatever your job runs on. Grace period sets how long PingCron waits past the expected time before alerting.

03

Add the ping URL to the end of your job

One curl command. Works in any language that can make an HTTP request.

04

Get notified when the check-in is missed

Email, Slack, Discord, or webhook. Configure multiple channels per monitor.

Alerts where you'll actually see them.

Configure as many channels as you want per monitor.

Email

HTML alerts with monitor details and direct links.

Slack

Post to any Slack channel via incoming webhook.

Discord

Native Discord webhook integration.

Custom webhooks

POST alerts to any endpoint with full payload.

FAQ

PingCron expects a ping at a regular interval from your scheduled job. Each successful run sends a request to a unique URL. If the ping doesn't arrive within the schedule plus the grace period, the monitor goes down and an alert is sent via email, Slack, Discord, or webhook.
Two ways. First, missed check-ins: if your job doesn't ping the expected URL within the schedule + grace period, PingCron treats it as failed. Second, explicit failure pings: ping the /fail endpoint at the end of an error-handler block to trigger an instant alert without waiting for the grace period to elapse.
If your script exits before reaching the success ping, PingCron simply doesn't receive it. Once the grace period passes without a ping, the monitor goes down and you get alerted. For instant alerts on crashes, wrap your script in a trap or try/except and ping /fail in the error path.
Yes. Add a Slack incoming webhook URL in your PingCron notification settings. When a monitor goes down or recovers, PingCron posts a message to the configured channel. You can configure multiple Slack webhooks if you want different alerts going to different channels.
Yes. Custom webhooks are available on the Pro plan. PingCron sends a POST request to your endpoint with the monitor name, status, last ping time, and other details — letting you trigger PagerDuty, OpsGenie, Linear tickets, internal dashboards, or any other workflow.
Yes. Set the schedule to '1m' when creating the monitor. Use a small grace period (e.g., 30 seconds) to avoid false alarms on minor delays from system load.
Yes. Set the schedule to '1d' and add a grace period long enough to cover the longest expected runtime. If your nightly backup typically takes 30 minutes but sometimes takes an hour, set the grace period to 75 minutes.
Yes. The free plan includes 5 monitors, email/Slack/Discord alerts, and 7 days of history. No credit card required. Upgrade to Pro at $9.99/month for 50 monitors, custom webhooks, and 30-day history.

Related monitoring guides

Stop finding out about cron failures too late.

Add one line to your script. Get alerted the moment a check-in is missed.

Start monitoring free

5 monitors free · No credit card · Live in under 60 seconds