SSL monitoring for WordPress agencies
Why 50 client WP sites means 50 independent SSL failure modes — and how to monitor every certificate, chain, and SAN with a renewal calendar that catches the silent breaks before customers do.
The phone call usually goes like this. A WordPress agency owner — Sam — gets a Slack from a client at 9:47am on a Tuesday: "the site is showing a security warning, customers can't check out". By the time Sam opens the laptop, the agency's reputation is already a half-step lower than it was at 9am. Sam refreshes the homepage, sees the red Chrome warning, opens the cert details panel: "expired 3 hours ago".
This wasn't supposed to happen. WP Engine auto-renews Let's Encrypt. Cloudflare's universal SSL auto-renews. The cron job that triggers the renewal has been running for two years without intervention. And yet — at some point in the last 90 days, something silently broke. The certificate didn't renew. Nothing alerted anyone. The site went dark at the worst possible moment.
If you run a WordPress agency with more than a handful of clients, this story is not hypothetical. It is statistical. With 50 client sites and one certificate per site, you have 50 independent points of failure renewing on independent schedules across independent automations. The expected number of silent failures per year is non-zero, and the expected cost of each one — a damaged client relationship, a frantic 2am scramble, a refund — is enormous compared to the cost of proactive monitoring.
Why SSL monitoring matters specifically for WordPress agencies
WordPress, more than almost any other CMS, leans on a layered hosting stack — managed hosts (WP Engine, Kinsta, Pressable, Cloudways, SiteGround), an edge layer (Cloudflare almost universally), and sometimes a separate CDN. Each layer has its own TLS termination. A renewal failure at the origin doesn't always show up at the edge — and vice versa. Customers see whatever the outermost layer serves. You see whatever you're monitoring.
Then there's the long tail of plugins and integrations. WooCommerce stores have Stripe webhooks pointing at the site over HTTPS. Membership plugins talk to authentication providers. Mailing list integrations make signed webhook calls. Every one of these is a TLS handshake that fails if your certificate is expired or your chain is broken. Often the merchant doesn't see it for a day because the public homepage still serves a cached page from the CDN.
Common SSL failure scenarios
The ones that actually bite WordPress agencies, in rough order of frequency:
- Let's Encrypt auto-renew silently fails. Most common cause: a security plugin started blocking
/.well-known/acme-challenge, or the site moved to a new domain and the renewal cron is still trying the old one. - Manual cert expires. The original installation was paid (DigiCert, Sectigo) and the renewal email went to a developer who left the agency 18 months ago.
- Intermediate cert issue. The leaf cert is fine but the chain is incomplete, so Android phones can't verify it. Desktop browsers are fine. The bug "doesn't repro" until checkout from a mobile device.
- SAN coverage gap. The cert covers
example.combut notwww.example.com, or vice versa, and the redirect chain breaks for half your visitors. - Multisite primary domain. Network primary domain certs expire even though the mapped domain certs are healthy.
What to actually monitor
Naive SSL monitoring checks one thing: is the cert expired. That catches maybe half the problems. A proper monitor for an agency workflow watches all of the following:
- Issuer. Make sure the CA hasn't changed unexpectedly. A working cert from a new issuer is fine; a failure to issue from your usual one is your real signal.
- Expiry. Both the leaf and the intermediates. Browsers pin intermediates too.
- Chain. Does the cert validate through a complete trust chain?
openssl s_client -showcertswill tell you. - SAN coverage. Does the cert cover every hostname your site responds on, including
www, the apex, and any subdomains? - Renewal attempts. For Let's Encrypt-driven hosts, has the renewal cron actually executed in the expected window?
Tools comparison
- UptimeRobot offers SSL monitoring as an add-on; it alerts on expiry but doesn't surface a calendar of upcoming expiries across your account.
- Oh Dear has solid SSL checking and is the closest direct competitor for site-owner monitoring; it's less geared toward agencies running white-label dashboards for clients.
- Everguardly's renewal calendar — what we're going to walk through next — is specifically a calendar across every client site, ordered by renewal date, with per-client filtering and bulk actions.
Setup walkthrough with Everguardly
- Bulk import your WordPress site URLs from CSV. The agency import wizard takes a list of domains and creates HTTPS monitors with SSL tracking turned on by default.
- Map sites to clients. This matters because alerts route per-client, so the agency's own inbox stays quiet and the client gets the message that matters to them.
- Set the reminder schedule. Defaults are 60/30/14/7/1 days before expiry; tighten if you have a manually-renewed cert with a registrar contact that takes time to reach.
- Add the renewal calendar to your dashboard. So it's the first screen you see at 9am Monday.
The renewal calendar specifically maps to the WordPress workflow because it surfaces, in one view, the certificates that are renewing this week, this month, and this quarter — across every client. If three clients are on the same WP Engine instance and that instance had a Let's Encrypt outage, you see three entries in the calendar with the same date, same hosting note, and you can act on all three with one bulk action.
If you manage more than five WordPress client sites, the cost of being wrong about an SSL renewal — even one — is dramatically higher than the cost of monitoring all of them properly. The free SSL checker can spot-check a single domain right now. To track every site you manage in one place, start a 14-day free trial and the renewal calendar will populate within the hour.
Try Everguardly
14-day free trial. No card required. Cancel any time.