Heartbeat + uptime monitoring

Know when your cron silently dies

Backups, ETL, queue workers, certificate renewals — anything that runs on a schedule. The job hits a unique URL on every run, and when a ping is late the alert is already in your Telegram.

First check in 60 seconds Documentation

No agent. One line of code.

10 checks free forever · 14-day Pro trial, no card required

# crontab -e
*/5 * * * * backup.sh && \
  curl -fsS https://ping.cronalive.com/<uuid>

# a ping is late →
🔴 backup.sh is DOWN
→ Telegram · email · Slack · webhook · PagerDuty
What it watches

Work that fails without telling anyone

Backups

Know when last night's backup didn't run. A pg_dump that dies at 3 a.m. leaves no error page and no failed request — the failure surfaces on the day you need to restore.

How people wire it up

Cron jobs & workers

Know when scheduled work stops. An emptied crontab writes no errors: nothing fails, the work simply stops happening, and the absence of an event is invisible.

Cron job monitoring

Websites & APIs

Know when your service goes down. HTTP checks from three regions, confirmed by a second one before you are paged, plus a warning before the TLS certificate expires.

HTTP checks

Live dashboard

Every overnight job on one screen

  • down db-replication #prod#db TGWH 27 minutes ago Period: 60s
  • up api.example.com TLS: 6 d #prod#http TGWH@ 40 seconds ago Period: 300s
  • late wp-cron #site TG 19 minutes ago Period: 900s
  • up nightly-backup #prod#backup TGWH 3 hours ago cron: 30 2 * * *
  • up shop.example.com TLS: 63 d #shop @SL 12 seconds ago Period: 60s
  • paused cleanup-tmp #maintenance no alerts configured 2 days ago Period: 21600s

Statuses update over WebSocket, no reload. The certificate of api.example.com expires in 6 days — that alert has already been sent; the RU region is marked as a chronic geo-block and never confirms a down.

How it works

Three steps to sleeping well

Create a check

A simple period ("every 5 minutes"), a cron expression or a systemd OnCalendar — with a timezone and a grace period.

Add one line

curl in crontab, a Laravel scheduler macro, a Python decorator or a CLI wrapper — a check can even be created by its first ping.

Get alerted

Telegram-first: DMs and groups. Plus email, HMAC-signed webhooks, Slack, Discord, Mattermost and PagerDuty — with quiet hours and repeat reminders.

Using Laravel? One line per scheduled task →

Features

More than "ping arrived / didn't"

Lifecycle signals

/start, /fail, exit codes 0–255 — run duration and hung jobs are visible on a chart.

HTTP uptime checks

Status codes, keyword checks, redirects, basic auth. An outage is confirmed by a second probe from another region.

SSL expiry alerts

A warning 7/14/30 days before the certificate expires — before your customers notice.

Uptime & history

Live dashboard over WebSocket, 30/90/365-day uptime, ping log with body, IP and user-agent.

API & SDKs

REST API v1 with rw/ro keys, Laravel/Python/Node packages, auto-provisioning straight from code.

Public badges

SVG status of a check or a whole tag — for READMEs, wikis and status pages.

Integrations

Alerts where you actually read them

Telegram Email Slack Discord Mattermost Webhook + HMAC SMS — soon PagerDuty

Every channel gets event and tag filters, quiet hours, reminders and a delivery journal. Need your own format? Webhooks with body templates.

Use cases

What people monitor with CronAlive

Backups

A 3 a.m. pg_dump is the classic silent failure: the script dies, and you find out on restore day. Ping as the last line of the backup script, and a missed copy wakes you — not your customers.

WP-cron

wp-cron only runs when traffic comes, and it dies quietly along with it. Move it to a real system cron with a ping, and WordPress scheduling stops being a black box.

Scrapers & ETL

The nightly import "ran" — but hung halfway? The /start signal plus a success ping put every run's duration on a chart, so a stall shows up before the reports break.

Queue workers

A live worker process doesn't mean jobs are being processed. A heartbeat from inside the worker alerts when the queue goes quiet for too long — whatever the cause.

Certbot renewals

Certificate renewal breaks silently and expires loudly. A ping after certbot renew plus an SSL alert 14 days before expiry — two independent lines of defense against the "expired" padlock.

Docker & Kubernetes

A container that exited says nothing about whether the work got done. curl as the last command of the container (or in ExecStopPost) turns "it ran" into a fact — and for a Kubernetes CronJob a late ping catches the crashed pod, the image that was never pulled and the node that never scheduled the job alike.

Monitor the work behind your website

Your website is UP. Your backup is NOT.

Uptime monitoring answers one question: does the site respond? CronAlive answers the other one: is the work behind the site actually happening? A server can return HTTP 200 all week while the cron has stopped, the backup has been failing, the ETL is hung and the queue worker is dead.

Ordinary uptime monitoring CronAlive
The site responds The job actually ran
HTTP 200 The backup was created
The server is reachable The ETL finished
The API answers The worker is alive

