Your 3 AM backup failed silently last Tuesday.
You found out Friday.
Add one HTTP request to the end of your cron. If WatchCron doesn't hear from it on schedule, you get a Slack message, an email, or whatever channel you set up. No agent to install, no SDK to import.
Free forever for 20 checks. No card, no trial, no upgrade nag.
Built and maintained by one person. Free up to 20 checks.
0 2 * * * /backup.sh
Three steps from zero to first alert
No SDK, no agent, no complex setup. Just one HTTP request from your existing job.
Create a Check
Set a name and expected schedule — cron expression or simple period.
Schedule: 0 2 * * *
Grace: 5 minutes
Ping from Your Job
Add one HTTP call to the end of your script. Any language, any platform.
curl -fsS https://.../ping/uuid
Get Alerted
If the ping doesn't arrive on time, we notify you through your preferred channel.
Missed expected ping at 02:05 UTC
What's in the box
Built solo. Used in production by teams who got tired of cron jobs failing without telling anyone.
Cron & Simple Schedules
Full cron expression support with real-time next-run calculation. Or set a simple period like "every 10 minutes".
Multi-Channel Alerts
Get notified exactly where you need it. Assign different channels to different checks.
Grace Periods
Set how long to wait before alerting. No false alarms for jobs that run a few minutes late.
Start / Success / Fail
Track job duration with start signals. Report explicit failures for instant alerts.
Projects & Teams
Organize checks into projects. Invite team members with role-based access.
REST API & Badges
Full API with per-project keys. Embed live SVG status badges in your README.
The dashboard you'll actually open
Filter by project, tags, or status. See what's running, what's late, and what's down.
| Name | Status | Schedule | Last Ping | Next Expected |
|---|---|---|---|---|
| prod-db-backup-eu-west-1 | Up | 0 2 * * * | 2 min ago | Tomorrow 02:00 |
| stripe-webhook-retry-queue | Up | 0 9 * * 1 | 3 days ago | Monday 09:00 |
| ssl-renew-letsencrypt | Grace | Every 24h | 25h ago | 1h overdue |
| sidekiq-worker-heartbeat | Down | Every 5m | 47 min ago | 42 min overdue |
| cleanup-stale-sessions | New | */15 * * * * | — | Waiting for first ping |
Cron jobs fail in three ways. WatchCron catches all three.
When your cron job fails to ping on time, WatchCron sends you a Slack message, email, or webhook within 30 seconds. Configure grace periods to avoid false alarms, and route different checks to different channels.
- Grace periods per check (so a 5-second delay doesn't page you)
- Repeat alerts until someone acknowledges
- Recovery notifications when the job comes back on its own
- Audit log of every alert, every channel, every retry
What people actually monitor with this
If it should run regularly, WatchCron makes sure it does. From database backups to background workers to IoT heartbeats.
Pricing fits on this page
30 seconds from signup to first ping. Free if you stay under 20 checks.
For personal projects and testing.
- 20 checks
- 1 project
- Email & Webhook alerts
- API access
For small teams and growing projects.
- 75 checks
- 5 projects
- Slack, Telegram & Discord
- 3 team members
For teams running production infrastructure.
- 250 checks
- 20 projects
- All channels + SMS
- 10 team members
For organizations with many services.
- 1,000 checks
- Unlimited projects
- Voice, SMS & PagerDuty
- Unlimited team members