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.
How it works
- Hourly WP-Cron job fetches your homepage with a 10-second HTTP timeout
- Every check is recorded to the
gp_uptime_checkstable: 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.
- Sign-In Notifications Setup: another proactive-alert feature that emails you when key events happen
- Quieting the Alert Email Flood: the throttle window and category-based toggles that apply to Uptime alerts too