CronAlive does both: the same dashboard runs HTTP checks with multi-region confirmation and TLS expiry warnings. Neither replaces the other — a site that answers and a job that ran are two separate facts, and you want both.

Checking one URL right now, without an account? The HTTP status checker and the SSL certificate checker are free.

Pricing

Flat-rate: no pay-as-you-go surprises

Free

$0

10 checks · HTTP interval from 5 min · 30 days of history · 50k pings/mo

Start for free

Pro popular

$7 / month

100 checks · interval from 1 min · 1 year of history · API, HMAC · 1M pings/mo

Monitor your first job free

Business

$19 / month

500 checks · interval from 30 sec · 2 years of history · unlimited members, priority support · 10M pings/mo

Monitor your first job free

Checkout is handled by Paddle as merchant of record, in USD. Yearly billing saves 20%.

No credit card required. Cancel anytime.

Comparing options? CronAlive vs Healthchecks.io and vs Cronitor — with the sums worked out.

FAQ

Frequently asked questions

How is CronAlive different from Healthchecks.io and Cronitor?

Three things. Flat-rate pricing: a fixed monthly fee instead of pay-as-you-go, so the invoice never surprises you. Telegram-first alerts: DMs and group chats, linked with a single tap — no SMTP lag. And multi-region HTTP checks with quorum confirmation, so one flaky vantage point never pages you.

Full comparison with Healthchecks.io · with Cronitor

What happens if I go over the ping quota?

Pings are never dropped — breaking a heartbeat defeats the purpose. You'll get an email suggesting an upgrade. Only after exceeding the quota more than 3x for two months in a row (and a 7-day heads-up) do we suspend creating new checks — existing ones keep being monitored and keep alerting.

How do I cancel?

Anytime — the plan stays active until the end of the paid period, then the account drops to Free. Checks over the Free limit get paused, not deleted. You can export your data as JSON and delete the account yourself.

Are ping bodies encrypted?

Yes. Ping bodies and HTTP check headers can carry sensitive data, so they are encrypted at the application level and purged when your plan’s retention expires. Everything travels over HTTPS only.

Why two ping domains?

Delivery resilience: dashboard snippets include a fallback out of the box (curl url1 || curl url2), and SDKs fetch the current domain list from the API. Losing one domain loses neither pings nor your sleep.

Does it work with systemd, Laravel and Kubernetes CronJobs?

Yes. systemd: ExecStopPost with $EXIT_STATUS and OnCalendar schedules. Laravel: a composer package with a scheduler macro. Kubernetes CronJob: curl as the last command of the container. Plus Python and Node packages.

Can my team use it?

Yes: project members with owner, admin and readonly roles. Invite a colleague by email from the project settings — the link is valid for 7 days, and if they have no account yet, the invitation applies automatically once they sign up and verify their email. Pro includes up to 5 members, Business has no member limit; plan limits apply to the owner’s account, not per member.

Is there an API?

REST API v1: check CRUD, ping and event history, integration and pause management. Read-write and read-only project keys are issued in the project settings; a 600 req/min rate limit, an OpenAPI spec and static docs.

What's a grace period, and why isn't the alert instant?

Grace is the allowance after the deadline: cron rarely fires to the second, and without it any drift would page you for nothing. Shortly after the deadline (with a small slack of up to 30 seconds, so second-long delays never blink) the check turns "late", and only once grace runs out does the "down" alert fire. An explicit fail signal alerts immediately, no waiting.

What if CronAlive itself goes down?

A monitoring service must be more available than what it monitors. The ping ingestion tier deploys and fails independently of the dashboard, and there are multiple ping domains. During a global outage on our side false down alerts are suppressed, and statuses are reconciled once we recover.

What is cron monitoring?

It is a dead man’s switch for scheduled work. The job sends an HTTP request to a URL of its own on every run, and the service raises the alarm when that request does not arrive in time. Note which way round it works: ordinary monitoring alerts on a bad answer, this one alerts on the absence of an answer — which is the only way to notice a job that never started at all.

Why can a cron job fail silently?

Because none of the usual failures produce an error anyone sees. The crontab is wiped by a server migration, the file loses its execute bit, the job runs under a user without the right permissions, cron's minimal environment lacks a PATH your script assumed, or a stale lock leaves the run hanging. In every one of those cases nothing crashes and nothing is logged: the work simply stops happening, and the absence of an event is invisible from inside the machine.

Can I monitor WordPress cron jobs?

Yes, and it is the usual reason people find us. wp-cron only fires when someone visits the site, so on a quiet site scheduled posts, backups and plugin updates silently stop. Move the schedule to a real system cron, add a ping to that line, and the black box becomes a check like any other.

How to set it up

Can I monitor Docker containers and Kubernetes CronJobs?

Yes. Put curl as the last command of the container, or in ExecStopPost for a systemd unit, and the ping only goes out when the work actually finished. For a Kubernetes CronJob the same line at the end of the pod covers three different failures at once: the pod that crashed, the image that was never pulled and the node that never scheduled the job.

Ready-made snippets

Stop finding out about failures from your customers

Monitor your first job free