Scheduled Task Monitoring

Scheduled task monitoring without extra infrastructure.

PingCron watches for missed check-ins from recurring jobs, scripts, and scheduled tasks so failures do not stay invisible.

5 monitors free · No credit card · Live in under 60 seconds

Scheduled tasks fail across many different schedulers — and most have no built-in alerting.

Most teams run scheduled work on a mix of tools: Linux cron, systemd timers, Windows Task Scheduler, GitHub Actions schedules, app-level schedulers like Laravel scheduler or Rails sidekiq-cron, and one-off bash scripts on a forgotten VM. Each has its own way of running tasks, and almost none of them tell you when something stopped running.

What they share: when a task fails to run, the failure is silent. The Task Scheduler entry still says "Ready". The systemd timer is still listed. The cron line is still in the crontab. But the work isn't happening.

PingCron is one HTTP endpoint that any scheduler can call. Whatever runs the task adds a check-in URL at the end. If that URL doesn't get hit on time, PingCron alerts you.

Scheduler-agnostic failure modes:

  • Linux cron daemon stopped after a reboot — every cron entry is silently dead
  • Windows Task Scheduler shows 'Ready' but the task hasn't actually run in weeks
  • systemd timer was masked by an admin and never re-enabled
  • GitHub Actions auto-disabled the schedule after 60 days of repo inactivity
  • App-level scheduler stopped because the host process crashed and no one noticed
  • Bash script on an EC2 instance worked fine until the instance was terminated

Setup

One HTTP call after any scheduled task.

Linux cron, Windows Task Scheduler, systemd timers, GitHub Actions — anything that can hit a URL works.

Before

your-scheduled-task

After

your-scheduled-task && curl -fsS https://api.pingcron.io/ping/abc123

Any scheduler that can run a shell command can call PingCron. For Windows or environments without curl, use a one-line PowerShell or built-in HTTP client equivalent.

Real-world examples

Linux cron

0 * * * * /scripts/cleanup.sh && curl -fsS https://api.pingcron.io/ping/abc123

Windows Task Scheduler (PowerShell)

C:\Scripts\daily-job.ps1; Invoke-WebRequest -Uri "https://api.pingcron.io/ping/abc123" -UseBasicParsing

systemd: ping at the end of the service script

# /etc/systemd/system/nightly-cleanup.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/cleanup.sh
ExecStartPost=/usr/bin/curl -fsS https://api.pingcron.io/ping/abc123

GitHub Actions scheduled workflow

      - name: Run task
        run: ./task.sh
      - name: Ping PingCron
        if: success()
        run: curl -fsS https://api.pingcron.io/ping/abc123

Scheduled task patterns to monitor.

Anything that runs on a schedule and matters when it stops.

Background cleanup jobs

Disk cleanup, log rotation, cache eviction, temp file purge.

Scheduled reports

Daily, weekly, monthly reports stakeholders rely on.

Data imports

Periodic syncs from CRMs, partners, or external APIs.

Billing reconciliation

Daily jobs that match payments to invoices.

Backup scripts

Database dumps, file backups, offsite syncs.

File processing jobs

Inbox-style folders that need scheduled processing.

Notification digests

Daily digests, scheduled emails, push reminders.

API polling tasks

Recurring fetches from third-party services.

How it works

Three steps regardless of which scheduler you use.

01

Create a monitor for the task

Set the expected interval (every minute, every 5 minutes, hourly, daily, etc.).

02

Have your scheduler call the ping URL

After the task succeeds — by appending && curl, or by running an HTTP client in the scheduler step.

03

Get alerted on missed runs

Email, Slack, Discord, or webhook the moment a check-in is overdue.

Alerts where you'll actually see them.

Configure as many channels as you want per monitor.

Email

HTML alerts with monitor details and direct links.

Slack

Post to any Slack channel via incoming webhook.

Discord

Native Discord webhook integration.

Custom webhooks

POST alerts to any endpoint with full payload.

FAQ

Scheduled task monitoring is the practice of verifying that recurring jobs — cron entries, systemd timers, Task Scheduler tasks, GitHub Actions schedules, app-level schedulers — actually run on time. Each task pings a URL on every successful run. If the ping is missed, you're alerted. It catches failures the scheduler itself doesn't surface.
Yes. PingCron is just an HTTP endpoint. Any scheduler that can hit a URL can use it — Linux cron, Windows Task Scheduler, systemd timers, launchd, GitHub Actions schedules, Vercel Cron, Cloudflare scheduled workers, app-level schedulers like Laravel scheduler. The integration pattern is the same regardless of which scheduler is running the work.
No. There's no agent, no SDK, no daemon, no installer. The integration is a single HTTP request. Anything that can make an HTTP call — bash, PowerShell, Python, Node, Go, Ruby, PHP — can use PingCron.
Yes. In your task action, run a PowerShell command that uses Invoke-WebRequest at the end of your script. PingCron expects the request on the schedule you set; if the task stops running or fails before reaching the ping, you get alerted.
Yes. Two patterns work. Either add ExecStartPost=/usr/bin/curl ... to the .service unit so the ping runs after the main command, or call curl as the last line of the script the timer launches. Either way, the ping fires after a successful run.
Yes. Add a curl step at the end of your scheduled workflow with if: success() so the ping only fires when every previous step succeeds. There's a dedicated guide for this — see the related guides below.
If the task crashes, exits early, or otherwise fails before reaching the ping line, the ping never goes out. Once the schedule plus grace period elapses, PingCron treats it as a missed check-in and sends an alert. For instant alerts, ping /fail in your error handler instead of waiting for the timeout.
Yes. 5 monitors free with email, Slack, and Discord alerts. No credit card required. Plenty for monitoring the 5 most critical scheduled tasks across your stack.

Related monitoring guides

Stop relying on schedulers to surface their own failures.

One HTTP call from any scheduler. Get alerted the moment a recurring task stops running.

Start monitoring free

5 monitors free · No credit card · Live in under 60 seconds