CronPup

Know when the job didn't run.

Cron jobs, backups and queue workers usually fail without a sound. CronPup gives each job a ping URL. If the ping is late, or the job reports a failure, you get an email, a push notification or a Slack/Discord message. It also watches your TLS certificates and warns you before they expire.

Start free with 10 monitors Read the 2-minute setup

No credit card required. The free plan stays free.

2FASigned webhooksNo trackersExport or delete your data anytimeSecurity details

# crontab: back up nightly, and tell CronPup how it went
0 3 * * *  /usr/local/bin/backup.sh && curl -fsS -m 10 https://cronpup.com/p/your-uuid

# or report the exit code, so failures alert you right away
0 3 * * *  /usr/local/bin/backup.sh; curl -fsS -m 10 https://cronpup.com/p/your-uuid/$?
1

Create a monitor

Tell CronPup how often the job runs: "every hour", or the same cron line it already uses.

2

Add one line to the job

Request the ping URL when it finishes, or wrap the command with cronpup-run.

3

Get told when it goes quiet

A late or failed run sends a push, an email or a Slack message, and a recovery note when it's fixed.

What it looks like

CronPup dashboard listing four monitors: a nightly database backup that is down, a queue worker and a TLS certificate that are up, and a weekly report waiting for its first ping
Every job and certificate in one list, with whatever is broken at the top.
Monitor detail for nightly-db-backup: its ping URL, a failed run with the pg_dump error output attached, run durations, and the Slack alert that was sent
Each run's duration and output, and exactly which alerts went where.

Real screens with sample data.

Late detection

Give a fixed period ("every 15 minutes") or a real cron expression with a timezone. A grace period absorbs normal jitter.

Run tracking

Ping /start when the job begins and CronPup records how long it ran. It alerts you if the job hangs past the grace period.

Certificate expiry

Add a hostname. We check its TLS certificate every 6 hours and warn you days before it lapses, including when auto-renewal quietly broke.

Alerts where you look

Email, phone push (via the free ntfy app) and webhooks on every plan. Webhooks work with Slack and Discord incoming webhooks as-is.

Failure output

POST the tail of your job's output with the ping. It shows up in the monitor's history next to the alert.

Public status page

Choose which monitors to show on a shareable page, so your team or customers can check whether last night's jobs ran. Names and statuses only.

Integrations

PagerDuty incidents that open and resolve themselves, a Prometheus /metrics endpoint, a JSON API for provisioning scripts, and README badges.

Plain pricing

A flat monthly price per plan, with no per-user fees and no per-check fees. See plans.

Why this exists

A backup that stopped running in March is usually found in June, when someone needs it. Uptime checkers don't catch this, because nothing is "down": the job just never ran. Heartbeat monitoring flips the check around. The job reports in, and silence is the alarm.