Switching from UptimeRobot? Import your monitors in one click with a read-only API key.Start free →
  1. Home
  2. Monitoring
  3. WordPress monitoring

WordPress monitoring: the checks a WordPress site actually needs

A keyword check on the home page, a status check on wp-login.php, a heartbeat for scheduled jobs, SSL expiry and DNS. Assemble them once per site from the standard monitor types.

  • 30 monitors free
  • No credit card
  • Failures confirmed from other regions
clienta.comGET / · must contain “Add to cart”
Up
  • Amsterdam97msfound
  • London142msfound
  • Keyword“Add to cart” present
  • Forbidden“Error establishing” absent
  • TTFB55 ms

Illustrative example

Try it

Check it now, in your browser

No account. WordPress monitoring: type a target and see roughly what it looks at. Nothing you type is stored.

One real request from a Tenium checker. It follows redirects and reads the certificate. Nothing is saved.

The public test checks that the page answers. The keyword rule itself (must contain, must not contain) runs in a saved monitor.

The result appears here.

Create this monitorOpen the full tool

What it checks

What a wordpress monitor looks at

Home page keyword

Require a phrase from your footer and forbid "Error establishing a database connection". A 200 page that is really an error no longer passes.

wp-login.php reachable

A status check on the login URL shows when a security plugin or WAF rule has locked everyone out.

Scheduled jobs

A heartbeat pinged from a real system cron job tells you when backups or scheduled publishing quietly stop.

Certificates and domain

SSL / domain monitors cover the certificate and registration expiry for each client site.

Alerts

WordPress monitoring: what an alert looks like

The same event arrives as an e-mail, a Telegram message or a Slack card. This is the wording the channels send; the host, times and numbers are made up.

To [email protected]

Subject [DOWN] clienta.com — Keyword "Add to cart" missing

DOWN

clienta.com

clienta.com · Keyword "Add to cart" missing · confirmed from Amsterdam (AMS), London (LON)

ErrorKeyword "Add to cart" missing
Confirmed byAmsterdam (AMS), London (LON)
Since14:02:11 UTC
Targetclienta.com
Next stepCheck the server / hosting panel. Acknowledge so the team knows you are on it.

AcknowledgeOpen incident

<h1>Error establishing a database connection</h1>

Tenium · checked from Amsterdam · 14:02 UTC

Tenium alerts

🔴 DOWN · clienta.com · Keyword "Add to cart" missing · confirmed from Amsterdam (AMS), London (LON)

TTenium APP 2:02 PM

DOWN · clienta.com
clienta.com · Keyword "Add to cart" missing · confirmed from Amsterdam (AMS), London (LON)

  • Error: Keyword "Add to cart" missing
  • Confirmed by: Amsterdam (AMS), London (LON)
  • Target: clienta.com

AcknowledgeOpen incident

Check the server / hosting panel. Acknowledge so the team knows you are on it. · checked from Amsterdam

WordPress monitoring: e-mail, Discord and Google Chat work on every plan; Slack, Telegram, Teams and Mattermost start on Starter. There are no SMS or voice-call alerts.

Response time

Response time with a threshold

Every check stores how long the response took. WordPress monitoring: drag the threshold and see when a slow-response alert would have fired.

Response time Threshold alert illustrative data
Response time with a threshold. Illustrative data. 0500100015002000 Threshold 900 ms 00:0006:0012:0018:0024:00 Response time (ms)
Rule. WordPress monitoring: the alert fires when the average of the last 3 checks is above the threshold (Pro and Agency).
Speed

How fast you find out

Pick a plan to see its check interval and how long a failure takes to reach you, including the confirmation round.

Checks every30 s
On average you hear after15 s
At worst90 s
Checks everyConfirmation window (up to 60 s)

WordPress monitoring: a failure lands at a random moment between two checks, so on average you wait half an interval, and the worst case is a whole interval plus the confirmation window. A single failing region is not enough: all two regions must agree before an incident opens. The other regions are asked straight away, and we allow up to 60 seconds for the answers.

Setup

How to set up wordpress monitoring in 30 seconds

1

Add the home page as a Keyword monitor

Present: a phrase from the footer. Absent: Error establishing a database connection.

2

Add wp-login.php as an HTTP monitor

Use the full URL. Expected status 200-299 normally; use 200-399 if your login redirects to https.

3

Add a heartbeat for scheduled work

Call its ping URL from the end of a server cron or a WP-CLI job that runs wp cron event run --due-now.

4

Add SSL / domain, then tag the set

Give all of a site's monitors the same tag so you can find them together.

Failure modes

What each error means

This is the text an incident shows in its Error line, the usual cause, and the first thing to look at.

KEYWORDKeyword "Add to cart" missing

The page answered but the phrase is not in it: a cached error page, a half-rendered template, an empty product feed. This is exactly what status-only checks miss.

Shown as: Keyword "Add to cart" missing

KEYWORDForbidden keyword "Error establishing a database connection" present

The error text appeared in the body, usually with a cheerful 200. WordPress and many CMSs do this when the database is gone.

Shown as: Forbidden keyword "Error establishing a database connection" present

BLOCKEDBlocked by WAF challenge (Cloudflare)

A bot challenge replaced the page, so the keyword cannot be found. Flagged as blocked, not down; allow the checker and it clears.

Shown as: Blocked by WAF challenge (Cloudflare)

