# Uptime Monitoring Setup

> GuardPress internal uptime monitor: hourly WP-Cron check with a 10-second timeout, rate-limited alerts and daily, weekly and monthly uptime statistics.

- Canonical: <https://royalplugins.com/support/guardpress/uptime-monitoring-setup/>
- Last updated: 2026-09-27
- HTML version: <https://royalplugins.com/support/guardpress/uptime-monitoring-setup/>

---

GuardPress ships an internal uptime monitor that catches the specific downtime category external services miss: cases where the server is up and responsive but WordPress itself is throwing fatal errors. This article covers how it works, what to configure, and why you should still pair it with an external monitor for full coverage.

### Off by default

Uptime Monitoring is off at activation because it needs to know where to send alerts and because there’s a real trade-off (an hourly self-request adds load your host will see in logs). Turn it on under **GuardPress → Settings → Uptime Monitoring** after you’ve configured Email Alerts and confirmed a test email arrives.

## How it works

- **Hourly WP-Cron job** fetches your homepage with a 10-second HTTP timeout
- **Every check is recorded** to the `gp_uptime_checks` table: status, response code, response time, and any error message
- **Failed checks fire a downtime alert** (network error OR HTTP status other than 200) and write a CRITICAL-severity entry to the audit log
- **Alerts are rate-limited** to once per hour so a sustained outage doesn’t flood your inbox: you get one email at the start, not one per check
- **Admin page shows history** and uptime statistics for the last day, week, and month

## Enabling

#### Confirm email alerts work first

Uptime Monitoring uses the same alert-email path as every other GuardPress alert, so if your SMTP isn’t working you won’t receive downtime notifications. Send a test email from **GuardPress → Settings → Email Alerts** and verify it arrives before enabling Uptime.

#### Enable Uptime Monitoring

Open **GuardPress → Settings → Uptime Monitoring** and flip the toggle on. Save. The first check fires on the next WP-Cron tick (within an hour).

#### Confirm the alert email address

Alerts go to the WordPress admin email by default. Set a separate address (an ops inbox or pager) under **GuardPress → Settings → Notifications** if you want alerts routed elsewhere.

#### Watch the first-day stats

Come back after 24 hours to the Uptime Monitoring admin page. You should see 24 check entries, all successful. If any failed on a healthy site, investigate before you trust the alerts (usually the fix is your host’s WP-Cron reliability).

## The internal-monitor limitation

Uptime Monitoring runs from inside your WordPress install via WP-Cron. That means it catches cases where the server is up but WordPress is broken (a fatal PHP error, a database connection failure, a plugin that white-screened the site). It does **not** catch cases where the server itself is completely off the internet, because the cron job that would fire the check also isn’t firing.

For full coverage, pair the internal monitor with a free external service that pings your site from outside your infrastructure:

- **UptimeRobot**: 50 monitors free, 5-minute check interval
- **Better Uptime** (now BetterStack): 10 monitors free, 3-minute interval, includes a status page
- **Freshping**: 50 monitors free, 1-minute interval
- **Cronitor**: if you specifically want cron-job monitoring in addition to uptime pings

Use both: the external monitor catches server-level outages, the internal monitor catches WordPress-level outages, and neither has a full view of the other’s failure mode.

## Operational notes

### No auto-recovery email

GuardPress sends a downtime alert when a check fails but does **not** send a follow-up “site back online” email when the next check succeeds. Check the Uptime Monitoring admin page or query the `gp_uptime_checks` table to confirm recovery.

### False positives from your host’s cache

If your homepage is behind a cache (Cloudflare, ForgeCache, WP Rocket, host-level FastCGI) the uptime check may hit the cached version even when the origin is broken, masking real outages. This is fine most of the time but is worth knowing if you see clean uptime stats but customers reporting downtime.

### The 10-second timeout

The check fails if the homepage takes longer than 10 seconds to respond. On a normally-fast site, a 10-second response indicates a real problem worth alerting on. On a very slow shared host where 5-second homepage renders are baseline, you may see occasional false positives. The timeout is not currently configurable via the UI.

Related

- [**Sign-In Notifications Setup**](https://royalplugins.com/support/guardpress/sign-in-notifications-setup/): another proactive-alert feature that emails you when key events happen
- [**Quieting the Alert Email Flood**](https://royalplugins.com/support/guardpress/quieting-security-alert-emails/): the throttle window and category-based toggles that apply to Uptime alerts too

[Back to GuardPress Support](https://royalplugins.com/support/guardpress/)
[GuardPress Plugin Page](https://royalplugins.com/guardpress/)
