Edesy OnCall watches scheduled jobs with heartbeats. Your job calls a secret URL each time it finishes. If the ping doesn't arrive within the expected period plus a grace time, or the job reports a failure, OnCall phones your team in English or Hindi until someone presses 1. One curl line in crontab is all it takes.
1 line
Added to your crontab
Up to 24 h
Expected period
Up to 24 h
Grace time
Free
For 3 monitors
Works with any scheduler
Report failures instantly
Calls until someone presses 1
How OnCall decides a job has failed
| Item | Edesy OnCall |
|---|---|
| Ping URL | https://oncall.edesy.in/hb/<token>, unique per monitor; any HTTP method works |
| Late ping | No ping within the expected period plus grace opens an incident |
| Instant failure | Call the URL with ?status=fail&msg=... to open an incident at once |
| Expected period | From your plan's minimum (5 minutes on Free) up to 24 hours |
| Grace time | 0 to 24 hours, 2 minutes by default, to allow for slow runs |
| Recovery | The next successful ping resolves the incident |
| Token leak | Rotate the token on the monitor page; the old URL stops working |
No agent to install
In OnCall, add a Heartbeat monitor and set how often the job runs, plus a grace time for slow runs. Attach an escalation policy.
Each heartbeat monitor has its own secret URL. Keep it private.
Append && curl to the crontab line so the ping is sent only when the job succeeds.
Optionally call the URL with status=fail from your script's error path, so you hear about it before the ping is even late.
# Nightly backup at 02:00. Ping only if it succeeded (-f makes curl fail on HTTP errors).
0 2 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 https://oncall.edesy.in/hb/<token> > /dev/null
# Same job, but also report a failure at once instead of waiting for the ping to go missing
0 2 * * * if /usr/local/bin/backup.sh; then curl -fsS -m 10 --retry 3 https://oncall.edesy.in/hb/<token> > /dev/null; else curl -fsS -m 10 -G --data-urlencode status=fail --data-urlencode "msg=backup failed" https://oncall.edesy.in/hb/<token> > /dev/null; fi
For a nightly job, set the expected period to 24 hours and the grace to a little more than the job's longest run. Jobs that run less often than once a day (weekly, monthly) can't be watched with a heartbeat today, because the longest expected period is 24 hours.
The cron heartbeat URL generator builds these lines for your schedule, and the cron expression builder helps you write the schedule itself. Full reference: heartbeat monitors.
The ones that fail quietly
Know the same night if a dump didn't run, not on the day you need it.
Daily sales reports, GST exports, product feeds and invoices.
Inventory, price and order syncs between your store, ERP and marketplaces.
Have a worker ping after each batch so a stuck queue is caught.
Explore more comparisons, alternatives, and resources
Use cases
Integrations
Tell us what runs on a schedule and who should be called when it doesn't. We reply within one working day.
Add a heartbeat to your most important job on the Free plan. Prices exclude 18% GST.