db-backup-nightly
HEALTHY

Interval

6h

Grace

30m

Last seen

2m ago

Heartbeat Monitoring

Your cron job failed
three weeks ago

Background jobs fail silently. No error page. No stack trace. Just a process that stopped running and nobody noticed. Until the damage is done.

The jobs your users never see

Every modern application depends on dozens of background tasks running on schedule. When one stops, nobody gets an error page. The damage accumulates silently.

Database Backups

Unrecoverable data loss if a failure goes unnoticed for days

Email Queues

Customers never receive order confirmations or password resets

Billing & Invoicing

Revenue leaks and angry customers from missed or duplicate charges

Data Pipelines

Dashboards show stale data, decisions made on wrong numbers

Cache Warmers

First visitors after deploy hit cold cache, pages take 8+ seconds

Cleanup Jobs

Disk fills up, temp files pile up, database bloats until it crashes

Report Generation

Stakeholders make decisions without current data, compliance gaps

SSL Renewals

Certificate expires, browsers block your site with security warnings

How it works

The dead man's switch principle

Traditional monitoring checks your systems. Heartbeat monitoring flips the model: your systems check in with us. If we do not hear from them within the expected window, something went wrong.

This catches failures that active monitoring cannot detect. A cron daemon that crashes produces no HTTP errors. A script that exits with code 0 but skips its main logic leaves no trace. A scheduling service that silently drops jobs from its queue gives no outward sign of trouble. The only evidence is the missing heartbeat.

Each heartbeat monitor gets a unique URL. Add a single HTTP request to the end of your script. If the script completes successfully, the request fires and resets the countdown. If it crashes, hangs, or never starts, the request never fires, the timer expires, and we alert your team through any of 16+ channels.

Try the interactive demo. Let the timer run out and watch what happens when a heartbeat goes missing. This is exactly what Pulse Stack™ does for every job you monitor.

Dead Man's Switch Demo

Click the button before the timer expires

15s

until expected

0

check-ins

#!/bin/bash
# Your existing cron job logic
/usr/local/bin/run-backup.sh

# Report success to Pulse Stack™
curl -fsS --retry 3 \
  https://pulse.pulsestack.co.uk/h/abc123

One line of code

Add monitoring in 30 seconds

No SDK. No library. No agent to install. Heartbeat monitoring is a single HTTP request appended to the end of your existing script. If you can run curl, you can monitor a cron job.

Place the request after your main logic so it only fires on success. If your backup script crashes on line 12, it never reaches the heartbeat call on line 47. The timer expires, and your Slack channel gets an alert within minutes.

Works with every language, every platform, and every cron implementation. Linux crontab, Windows Task Scheduler, systemd timers, Kubernetes CronJobs, AWS CloudWatch Events, GitHub Actions scheduled workflows, and more.

Unique URL per monitor for easy identification
Supports GET and POST with optional JSON payload
Configurable grace period for slow-running jobs
Automatic retry logic built into the URL handler

See every job, every hour, at a glance

Your dashboard shows a 24-hour timeline of every monitored task. Green dots mark successful check-ins. Red marks missed heartbeats. Patterns emerge that terminal output cannot reveal.

00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
db-backup
email-queue
billing-sync
report-gen
cache-warm
Successful
Missed

Execution trends

Track whether your jobs are slowing down over weeks. A backup that took 4 minutes last month but takes 20 minutes today is heading toward a timeout failure.

Overlap detection

When two resource-heavy jobs run at the same hour, they compete for CPU and memory. The timeline makes scheduling conflicts visible so you can stagger them.

Coverage gaps

Some hours have no jobs running. Others have six running simultaneously. The visual timeline helps you balance load and ensure nothing is scheduled during maintenance.

Monitor your first cron job in 60 seconds

Create a heartbeat monitor, copy the URL, add one line to your script. Done.

Start free

Real-world scenario

The backup that was not running

A SaaS company ran nightly database backups via a cron job on their primary server. The job exported the PostgreSQL database, compressed it, and uploaded it to S3. It had worked perfectly for two years.

During a routine server update, the system timezone changed from UTC to the server's local timezone. The cron daemon reloaded its schedule. The backup job, set to run at 0 3 * * *, now ran during peak traffic hours instead of 3 AM. The increased load caused the export to time out. The script exited with a non-zero code, but nobody checked exit codes. The S3 upload never happened.

