=== Cronjob.de – Reliable Cron ===
Contributors: cronjobde
Tags: cron, wp-cron, scheduled posts, cron job, heartbeat
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Run WP-Cron on a fixed schedule instead of on page views – set up in two minutes, with a safe fallback and an optional heartbeat.

== Description ==

WP-Cron only runs when someone visits your site. On quiet sites, at night or behind a page cache, scheduled posts are published late, WooCommerce and backup tasks pile up, and nobody notices. On busy sites the opposite happens: every page view checks for due tasks and adds load.

The usual fix is to switch off WP-Cron in wp-config.php and call wp-cron.php from a real cron job. Many shared hosting plans have no cron, and if the external call ever stops, WP-Cron stays switched off without anyone noticing.

This plugin does it safely:

* **Set up in two minutes.** The plugin shows your wp-cron.php address and opens a pre-filled cron job at [Cronjob.de](https://www.cronjob.de/) – you only click "save". Five cron jobs are free, without time limit.
* **Switches off the visitor trigger only while it is safe.** Page views stop triggering WP-Cron as soon as external calls arrive. If they stop, WordPress goes back to the visitor trigger by itself. No editing of wp-config.php.
* **Works with any external trigger.** Calls from a server crontab or another service are detected as well.
* **Shows the status.** Last WP-Cron run, last external call and the number of overdue tasks, under Tools → Cronjob.de.
* **Optional heartbeat.** Every WP-Cron run checks in at a heartbeat address. If the check-ins stop – for whatever reason – Cronjob.de alerts you by email (included from the Plus plan, 17.88 € per year).

Cronjob.de is a cron service from Germany, running since 2003, with servers in the EU only. A data processing agreement under Art. 28 GDPR is available.

== External services ==

This plugin works with the service Cronjob.de, operated by Joscha Schultze, Germany.

* **Links to cronjob.de.** The buttons "Create cron job at Cronjob.de", "Sign up for free" and "Create a heartbeat" open cronjob.de in a new tab. The cron job link contains the address of your site's wp-cron.php so that the form can be pre-filled. Nothing is transmitted unless you click one of these buttons.
* **Heartbeat check-ins (optional, off by default).** Only if you enter a heartbeat address, the plugin sends a GET request to that address at runcheck.de (a Cronjob.de domain) after WP-Cron runs, at most every 5 minutes. The request contains no data about your site or your visitors apart from what every HTTP request carries (IP address of your server, user agent "Cronjob.de WordPress plugin").
* **Calls to wp-cron.php.** If you set up a cron job, Cronjob.de calls your site's wp-cron.php on the schedule you choose.

Terms of service: https://www.cronjob.de/agb
Privacy policy: https://www.cronjob.de/datenschutz

== Installation ==

1. Install the plugin through Plugins → Add New, or upload the folder `cronjob-de` to `/wp-content/plugins/`.
2. Activate it.
3. Go to Tools → Cronjob.de and click "Create cron job at Cronjob.de". Log in or sign up, then save the pre-filled cron job.
4. Within five minutes the page turns green.

== Frequently Asked Questions ==

= Do I need an account at Cronjob.de? =

For the external call, yes – the free plan covers five cron jobs in 5-minute steps without time limit. If you already call wp-cron.php from a server crontab or another service, the plugin detects that too and you do not need an account.

= What happens if the external calls stop? =

The plugin only keeps the visitor trigger switched off while calls arrive. After 30 minutes without a call (longer if you call less often), WordPress triggers WP-Cron from page views again, exactly as without the plugin.

= I already have DISABLE_WP_CRON in wp-config.php. =

That is fine. The plugin then shows whether wp-cron.php is actually being called and warns you if it is not.

= Does it work with WooCommerce and the Action Scheduler? =

Yes. The Action Scheduler runs through WP-Cron, so it benefits from the regular calls just like scheduled posts.

= Does it work on multisite? =

WP-Cron runs per site, so each site needs its own cron job. Activate the plugin on each site where you want to use it.

= Does the plugin slow down my site? =

No. On normal page views it reads one stored value. Work is only done when wp-cron.php runs.

= What does the heartbeat cost? =

One heartbeat is included in the free plan and shows its status in your Cronjob.de account. Email alerts are included from the Plus plan (17.88 € per year).

== Screenshots ==

1. Before the setup: WP-Cron only runs on page views. The button opens a pre-filled cron job at Cronjob.de.
2. After the setup: Cronjob.de calls wp-cron.php, page views no longer trigger WP-Cron, and an optional heartbeat reports every run.

== Changelog ==

= 1.0.0 =
* First release.

== Upgrade Notice ==

= 1.0.0 =
First release.
