Cronheart

Cronheart

Details
View on WordPress

WP-Cron is request-driven. On a low-traffic site no requests
arrive, no events fire, and a scheduled backup can be stalled for
weeks before anyone notices. Uptime monitors do not catch this — the
site responds to HTTPS just fine, it just is not running its jobs.

Cronheart turns WP-Cron into a dead-man switch: the plugin pings
cronheart.com every five minutes and on
every individual event you register. If the pings stop, cronheart
alerts you via email, Telegram, Slack, Discord, or a custom webhook.

What it does

  • Site heartbeat. A 5-minute custom WP-Cron event whose only job
    is to ping cronheart. Proves WP-Cron itself is alive on this site.
  • Per-event monitoring. Register any scheduled hook for
    start / success / fail pings with one PHP one-liner:
    cronheart_monitor( ‘my_nightly_report’, ‘xxxxxxxx-…’ );
  • PHP fatal-error capture. When a scheduled callback fatals or
    throws, the fail-ping body includes the error_get_last()
    summary — the cronheart dashboard shows the cause without you
    tailing debug.log.
  • Settings page. A read-only “Monitored events” table at
    Settings Cronheart shows every hook the plugin is watching and
    where its UUID came from (constant, option, filter).
  • Configuration through wp-config.php constants for production
    (CRONHEART_HEARTBEAT_UUID, CRONHEART_EVENT_<HOOK>_UUID), with
    admin-UI fallback for sites where editing wp-config.php is not
    practical.

Never breaks WP-Cron

The plugin’s hard contract: a broken cronheart backend, an
unreachable network, a misbehaving PSR-18 HTTP client — none of
them may cause WP-Cron to fail. Every network / HTTP error is
swallowed into a logged warning. If cronheart goes down for a
day, your wp_schedule_event callbacks still run normally; you
just stop seeing pings on the dashboard.

External services

This plugin sends HTTP requests to cronheart.com
on every scheduled WP-Cron run, but only when you supply a
monitor UUID
. Without configuration the plugin loads and does
nothing — no telemetry, no usage statistics, no anonymous reports.

The exact data sent per ping:

  • The per-monitor UUID you configured (path segment).
  • A short body excerpt — capped at 10 KB — containing either an
    exception summary (for fail pings) or nothing (for start /
    success / heartbeat).
  • The plugin / SDK version in a User-Agent header.

Cronheart.com Terms of Service ·
Privacy policy

Open source

Source code and issue tracker:
github.com/alexander-po/cronheart-wp.

The plugin wraps the
cron-monitor/php-sdk
PHP package (also open source, MIT-licensed). Both projects are
maintained independently.

Details

Plugin code:
cronheart
Plugin version:
0.1.9
Author:
Outdated:
No
WP version:
6.0 or higher
PHP version:
8.2 or higher
Test up to WP version:
7.0
Total installations:
0
Last updated:
2026-05-28
Rating:
Times rated:
0
cron
deadman-switch
healthcheck
monitoring
wp-cron