Three weeks later, a developer accidentally dropped a production table. The team went to restore from backup. The most recent backup was 22 days old. They lost three weeks of customer data, order history, and configuration changes.

A single heartbeat ping at the end of that backup script would have triggered an alert on day one. The team would have known within minutes that the job failed, not three weeks later during a crisis.

22 days

of silent failure

3 weeks

of lost customer data

1 line

would have prevented it

Everything you need for cron job confidence

From simple heartbeat pings to advanced payload validation, Pulse Stack™ covers every aspect of background task monitoring.

Configurable intervals

Set expected check-in periods from 30 seconds to 30 days. Each monitor runs independently with its own schedule, grace period, and alert configuration. Jobs that run every minute get the same precision as weekly reports.

Grace periods

Account for natural execution time variation. If your job usually takes 5 minutes but occasionally takes 12, set a grace period that absorbs those spikes without triggering false alerts. We recommend setting grace to at least 20% of your expected runtime.

Payload validation

Send a JSON body with your heartbeat containing metrics like rows processed, duration, or error count. Define validation rules that flag a job as failed even if it completed. A billing sync that processes zero invoices should not count as success.

Maintenance windows

Suppress alerts during scheduled downtime for deployments, migrations, or server maintenance. Set one-time or recurring windows. Monitoring resumes automatically when the window closes, so you never forget to re-enable it.

Escalation policies

Send the first alert to Slack. If nobody acknowledges within 15 minutes, escalate to SMS. After 30 minutes, trigger a phone call. Build multi-step escalation chains that ensure critical failures reach someone, integrated with tools like PagerDuty and OpsGenie.

Execution history and trends

Every heartbeat is logged with its timestamp and payload data. View execution history across days, weeks, or months. Spot patterns like gradually increasing runtime or intermittent failures that only happen on weekends when traffic patterns change.

Multi-environment support

Monitor cron jobs across production, staging, and development environments from a single dashboard. Tag monitors by environment, project, or team. Filter views to focus on what matters right now without losing visibility into the rest.

Team notifications

Route alerts to the right people. Database backup failures go to the infrastructure team. Billing sync failures go to the payments team. Each monitor can have its own notification targets across any of the 16+ supported channels.

Silent failure modes

Why cron jobs fail and why you never find out

Cron jobs operate in a fundamentally different failure domain from web services. When a website goes down, users notice immediately. When a background job fails, the damage compounds invisibly until a human stumbles across the consequences.

The most common failure mode is not a crash. It is a job that exits cleanly but does nothing. A database export that connects but exports zero rows. A billing sync that skips records due to a schema change. A report generator that produces an empty PDF. These jobs report success to the scheduler because they did not throw an error. Heartbeat monitoring alone catches the first category of failures. Adding payload validation catches the second.

Infrastructure changes are another common trigger. Server updates that change the timezone or locale. Package upgrades that break a dependency. Disk space running out mid-execution. A new firewall rule that blocks outbound connections the script needs. Each of these causes the job to fail differently, but the result is the same: silence.

Website monitoring and API monitoring cover your public-facing services. Heartbeat monitoring covers everything else: the background processes, batch jobs, data pipelines, and scheduled tasks that keep your application running between user requests.

Common cron failure triggers

01Server timezone change after update
02Disk space exhaustion mid-job
03Database connection pool depleted
04Expired API key or rotated secret
05Package upgrade breaks dependency
06Firewall rule blocks outbound traffic
07Memory limit exceeded, OOM kill
08File lock held by zombie process
09DNS resolution failure to external API
10Cron daemon crash after system restart

Simple pricing. Start free.

50 monitors free forever. Upgrade when you need faster checks or more capacity.

Free

£0forever

  • 50 monitors
  • 3-min checks
  • Email alerts
  • 5 status pages
Start free

Most popular

Pro

£29/month

  • 200 monitors
  • 30-sec checks
  • All 16+ alert channels
  • 90-day data retention
Get started

Enterprise

£89/month

  • 500+ monitors
  • 30-sec checks
  • SSO & audit logs
  • Dedicated support
Contact us

All plans include multi-location checks, incident management, and public status pages. Full plan comparison →

Frequently asked questions

Everything you need to know about cron job and heartbeat monitoring.

Is your backup job actually running?

Add one line of code to any script. Get alerted the moment it stops running. Free for 50 monitors, no credit card required.

Start heartbeat monitoring free