Monitor WordPress WP-Cron Events
WP-Cron is pseudo-cron — by default it only checks for due events on an actual page load, so a low-traffic site, or one behind aggressive page caching, can silently miss scheduled events for hours or days.
Setup
Create an incoming monitor
Add a heartbeat monitor in Pingtastic matching the event's expected frequency.
Ping inside the hooked function
Add the ping call after the scheduled event's real work completes.
add_action( 'my_nightly_sync_event', function () {
// ...existing event logic...
wp_remote_get( 'https://ping.pingtastic.net/ping/nightly-sync' );
} );Switch to real system cron (strongly recommended)
Disable WP-Cron's page-load trigger and call wp-cron.php from a real cron entry instead — see the gotcha below.
Gotchas
- ⚠By default, WP-Cron only checks for due events on an actual page load — a low-traffic, cached, or CDN-fronted site can go hours or days without WP-Cron firing. Add define('DISABLE_WP_CRON', true); to wp-config.php and trigger wp-cron.php from real system cron every few minutes instead — the single biggest reliability improvement available.
- ⚠A plugin conflict or a fatal error in an unrelated scheduled hook can prevent WP-Cron from processing the rest of the queue for that run — a missed ping tells you your event didn't fire, not necessarily why.
Questions
Why would WP-Cron just stop firing?
The most common reason is low or cached traffic — WP-Cron's default trigger is a visitor's page load. Switching to real system cron (see the gotcha above) removes this failure mode entirely.
Does this work with WP-Cron management plugins?
Yes — the ping just needs to happen inside the hooked function for your scheduled event, regardless of what triggers WP-Cron to check for due events.
Start monitoring your WordPress wp-cron
Set up your first monitor in under five minutes.
Get started — $5/month