Cronjob.de › Guides › WordPress-Cron
Monitoring WordPress cron: is WP-Cron really running?
The only reliable way to know whether WP-Cron runs is to let WordPress report it. After every cron run, WordPress sends a sign of life to a heartbeat at Cronjob.de; if it stops, you get a message. The easiest way is the free plugin “Cronjob.de – Reliable Cron”: enter the ping address, save, done. No code needed.
Updated:
Why at all
Why you would not notice otherwise
WP-Cron is not a real cron. According to the WordPress documentation, it checks on every page load whether a scheduled task is due, and does not run constantly like the system cron. If nobody comes by at night, a cache serves the page without starting WordPress, or a firewall blocks the internal call, the work is left undone.
Since version 5.2, WordPress lists late and failed scheduled events under “Tools › Site Health”, but only when somebody looks. You get no message.
Two approaches complement each other: have Cronjob.de trigger WP-Cron at a fixed interval, so it runs without visitors. That is covered in the guide Setting up a WordPress cronjob. And monitor it with a heartbeat, no matter who triggers it. That is what this page is about.
- Ping address (example)
https://runcheck.de/a8k3m2x9q1- Schedule
- WP-Cron on page views or triggered from outside; heartbeat usually hourly
- Applies to
- WordPress 6.x und 7.x, WP-CLI
- Sufficient Cronjob.de plan
- One heartbeat with email alerts is free. Up to 10 come with Plus (€17.88 a year), up to 50 with alerts via Telegram, Slack, Teams or Discord as well with Unlimited (€47.88 a year).
Setup
Set up in three steps
What is a heartbeat?
A regular sign of life: after every run your job calls its own address at Cronjob.de. If the call is overdue or the job reports a failure, we alert you. More about heartbeats
-
Create a heartbeat
In your account, create a new one under “Heartbeats”, hourly, with one hour of leeway. You receive a ping address of its own, such as
https://runcheck.de/a8k3m2x9q1. -
Without code: install the plugin and enter the address
In the WordPress admin, search for “Cronjob.de” under “Plugins”, then install and activate Cronjob.de – Reliable Cron. Under “Tools › Cronjob.de”, enter the ping address in the field “Heartbeat (optional)” and save. From now on every WP-Cron run checks in, at most every 5 minutes.
-
Or: a must-use plugin with a few lines
If you prefer not to install a plugin, upload the file
wp-content/mu-plugins/cronjob-heartbeat.phpvia FTP. Themu-pluginsfolder does not always exist; if not, create it. WordPress only loads PHP files directly in this folder, not in subfolders. Must-use plugins are always active. This file schedules an hourly WP-Cron task that checks in with Cronjob.de.<?php // wp-content/mu-plugins/cronjob-heartbeat.php // Checks in with Cronjob.de every hour via WP-Cron. If the check-in is missing, WP-Cron is not running. add_action( 'cronjob_de_heartbeat', function () { wp_remote_get( 'https://runcheck.de/a8k3m2x9q1', array( 'timeout' => 5 ) ); } ); add_action( 'init', function () { if ( ! wp_next_scheduled( 'cronjob_de_heartbeat' ) ) { wp_schedule_event( time(), 'hourly', 'cronjob_de_heartbeat' ); } } ); -
Trigger it once and check
Open
https://your-domain.com/wp-cron.phponce in your browser; with the next WP-Cron run at the latest, the first check-in arrives, and “Waiting for the first check-in …” turns green in your account. With the must-use plugin and WP-CLI you can trigger it directly:wp cron event run cronjob_de_heartbeat
The ready-made lines for Linux, PHP, Python, Node.js, n8n, Make, Supabase and Vercel are on the page Cron job monitoring. Your own ping address appears in your account once you create the heartbeat, with the same lines ready to copy.
When something fails
What happens when a run fails
If the check-in is missing, WP-Cron is not running: because no visitors came, a cache sits in front, a plugin blocks it or the site is down. After the leeway you get a message, and an all-clear as soon as WP-Cron runs again. That way you also know scheduled posts and shop tasks are no longer piling up.
FAQ
Common questions about WordPress-Cron
- How do I check whether WP-Cron is running?
- By hand under “Tools › Site Health”: WordPress lists late or failed scheduled events there. To be told automatically, use a heartbeat as above, because it contacts you as soon as the signs of life stop.
- Is the cronjob that calls wp-cron.php not enough?
- It makes sure WP-Cron gets triggered, and from the Plus plan we report by email when the call ends with an error. The heartbeat additionally tells you that WP-Cron really processes the scheduled tasks. The plugin “Cronjob.de – Reliable Cron” sets up both.
- How do I monitor WP-Cron when I run it with WP-CLI on my own server?
- Append the check-in to the crontab line; WP-CLI's exit code goes along:
*/5 * * * * cd /var/www/html && wp cron event run --due-now --quiet; curl -fsS -m 10 --retry 3 https://runcheck.de/a8k3m2x9q1/$? > /dev/null. You then need no plugin. - Does this monitor WooCommerce tasks too?
- Indirectly. WooCommerce handles a lot through the Action Scheduler, which runs on WP-Cron by default. The heartbeat shows that WP-Cron runs; whether each single task inside succeeds, you see under “WooCommerce › Status › Scheduled Actions”.
Set up your heartbeat now
One heartbeat with email alerts is free. Up to 10 come with Plus (€17.88 a year), up to 50 with alerts via Telegram, Slack, Teams or Discord as well with Unlimited (€47.88 a year). The first 14 days run on the Unlimited plan, no payment details needed.
Set up a heartbeat for free More about heartbeatsMore monitoring guides
Official documentation of WordPress-Cron
The details about WP-Cron come from the WordPress documentation, as of October 2026. WordPress is a trademark of the WordPress Foundation. The plugin “Cronjob.de – Reliable Cron” is made by Cronjob.de. This guide comes from Cronjob.de and has no business relationship with the WordPress Foundation.
By Joscha Schultze, operator of Cronjob.de · Written with AI assistance, provider details checked against their official pages.