Cron job monitoring

Know when a job
did not run.

Backups, imports and queue workers on your own server fail quietly. Add one line to the end of the job, and CronEngine tells you the moment it does not check in on time.

2 heartbeats free Works with any language Pings are free

The problem

A job that never starts sends no error.

Error alerts only fire when something runs and fails. When a job does not run at all, nothing is logged and nobody is told. You find out days later, when the backup you need is not there.

The server was off

A reboot, a full disk or a host problem, and the crontab simply did not fire.

The crontab got lost

A server move or a new deploy, and nobody set the schedule up again.

It crashed early

The script died before it could log anything or send its own error.

It hung forever

It started but never finished, quietly blocking the next run.

A heartbeat catches all four, because it listens for the job instead of waiting for an error.

How it works

One line at the end of your job.

1

Create a heartbeat

Say how often the job should run, and how late it may be. You get a private address to ping.

2

Ping it when the job ends

Add one request to the end of the job. Any tool that can call a URL works.

3

Hear when it goes quiet

If the ping does not arrive in time, you get an alert by email, Slack, Discord, Telegram or webhook.

crontab
# Run the backup at 03:00, then ping when it succeeded
0 3 * * * /usr/local/bin/backup.sh && curl -fsS https://cronengine.com/ping/hb_your-token

More than “it ran”

Start, finish, fail, and how long it took.

One ping says the job finished. Add a ping at the start and we measure how long every run takes, so a job that slowly gets slower shows up long before it breaks. Ping /fail and you hear about a failure straight away.

  • Expect a ping every few minutes, hours or days
  • Or on a cron schedule, so weekends stay quiet
  • A grace period, so a slow night does not wake you
  • A heartbeat that was never pinged waits quietly
  • Ping history and run times for every heartbeat

Works with anything

If it can call a URL, it can check in.

No agent to install and no library to add. Copy-ready examples for the most common setups are on the integrations page.

What people watch

The jobs you only miss when they are gone.

Backups

Database dumps and file backups that have to run every night.

Queue workers

Workers that should keep checking in every few minutes.

Imports and syncs

Feeds from suppliers, CRMs and payment providers.

Emails and reports

Digests, invoices and reports that go out on a schedule.

Cleanups

Jobs that clear old data before the disk fills up.

CI and deploy jobs

Scheduled pipelines that can be delayed or skipped.

In the same account

Everything else around it.

Run jobs for you

For work your app can do when asked, CronEngine can call the URL on a schedule instead.

Cron jobs

Watch your website

Uptime checks every minute, with certificate expiry warnings.

Uptime monitoring

Tell your customers

Put heartbeats on a status page, so people see that the nightly import ran.

Status pages

Pricing

Heartbeats on every plan.

Pings are free and never count against your scheduled runs. Prices exclude VAT.

Free

€0

2

heartbeats

100 pings of history each, plus cron jobs and uptime monitors.

Starter

€5.99/mo

10

heartbeats

250 pings of history each, plus cron jobs and uptime monitors.

Most popular

Pro

€12.99/mo

25

heartbeats

500 pings of history each, plus cron jobs and uptime monitors.

Business

€24.99/mo

75

heartbeats

1,000 pings of history each, plus cron jobs and uptime monitors.

Compare every plan, including Enterprise

FAQ

Questions about cron monitoring

What is a heartbeat?

A private address your job calls when it finishes. If the call does not arrive in time, CronEngine alerts you. Some tools call this a dead man’s switch.

Do I need to install anything?

No. Anything that can make a web request works: curl, wget, PowerShell, or one line in your own code.

What if my job does not run around the clock?

Give the heartbeat a cron schedule instead of an interval, such as weekday mornings only, and it stays quiet the rest of the time.

What if the ping itself fails because of the network?

Use a short timeout and a few retries on the request, as in our examples. The grace period also gives a late ping time to arrive.

Do pings count against my plan?

No. Pings are free and never use your scheduled runs. Your plan only sets how many heartbeats you can have.

Can I show heartbeats on a status page?

Yes, from the Starter plan, so customers can see that a nightly import or sync ran.

Stop finding out days later.

Set up your first heartbeat in a couple of minutes. Free plan, no credit card.