TIMEOUTTimeout after 15 s

The page never finished. Keyword checks read up to about 1 MB of the body, so a very slow origin fails here before the text is judged.

Shown as: Timeout after 15 s

CERT_HAS_EXPIREDTLS error: certificate has expired

The certificate is no longer valid, so the page cannot be fetched securely. Renew it.

Shown as: TLS error: certificate has expired

Plans

WordPress monitoring by plan

Free
$0/mo
Starter
$7/mo
Pro
$29/mo
Agency
$59/mo
Full monitor set—✓✓✓
Monitors301003001000
Fastest interval5 min1 min30 s30 s
Regions1222
Custom headers——✓✓
Response-time alerts——✓✓
Escalation to a second contact——✓✓
Status pages1310Unlimited

JSON/API, DNS, UDP, heartbeat, SSL / domain and change checks start on Starter; HTTP(S), keyword, ping and port checks are on every plan.

Full pricing

A monitor set for one WordPress site

WordPress has no special monitor type, and it does not need one. A solid set is built from the standard types, and for a typical site it takes five to six monitors:

  • Keyword on the home page: a footer phrase must be present, and "Error establishing a database connection" must be absent (Starter plan and above).
  • HTTP on /wp-login.php with the default 200-299 range, or 200-399 if it redirects to https.
  • JSON API on /?rest_route=/ with the path name and your site title as the expected value; this works without pretty permalinks and proves PHP, the database and the REST layer together.
  • Heartbeat for scheduled work (next section).
  • SSL / domain for the certificate and registration dates.
  • Optionally DNS for the A record, or an HTTP monitor that expects 403 on /xmlrpc.php if you have blocked it on purpose.

wp-cron is not a clock

By default WordPress runs scheduled tasks only when somebody visits the site. A quiet site therefore publishes scheduled posts late, sends mail queues late, and skips backups. Worse, a busy one can trigger the same job twice. The fix that most hosting guides recommend is to set DISABLE_WP_CRON to true in wp-config.php and run the task from a real scheduler every five minutes: */5 * * * * cd /var/www/site && wp cron event run --due-now && curl -fsS https://YOUR-APP-HOST/hb/hb_TOKEN. Create a heartbeat with a period of 600 seconds and a grace of 300. Now a missing ping means the actual scheduler stopped, which also explains why backups and scheduled posts went missing.

Heartbeats start on Starter, and the allowances are generous: 20 on Starter and 100 on Pro, so one per site is feasible even for a studio.

The first five minutes after an update

Most WordPress outages begin with a plugin, theme or core update. Three failure screens deserve their own absent-phrase checks, because each can be served with a normal status code by a cache or a custom error template: "There has been a critical error on this website" (the fatal-error screen), "Briefly unavailable for scheduled maintenance" (an update that stalled and left the maintenance file behind), and "Error establishing a database connection". Put them in separate keyword monitors or pick the two you see most; the failure message then names which one appeared.

Pair the checks with a maintenance window when you update on purpose, so a few minutes of deliberate downtime do not alarm the client or ruin the uptime figure in the monthly report.

Caches can hide an outage

Page caches and CDNs are designed to keep serving the last good copy, which is wonderful for visitors and terrible for monitoring. With the database down, a cached home page can stay green for hours. Keep at least one monitor on something that must run PHP and touch the database: wp-login.php is never cached by sensible setups, and the REST root at /?rest_route=/ is dynamic as well. If your cache serves error pages for a while, the absent-phrase check catches those too.

The reverse also happens: a security plugin or WAF treats a monitoring IP as an attacker. Wordfence, Cloudflare rules and fail2ban may all block it after a few requests. Allow-list the checker IP list or send an X-Tenium-Secret header that your rule can match, and the monitor is no longer part of your attack surface. A bot challenge shows up as a "blocked" incident rather than "down".

Running forty sites

At five monitors a site, the Pro plan's 300 monitors cover about 60 sites and Agency's 1000 cover 200. Consistency matters more than cleverness: use the same monitor names (Client A, home keyword), the same tags, and the same alert contacts everywhere, so incidents read the same on the status page and in the report. A CSV import can create the monitors in bulk; the import docs list the columns. On the Agency plan, give each client a workspace with their own viewer login and branded monthly report; see for agencies.

Know the boundary. Tenium looks at your site from outside, so it will tell you the site is unreachable, which a plugin cannot do after the site is gone. It does not see plugin versions, file changes, malware, or backups. Tools like ManageWP and MainWP do that job, and they complement rather than replace this.

WordPress monitoring questions

Do I need a plugin installed on the site?

No. Every monitor works from the outside through public URLs. The only thing you add is a line in the server's scheduler for the cron heartbeat, if you want one.

Which WordPress URLs are safe to monitor?

Pages that are public and cheap to render: the home page, /wp-login.php and /?rest_route=/. Avoid /wp-admin, which redirects to the login for anonymous users, and never include credentials in a monitored URL.

Is there a ready-made WordPress template?

Not as a one-click product. The set above is quick to create by hand or by CSV import, and tags keep the group together.

Will multisite work?

Treat each site in the network as its own hostname and monitor them separately, plus one REST check on the main site. A network-wide failure then shows up as many incidents at once.

Start wordpress monitoring free

30 monitors on the Free plan, no card needed, with failures confirmed from other regions (2 regions live today). Upgrade when the client list grows.