Heartbeats

The alert for the cron job that never ran.

Uptime checks whether your URL responds. Heartbeats check that your job checked in, so silence becomes an alert instead of a surprise.

Nightly database backup

ping.crontap.com/••••••••

Recovered

Expected every 5 min

Period + grace

Grace period: 2 min90-day history

How it works

One outbound ping closes the blind spot.

Your job keeps its existing scheduler. Crontap watches for the check-in that proves the run reached its success path.

01
Create a heartbeat
Choose the expected period and a grace window that matches how late the job may safely run.
02
Ping the URL from your job
Add one request to the success path. Your secret URL identifies the heartbeat.curl -fsS "$PING_URL"
03
Silence or /fail becomes an alert
A missed deadline or explicit failure sends email and a generic JSON webhook.

Setup tutorial

Add it to your job in one line.

Pick your runtime and copy the shared setup pattern. Success uses the secret URL; explicit failure adds /fail.

Wrap the job so its exit status decides whether Crontap receives success or /fail.

# /path/to/job-with-heartbeat.sh
/path/to/job.sh
status=$?
ping_url="https://ping.crontap.com/YOUR-TOKEN"
[ "$status" -eq 0 ] || ping_url="$ping_url/fail"
curl -fsS -m 10 --retry 3 "$ping_url" > /dev/null
exit "$status"
# crontab: */5 * * * * /path/to/job-with-heartbeat.sh

Tip: Capture $? before curl, then exit with the original job status.

Replace YOUR-TOKEN with the URL from your heartbeat page.

Built for quiet failures

The essentials for knowing a job ran.

Tight enough for minute-by-minute workers, flexible enough for jobs that only run once a month.

Period + grace tuned per job
Set when a ping is expected, then allow the safe delay your workload actually needs before it becomes down.
/fail signal with a message
Report a known failure immediately and include a short message that helps the person receiving the alert.
Email + webhook alerts
Send missed, failed, and recovered events to email and a generic JSON webhook you control.
90-day history and reliability
See real outcome success rate without UI test pings, while daily colors keep missed and failed incidents easy to spot.
1 minute to 31 days
Monitor frequent workers and monthly maintenance jobs with periods from 1 minute through 31 days.
Rotate the URL any time
Replace a leaked or stale secret token without recreating the heartbeat or losing its history.

Choose the signal

Which one do I need?

Start with who owns the request. The three tools cover different failure modes and work well together.

Schedules

Crontap calls your URL on a cron.

What it catches
Failed, timed-out, or unsuccessful scheduled HTTP calls.
When to use it
Crontap should own the clock and start the work.
Example
Trigger a billing sync every weekday at 09:00.
Explore schedules

Uptime

Crontap probes your URL on an interval.

What it catches
A public URL that stops responding successfully.
When to use it
A service should be reachable whenever customers need it.
Example
Check an API health endpoint every minute.
Explore uptime

Heartbeats

Your job pings Crontap.

What it catches
A job that never started, ran late, or reported /fail.
When to use it
The job runs anywhere and must prove it completed.
Example
Confirm a nightly database backup reached the end.
Use heartbeats

Most teams use two of the three.

Compare heartbeat tools

The clock, the watcher, or both.

Dedicated monitors go deeper in different directions. Crontap combines heartbeat monitoring with the scheduler and uptime checks.

CapabilityCrontapHealthchecks.ioCronitorBetter StackUptimeRobot
Heartbeat monitoringYesYesYesYesYes
/fail signalYes, with messageYesFailure signalFailure signalNo /fail path documented
Grace periodYesYesYesYesYes
Runs the cron tooYesNoNoNoNo
Uptime checks in same productYesNoYesYesYes
Free tier1 heartbeat, hourly+20 jobs5 monitors10 monitors + heartbeats50 monitors
Entry priceFrom $2.99/mo$5/mo supporter; $20/mo Business$2/monitor + $5/user/mo$0 for 10; $34/responder/mo$13/mo monthly; $12/mo annual

Competitor details checked September 2026. Prices may change.

Pricing

Start free. Pay when every minute matters.

Heartbeats share the same combined item cap as schedules and uptime monitors. There is no separate monitoring bill.

Pro

$2.99 / month

1-minute heartbeats and 3 combined items, with larger caps available as you grow.

Compare every tier →

FAQ

Heartbeat questions, answered.

What is a heartbeat or dead man's switch?
It is an absence detector for recurring work. Your job pings a secret URL after it runs. If the expected ping does not arrive before the period and grace window end, Crontap marks it down and alerts you.
How is it different from uptime monitoring?
Uptime monitoring sends requests to a service to check whether it responds. A heartbeat reverses that direction: the job sends a request to Crontap to prove it ran. Many teams use both.
What happens if my job runs late but is not broken?
After the expected period, the heartbeat becomes late without alerting. It only becomes down when the grace window also expires, so normal variation does not have to wake anyone up.
Can I report a failure explicitly?
Yes. Send the ping to /fail, optionally with a short message in the body or query string. Crontap records the failure and sends the configured email and webhook alert.
How fast is the alert?
Missed heartbeats are detected within one minute after the grace deadline, then queued for the notification cron that sends email and webhook alerts. An explicit /fail ping enters the same notification queue immediately.
Can it call Slack?
Not directly in this release. Email and generic JSON webhooks ship now. To reach Slack, send the webhook through a relay such as Zapier, Make, or your own endpoint until Crontap adds native Slack formatting.
Can I monitor jobs behind a firewall?
Yes. The job only needs to make an outbound HTTPS request to its secret ping URL. Crontap does not need inbound access to the job, host, or private network.
Does it replace Healthchecks.io?
For most teams that need period, grace, /fail, email, webhook, and history, yes. Keep an independent watcher if your risk model requires the alerter and scheduler to live in different systems.

Keep exploring

Related heartbeat resources.

Ready to fix it?

Point Crontap at any URL. Pick any cron. Done.

WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.

Free forever tier ・ No credit card required

GET

/wp-cron.php?doing_wp_cron=1

Running
Your next schedule

Schedule

"every 5 minutes"

Next

in 23s