WordPress uptime monitoring

Point an outside HTTP monitor at a URL that has to run PHP and reach MySQL, not only the cached homepage, and send the alert somewhere you read within minutes; no plugin is required.

WordPress goes down in a few predictable ways. The database stops accepting connections, a plugin update throws a fatal error, or the host runs out of PHP workers under a traffic spike. The first two answer with HTTP 500, as "Error establishing a database connection" and "There has been a critical error on this website", so any monitor that reads the status code catches them.

The trap is caching. A page cache plugin or a CDN can keep serving the homepage as stored HTML, with a 200, while PHP behind it is dead. A monitor watching that homepage reports a perfect week while every login, comment and checkout fails. Jetpack Monitor sends a HEAD request to the homepage every 5 minutes, so it shares that blind spot.

WordPress uptime monitoring plugin, or no plugin

A monitor that runs inside WordPress cannot report WordPress being down, so every real option, Jetpack included, checks from outside servers. Logdash needs nothing installed on the site. The file below is optional: it gives the monitor a route that always runs PHP and queries the database.

wp-content/mu-plugins/health.php
<?php
// GET /wp-json/health/v1/check: 200 when PHP runs and MySQL answers.
add_action('rest_api_init', function () {
    register_rest_route('health/v1', '/check', [
        'methods' => 'GET',
        'permission_callback' => '__return_true',
        'callback' => function () {
            global $wpdb;
            $ok = $wpdb->get_var('SELECT 1') === '1';
            $response = new WP_REST_Response(['ok' => $ok], $ok ? 200 : 503);
            $response->header('Cache-Control', 'no-store');
            return $response;
        },
    ]);
});

Create the mu-plugins folder if it does not exist. Must-use plugins load on every request with no activation step, and nobody can switch them off from the dashboard by accident. On plain permalinks the URL is /?rest_route=/health/v1/check. If your cache plugin caches REST responses, exclude this path. The route skips the theme, so a fatal error inside a template only shows on real pages. On an uncached site the homepage is the better URL; on a cached one, watch both as two services.

  1. Add the monitor Create a service in Logdash and paste the health URL, or the homepage if you skipped the file. The free plan covers five sites checked every 5 minutes, Builder checks every minute for $9 a month, Pro every 15 seconds for $15.
  2. Connect Telegram Add the channel once and every site can use it. A webhook works too if alerts should go through your own handler.
  3. Break staging on purpose Put a wrong DB_PASSWORD in wp-config.php on a staging copy. WordPress answers 500, the monitor flips to down on the next check, and a Telegram alert arrives with the status code and the first lines of the error page.

WordPress downtime monitoring beyond the 500

Not every outage is a clean error page. When the host runs out of PHP workers, requests queue until the web server gives up with a 502 or 504, or they simply hang. Logdash counts any status outside 200 to 399 as down, and a request with no answer after 10 seconds as well, so both shapes trip the monitor. A site that is merely slow stays up, and the response time chart shows the climb, so check it after every plugin update.

Jetpack downtime monitor, honestly

If Jetpack is already on the site, its monitor is the cheapest answer there is: free, one toggle, alerts by email and the mobile apps. The limits are in the details. It only checks the homepage, the email only goes to the account that connected Jetpack, and it stops working when that connection breaks. Logdash fits when you want the check to hit a route of your choosing and the alert in Telegram.

Logdash vs Jetpack Monitor

FeatureLogdashJetpack Monitor
Free planFive sitesFree on every site running Jetpack
Free check intervalEvery 5 minutesEvery 5 minutes
Faster checksEvery minute on Builder, 15 seconds on ProEvery minute with the paid upgrade in Jetpack Manage
What gets checkedAny URL you choose, so the check can skip the page cacheA HEAD request to the homepage
Needs on the siteNothingThe Jetpack plugin and a working WordPress.com connection
Alert channelsTelegram and webhookEmail and app push, SMS and extra recipients on the upgrade

When Jetpack Monitor is the better pick

  • Jetpack is already installed and connected. Turning on the monitor is one toggle and costs nothing.
  • You want alerts by email. Logdash does not send email.
  • You run client sites from Jetpack Manage and want downtime in the same dashboard as their backups and updates.
Do I need a WordPress uptime monitoring plugin?
No. The check has to run from outside the site, because a plugin inside WordPress dies with it. Even Jetpack Monitor only uses the plugin to switch on checks that run on Jetpack servers.
Is the Jetpack downtime monitor free?
Yes. It checks the homepage every 5 minutes and alerts by email and the Jetpack or WordPress app, but only the account that connected Jetpack gets the email. One-minute checks, SMS and extra recipients are a paid upgrade inside Jetpack Manage.
How do I get a WordPress site down alert on my phone?
Point a Logdash monitor at the site and connect a Telegram channel. The alert lands when the status flips to down, and a second one when the site recovers, so you also get the length of the outage.
What does WordPress downtime monitoring actually catch?
Anything that changes the status code: a database outage or a fatal error returns 500, a dead host returns nothing, and a check that takes over 10 seconds counts as down. A cached homepage hides PHP failures, which is what the health route is for.

Point it at your own URL and watch it for real.