WP-Cron not running? Monitor WordPress scheduled tasks
WordPress doesn't have a real scheduler. WP-Cron runs scheduled events when a page is loaded, so on a quiet site, "every hour" means "whenever someone visits". Behind full-page caching it may not run at all, which is why scheduled posts get "Missed schedule" and backup plugins go quiet.
Step 1: drive WP-Cron from a real cron
In wp-config.php:
define('DISABLE_WP_CRON', true);
Then on the server (or a host's cron panel), every 5 minutes:
*/5 * * * * cd /var/www/site && wp cron event run --due-now --quiet && curl -fsS -m 10 https://cronpup.com/p/YOUR-UUID
Step 2: alert when it stops
Create a period monitor for every 5 minutes with 10 minutes of grace. If the server cron stops, WP-CLI breaks after an update, or the site's PHP fails, you hear about it within 15 minutes instead of when a reader asks why the newsletter didn't go out.
Backups get their own monitor
If a backup plugin runs on WP-Cron, give the backup its own monitor with a daily schedule, so "cron runs but the backup fails" is caught too. Monitor your site free.