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.
error_get_last()debug.log.wp-config.php constants for productionCRONHEART_HEARTBEAT_UUID, CRONHEART_EVENT_<HOOK>_UUID), withwp-config.php is notThe 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.
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:
fail pings) or nothing (for start /heartbeat).User-Agent header.Cronheart.com Terms of Service ·
Privacy policy
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.