WordPress · WP-Cron replacement

Fix WordPress cron jobs
once and for all.

WP-Cron only fires when someone visits your site. On low-traffic pages that means scheduled posts, emails, and WooCommerce tasks run late or not at all. Cronengine replaces it with a real, time-based scheduler that fires on a fixed interval regardless of traffic.

5 free jobs · No credit card · Setup in 5 minutes

The problem

Why WP-Cron is unreliable

WordPress ships with a built-in pseudo-cron system called WP-Cron. It sounds convenient, but the way it works causes real problems in production.

Traffic-dependent

WP-Cron hooks into page loads. If nobody visits your site at the scheduled time, the task simply does not run. Low-traffic sites are especially vulnerable.

Imprecise timing

Even on busy sites, WP-Cron does not guarantee exact timing. Tasks scheduled for 09:00 might fire at 09:07 or 09:23 depending on when the next page request happens to arrive.

Slows down page loads

When WP-Cron fires, it adds processing overhead to the request that triggered it. Visitors occasionally experience a slower page load because a background task hitched a ride on their request.

No visibility

WordPress gives you no dashboard to see when tasks ran, whether they succeeded, or how long they took. Diagnosing a missed scheduled post is a guessing game.

Duplicate task runs

On high-traffic sites the opposite problem occurs: multiple concurrent requests can trigger the same scheduled task more than once, leading to duplicate emails, double-processing, or worse.

Hard to debug

When something breaks in a WP-Cron task, the failure is invisible. There is no error log tied to individual runs, no HTTP response to inspect, and no way to replay or retry.

The solution

How to replace WP-Cron with Cronengine

The standard approach is to disable the built-in WP-Cron and then use an external scheduler to call WordPress's cron endpoint on a fixed interval. Two steps.

1

Disable WP-Cron in wp-config.php

Add the following line to your wp-config.php file, before the line that says /* That's all, stop editing! */. This prevents WordPress from firing cron tasks on every page request.

wp-config.php PHP
/* Disable WP-Cron, we use an external scheduler instead. */
define( 'DISABLE_WP_CRON', true );
2

Schedule Cronengine to call wp-cron.php every 5 minutes

In your Cronengine dashboard, create a new job with the following URL and schedule. Every 5 minutes is the standard interval recommended by WordPress. Adjust to every minute if your site has tasks that need tighter timing.

Webhook URL

https://yourdomain.com/wp-cron.php?doing_wp_cron

Schedule

*/5 * * * *every 5 minutes

Replace yourdomain.com with your actual WordPress site URL.

3

Verify it is working

After the job has run a few times, open the run history in your Cronengine dashboard. You should see HTTP 200 responses from WordPress. If you see a 4xx or 5xx status, check that your URL is correct and that WP-Cron is accessible from an external IP.

wp-cron job · Run history Last 3 runs
2 min ago 200 OK 142ms
7 min ago 200 OK 138ms
12 min ago 200 OK 155ms

What gets fixed

Every WP-Cron task now runs reliably

Scheduled posts

Posts and pages scheduled to publish at a specific time will now go live on the dot, not hours later when traffic picks up.

WooCommerce order processing

WooCommerce relies on WP-Cron for order status updates, stock sync, and cleanup. Missed cron runs lead to stuck orders and payment delays.

Email campaigns and newsletters

Plugins like MailPoet and Newsletter depend on WP-Cron to dispatch emails. With a real scheduler, sends go out exactly when you configured them.

Database and cache cleanup

Transient cleanup, post revision pruning, and expired session removal all happen on schedule, keeping your database lean.

Plugin maintenance tasks

Security plugins (Wordfence, iThemes), backup plugins (UpdraftPlus), and SEO plugins (Yoast, Rank Math) all register WP-Cron tasks that now fire reliably.

Analytics and aggregation

Stats plugins and custom reporting tasks that aggregate data overnight will now complete predictably without depending on whether anyone visited the site.

What you gain on top of reliability

Full run history

Every cron call is logged with HTTP status, response time, and the full WordPress response body. You will know immediately if something goes wrong.

Email alerts on failure

If WordPress returns an error or the request times out, you get an email immediately. No more discovering missed tasks days later.

Manage multiple WordPress sites

Use Maps to group jobs by site. Keep client1.com, client2.com, and your own staging environments neatly separated in one dashboard.

Response time charts

See how long each wp-cron.php call takes over time. Spot when a plugin update started making your cron run slower.

Firewall or security plugin blocking requests?

All Cronengine requests originate from IP 45.9.188.216. If you run Wordfence, Cloudflare, or any WAF in front of your site, add this IP to your allowlist so the wp-cron.php request is not blocked. The URL also accepts plain HTTP if HTTPS is not configured.

Common questions

Make your WordPress cron jobs reliable.

Set up in 5 minutes. Free plan. No credit card required.