Scheduled task monitoring

A job that doesn't run can't tell you it failed.

A cron job that fails silently is a problem you find weeks later, when you notice the backups haven't run, the reports are stale, or the database cleanup that was supposed to happen every night hasn't happened in a month. SiteVitals expects to hear from each job on schedule, and alerts you when one is missed or runs late.

Available on Marketer from £36.00/month.

SiteVitals scheduled task monitoring dashboard

What SiteVitals watches

Not just whether a job ran, but whether it ran when and how it should.

Each task gets its own unique ping URL. Your job calls it when it succeeds, and SiteVitals watches the expected schedule around that signal.

01

Missed jobs

If the expected ping does not arrive within the schedule plus grace period, SiteVitals opens an incident and alerts you.

02

Late jobs

A configurable grace period allows for normal timing variation without turning every small delay into an alert.

03

Explicit failures

If a job can detect its own failure, call the /fail endpoint and SiteVitals alerts immediately rather than waiting for the schedule window to expire.

04

Start and finish tracking

Send /start before a job begins and a success ping when it ends to record actual runtime and spot jobs that start but never finish.

05

Runtime history

Success rate, average runtime and maximum runtime are tracked over time so slower or less reliable jobs become visible.

06

Recovery

When a missed job starts reporting again, SiteVitals closes the incident and sends a recovery notification automatically.

How it works

One URL per job.

There is nothing to install. Add a task in SiteVitals, copy its unique URL, then call that URL from the job when it completes.

your scheduled job
$ backup.sh && curl -fsS https://sitevitals.co.uk/ping/your-slug
Read the setup guide
01

Create a monitor

Give the job a name, tell SiteVitals how often it should run and choose how much lateness is acceptable.

Use a simple interval or a full cron expression.

02

Copy the ping URL

Every monitor gets a unique URL. This is the address the job calls when it completes successfully.

GET and POST are both supported.

03

Add the ping to the job

Call the URL only after successful completion. Optionally call /start before the job begins to measure runtime.

Works with bash, PHP, Python, Node, Ruby, Laravel and more.

04

SiteVitals watches the clock

If the expected ping does not arrive on time, SiteVitals opens an incident and alerts you. The next successful ping closes it automatically.

Email, Slack, webhook and in-app notifications are supported.

The silent failure problem

No error. No alert.

Scheduled jobs are designed to run in the background without anyone watching them. That is useful right up until one stops.

The absence of a job is often invisible. There may be no page error, no exception anyone sees and no obvious sign until the missing work begins causing another problem.

SiteVitals uses the dead man's switch principle: the job is expected to check in. If it does not, the silence itself becomes the alert.

01

The backup that stopped

A permissions change breaks the nightly backup. You find out when you actually need to restore something, unless the missing check-in is being watched.

02

The report that went stale

A weekly report quietly stops generating after a software change. Meetings continue using old data because nobody knew the job had stopped.

03

The cleanup that never happened

Temporary files and expired sessions keep accumulating because the maintenance job stopped. Weeks later the disk fills up.

04

The sync that fell behind

A scheduled import or API pull stops running, so the data people depend on becomes gradually more out of date without a visible failure.

Ping endpoints

A success ping is enough to start.

Each monitor supports success, start, failure and log endpoints. That lets a simple job stay simple while more complex jobs can report richer context.

Success

GET or POST
/ping/{slug}

Marks the job as completed successfully and resets the expected-run timer.

Start

GET or POST
/ping/{slug}/start

Records when the job begins so SiteVitals can calculate runtime and identify jobs that start but never finish.

Failure

GET or POST
/ping/{slug}/fail

Reports an explicit failure and triggers an immediate alert without waiting for the missed-run window.

Log

POST only
/ping/{slug}/log

Sends job output to SiteVitals so useful diagnostic information can sit alongside the incident.

Common use cases

If it runs on a schedule, it is worth knowing it ran.

Anything that can make an HTTP request can be monitored, including bash, PHP, Python, Ruby, Node, Laravel Scheduler, GitHub Actions and Jenkins.

Database backups

Know within minutes if a nightly or hourly backup did not complete.

Data sync jobs

Watch imports, exports and synchronisation jobs that move data between systems.

Report generation

Catch scheduled reports that stop updating before stale data reaches a meeting.

Cleanup & maintenance

Make sure housekeeping jobs such as log rotation and temporary-file cleanup keep running.

Payment & billing runs

Monitor subscription renewals, invoice generation and payment retry jobs.

API data fetches

Know when scheduled pulls from third-party APIs stop refreshing your own data.

Things people ask us

If something isn't covered here, just ask us. We're a small team and we answer our own emails.

Each monitor gets a unique ping URL. Add a curl call to the end of your scheduled job. When it completes successfully, it calls that URL. If SiteVitals does not receive the ping within the expected window plus grace period, it opens an incident and sends an alert.
No. Task monitoring is based entirely on outbound HTTP pings from your job to SiteVitals. There is nothing to install, just a URL call added to the existing job.
If your job can detect its own failure, it can call /fail to trigger an immediate alert without waiting for the missed-run timeout.
Send a /start ping before the job begins. SiteVitals records the start time and calculates the runtime when the success ping arrives. This also helps identify jobs that started but never completed.
A grace period is extra tolerance added to the expected schedule. If an hourly job has a five-minute grace period, SiteVitals waits 65 minutes before treating the run as missed.
When a successful ping arrives after a missed run, SiteVitals closes the incident and sends a recovery notification automatically.
Yes. You can use a simple interval or a full cron expression for more complex schedules.
Yes. Anything that can make an HTTP request can be monitored, including bash, PHP, Python, Ruby, Node, Laravel, GitHub Actions and Jenkins.
Yes. Monitors can be paused and resumed without deleting the monitor or its history, which is useful during planned maintenance.
This depends on your plan. Check the pricing table for the current monitor allowance on each plan.

Silent failures, loudly reported.

Get started with our free tools today. When you're ready for continuous cron_monitoring monitoring, our plans are simple, transparent, and built for sites of all sizes.

Plans start from
£36.00/mo
View All Plans & Features