This is a research guide based on cited documentation. It is not a report of firsthand testing. Our editorial method

Why the homepage check misses member outages

Hosts and caching plugins serve anonymous pages from cache, but bypass it for logged-in users and transactional pages. WP Engine's cache documentation, for example, excludes pages where a cookie beginning with wordpress_ is set, wp-login.php and the admin area, and pages named cart or checkout. If PHP or the database fails, a cached homepage can keep returning 200 OK while every member sees an error.

Scheduled work is the second blind spot. The WordPress developer handbook explains that WP-Cron runs on page loads rather than as a continuous process, so tasks such as membership expiry, drip content release and renewal emails depend on traffic or a system scheduler. When cron stops, nothing goes down; the failures surface days later as missed renewals or locked lessons.

Third, certificates. Let's Encrypt's FAQ says its default certificates are valid for 90 days and recommends renewing every 60 days. If automatic renewal breaks after a migration, the site works normally until the day the certificate expires.

What to monitor

TargetMonitor typeWhat counts as healthySuggested interval
HomepageHTTP200 response5 minutes
Login page (wp-login.php or your custom login URL)KeywordA string that appears only in the rendered login form5 minutes
A public course or lesson landing pageKeywordThe course title or a fixed heading from the LMS template5 minutes
Checkout or registration pageKeywordA field label from the payment or registration form5 minutes
Uncached health URLKeywordA short page or endpoint that queries the database and prints a fixed word; exclude it from cache1 to 5 minutes
WP-Cron via system schedulerHeartbeatA ping after each successful cron runMatches the cron schedule plus a grace period
Backup jobHeartbeatA ping after the off-host backup completesDaily plus a grace period
TLS certificateSSL expiryMore than 21 days remainingDaily
Domain registrationDomain expiryNot inside the renewal windowDaily

Free tiers of common monitors

From each provider's pricing or documentation page on 29 October 2026. Read the current page before relying on a limit; several pages did not state every detail.

ServiceFree tierNext step upNotes
UptimeRobot50 monitors, 5-minute interval, keyword monitors, 1 status page; described as good for personal and commercial projectsSolo: $12/mo billed annually ($144/yr), 10 monitors, 60-second intervalThe free feature list mentions SSL and domain expiry, but the table states SSL monitoring is paid-only; heartbeat monitoring was not listed for Free
Better StackListed as 10 monitors & heartbeats and 1 status page (whether the 10 is shared is not clear); Slack and email alertsExtra 50 monitors $25/mo (or $21/mo yearly); extra 10 heartbeats $20/mo (or $17/mo yearly)Free-tier check frequency was not stated on the pricing page; no SMS or phone alerts listed for Free
Healthchecks.ioHobbyist: $0, 20 jobs, 100 log entries per jobSupporter: $5/mo with the same limitsBuilt for cron and heartbeat monitoring, not page checks
DigitalOcean Uptime1 free check per month credited to the invoice$1.00 per check per monthMonitors latency, uptime and SSL certificates; alerts by email or Slack; billed to a DigitalOcean account

Monitoring WP-Cron with a heartbeat

The WordPress handbook describes disabling page-load cron with define( 'DISABLE_WP_CRON', true ); in wp-config.php, then calling wp-cron.php from the system scheduler, with an example of every 15 minutes. Once cron runs on a schedule, you can monitor it: after the request succeeds, the same command pings a heartbeat URL. If the ping does not arrive, the monitor alerts.

Healthchecks.io's documentation explains the timing. Each check has a ping URL such as https://hc-ping.com/ followed by a unique ID, which the docs say to treat as a secret. With a simple schedule, a check becomes late once its period passes since the last ping, and down, triggering alerts, after the grace time also passes. With a 15-minute period and 5-minute grace, a missed run alerts about 20 minutes after the last successful ping. Appending /start before the job and /fail on error adds run time and explicit failure alerts.

On managed hosts that run cron for you, ask how it is scheduled and whether you can add a ping. A heartbeat proves the scheduler fired; it does not prove a renewal email arrived. Pair it with the acceptance test in our scheduler and mail guide.

Worked example: one membership site on free tiers

A course site on a managed host with an off-host backup script. On UptimeRobot Free: homepage HTTP, login keyword, course page keyword, checkout keyword and an uncached health URL keyword is 5 of 50 monitors. On Healthchecks.io Hobbyist: one cron heartbeat and one backup heartbeat is 2 of 20 jobs. Cash cost: $0.

The trade-offs: a 5-minute interval means an outage can run up to about 5 minutes before the first failed check, longer if you require two failures before alerting. Free tiers lean on email and chat alerts (Better Stack Free lists Slack and email; UptimeRobot Free has no SMS or voice credits), which are easy to miss at night. If the site takes enough sales during a launch that 10 minutes of failed checkout costs more than a paid plan, move the checkout and health URL monitors to a 60-second paid plan for launch weeks, and add an SMS or phone channel.

Alert checklist

  • Send alerts to at least two people, and to a channel someone watches outside office hours.
  • Require two consecutive failures for page checks to cut noise from single network blips; keep heartbeats at one missed ping plus grace.
  • Name monitors by what breaks for members, such as Checkout form missing, not by URL.
  • Exclude the health URL and keyword pages from caching rules, or the check proves only that the cache works.
  • Never put a member's real password in a monitor. If you need a logged-in check, use a dedicated test account with no purchases and rotate its password.
  • Keep monitor ping URLs and API keys out of public repositories and screenshots.
  • After every migration or DNS change, confirm each monitor is checking the new host, not a cached old address.
  • Review monitors when the LMS template, checkout plugin or login URL changes; keyword checks fail when the wording changes.
  • Test the alert path quarterly by pausing a heartbeat and confirming the alert arrives.

Questions before you decide

Is a free monitor enough for a membership site?

For a small site, usually yes for coverage: UptimeRobot Free lists 50 monitors and Healthchecks.io Hobbyist 20 jobs. The limits are speed and alert channels: UptimeRobot Free checks every 5 minutes and excludes SMS and voice credits, and Healthchecks.io lists SMS and phone credits only on its Business plans.

Why not just monitor the homepage more often?

Because the homepage is often served from cache. It can stay up while logins, lessons and checkout fail. Check pages that bypass the cache and look for content only the working page shows.

How early should certificate expiry alerts fire?

Let's Encrypt certificates last 90 days and it recommends renewing at 60 days, so an alert at 21 days remaining means automatic renewal has already missed its normal window and gives you three weeks to fix it.

Sources & verification

Product details and prices can change. Check the linked provider before buying.

  1. UptimeRobot: pricing Accessed 29 Oct 2026
  2. Better Stack: pricing Accessed 29 Oct 2026
  3. Healthchecks.io: pricing Accessed 29 Oct 2026
  4. Healthchecks.io: documentation Accessed 29 Oct 2026
  5. DigitalOcean: Uptime overview Accessed 29 Oct 2026
  6. DigitalOcean: Uptime pricing Accessed 29 Oct 2026
  7. WordPress developer handbook: hooking WP-Cron into the system task scheduler Accessed 29 Oct 2026
  8. Let's Encrypt: FAQ Accessed 29 Oct 2026
  9. WP Engine: cache exclusions Accessed 29 Oct 2026

Sources link directly to providers. Product buttons may use separately labeled affiliate links. Read our disclosure.