Cronjob.de › Guides › WordPress

Setting up a WordPress cronjob: making WP-Cron reliable

WordPress ships its own scheduler called WP-Cron, but it is not a real cron. It only starts when somebody opens your site. This guide shows how to disable it and have it triggered from outside at a fixed interval instead.

Why at all

WP-Cron depends on your visitors

On every page view WordPress checks whether a scheduled task is due and internally triggers a call to wp-cron.php. If no visitor comes, nothing happens. On a low-traffic site a post scheduled for 8 a.m. therefore appears at noon, whenever somebody happens to drop by.

This affects everything WordPress and its plugins do in the background: scheduled posts, backups, emptying the trash, update checks, newsletter delivery, and with WooCommerce the Action Scheduler that advances order status and subscriptions.

At the other end there is the opposite problem. On a busy site the check runs on every single request and costs processing time for nothing. A fixed interval from outside solves both cases.

URL to call
https://ihre-domain.de/wp-cron.php
Recommended interval
every 5 minutes
Tested with
WordPress 5.x, 6.x
Sufficient Cronjob.de plan
The free plan is enough. For WooCommerce shops the one-minute interval from Cronjob.de Plus makes sense.

Setup

Step by step

The AI does it faster

You do not have to transfer any of this by hand. Paste this guide – or the one for your own system – into the assistant, and Cronjob.de fills in address, method, schedule and headers. Where something is unclear it asks instead of guessing. At the end you see what was entered and create the job with one click.

Included in the free plan at no extra cost. You will find it after signing in under "Cronjobs" → "Create with AI".

  1. Disable WP-Cron in wp-config.php

    Open wp-config.php in the root directory of your WordPress installation and add the following line above the line saying "That’s all, stop editing".

    define( 'DISABLE_WP_CRON', true );
  2. Check that the address is reachable

    Open https://your-domain.com/wp-cron.php in a browser once. A blank white page is correct. An error message means the file is being blocked, usually by a security plugin or a rule in .htaccess.

  3. Create an account at Cronjob.de

    Registration takes a minute and is free. Five cronjobs stay free forever, the first 14 days run on the Unlimited plan.

    Start for free 14 days of Unlimited included, no payment details

  4. Create a cronjob with that address

    Enter the address and select minutes 0, 5, 10 and so on in the schedule. If you know crontab syntax, type the expression directly instead.

    */5 * * * *

    You can enter this expression at Cronjob.de exactly as it is – the schedule field understands crontab notation. But you do not have to know it: simply click the schedule together instead.

  5. Switch on error notifications

    So that you notice when your site stops responding, enter an email address under Notifications. You will then be notified when a call fails. Failure notifications by email are included from the Plus plan, and free during the first 14 days.

What the five fields of an expression like */5 * * * * mean is explained in the crontab reference – with examples and the most common pitfalls. You can build the expression in the crontab generator. Whether you need an outside service at all is shown in the comparison of the three ways.

Verification

Is it actually running?

In the Cronjob.de call log you will see the first calls with status 200 and their runtime within a few minutes. Inside WordPress the free WP Crontrol plugin lists all scheduled events under Tools and when they last ran. Scheduling a test post for the next minute is the quickest check. Under Tools → Site Health WordPress also reports on its own when a scheduled event is late or has failed.

FAQ

Common questions about WordPress

Which external cron service should I use for WP-Cron?
If your host offers a cron manager with an interval of a few minutes, that is enough. Otherwise use a service that calls wp-cron.php from outside. Look for four things: an interval of five minutes or tighter, a log of the calls, a notification when a call fails, and servers in the EU. Cronjob.de meets all four – five cronjobs at five-minute intervals are free forever, and failure notifications by email come with the Plus plan. Which services can do that and what they cost is in the comparison of cron job services.
Is there a WordPress plugin?
Yes, the free plugin Cronjob.de – Reliable Cron in the WordPress plugin directory. It shows the address of your wp-cron.php and opens a pre-filled cron job at Cronjob.de, you only click save. As soon as external calls arrive, it stops page views from triggering WP-Cron; if they stop, WordPress goes back to the visitor trigger by itself. You then do not need the wp-config.php line from step 1. Under Tools → Cronjob.de you see when WP-Cron last ran and how many tasks are overdue.
Do I really have to disable WP-Cron?
No, but it makes sense. Without disabling it both run in parallel: the call from outside plus the check on every visit. Duplicate execution is unlikely thanks to a lock inside WordPress, but the load remains.
What happens if a call fails once?
Nothing is lost. WordPress remembers due tasks and catches up on the next successful call. A single missed call only delays execution.
Is the free plan enough?
For most sites yes. The free plan calls every five minutes, which is enough for scheduled posts, backups and update checks. For a WooCommerce shop we recommend the one-minute interval, because the Action Scheduler advances orders and subscriptions there.
Is calling more often than once a minute worth it?
No. WordPress sets a lock on start that holds for 60 seconds by default (WP_CRON_LOCK_TIMEOUT). A second call within that window is discarded. One minute is therefore the sensible lower limit.
My call ends with error 403 or 401.
Something is blocking access to wp-cron.php. Common causes are security plugins such as Wordfence, directory-level password protection, or a blocking rule in .htaccess. An upstream bot protection such as Cloudflare Bot Fight Mode can also reject calls from cron services. Exempt wp-cron.php there.
Does this work on a site behind maintenance mode?
Usually not, because maintenance mode intercepts every request. Many maintenance plugins let you exempt individual addresses. Add wp-cron.php there.
I run WordPress Multisite. Is one cronjob enough?
No. In a multisite installation every sub-site has its own scheduled events, and a call to wp-cron.php only processes those of the site whose address it comes through. Create a separate cronjob for every sub-site, for example https://your-domain.com/subsite/wp-cron.php or https://subsite.your-domain.com/wp-cron.php.
Is your server rejecting our calls? Error 403 almost always comes from a firewall, a security plugin or directory protection – not from your script. All our calls carry the fixed identifier Cronjob.de in the user agent. Ask your host for an exception for it; that is more reliable than allowing IP addresses, because ours can change. Addresses and details in the FAQ. Other errors such as 401, 404 or 500 are explained in the troubleshooting guide.

Create your cronjob now

Create an account, enter the address, click the schedule. Five cronjobs are free forever, the first 14 days run on the Unlimited plan.

Start for free See pricing

More guides

Official documentation of WordPress

The details about WordPress come from their own documentation, as of September 2026. Please check there whether anything has changed since. WordPress is a trademark of its respective owner. This guide comes from Cronjob.de and has no business relationship with that provider.