{"id":6195,"date":"2026-08-20T09:18:15","date_gmt":"2026-08-20T06:18:15","guid":{"rendered":"https:\/\/www.scalahosting.com\/kb\/?p=6195"},"modified":"2026-08-20T09:18:16","modified_gmt":"2026-08-20T06:18:16","slug":"check-ssl-certificate-expiration-spanel","status":"publish","type":"post","link":"https:\/\/www.scalahosting.com\/kb\/check-ssl-certificate-expiration-spanel\/","title":{"rendered":"How to Monitor SSL Certificate Expiration in SPanel"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">SPanel already watches the SSL certificates it manages and sends an expiry warning through the <strong>Notifications Manager<\/strong>, so there is no on\/off button to find. Your job is to know where certificate status lives &#8211; the &#8216;<em>Expires At<\/em>&#8216; date on the SSL Certificates page and the SSL Status column on the Website Monitoring page &#8211; and to confirm the alert can reach you.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>One caveat up front<\/strong>: \u0422his warning fires close to expiry [VERIFY] exact SSL-expiry warning window (~72h), so treat it as a safety net, not a 30-day planner.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Who this is for<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is for the owner of a small or medium site who never wants a visitor to hit a red &#8220;your connection is not private&#8221; warning. If you run one site or a handful of domains on a managed VPS and would rather not track renewal dates in a spreadsheet, this shows you where SPanel surfaces that information and how to make sure its alert reaches you.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What problem this solves<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">An expired certificate is invisible until it is catastrophic. Nothing looks wrong, then on the expiry date every browser starts blocking the site and customers assume you have been hacked. The usual fix is tracking renewal dates by hand &#8211; exactly the chore people forget. SPanel removes the need to remember by checking the certificates it manages and alerting you.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How SPanel solves this<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The expiry check runs automatically in the back-end. There is no toggle to switch on and nothing to configure. What you do is confirm where status is shown and make sure the alert reaches you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Open <strong>Tools &gt; SSL Certificates<\/strong>. This page lists each domain&#8217;s certificate, its <em>Issuer<\/em>, and an <em>Expires At<\/em> date, so you can read the renewal deadline for every managed certificate at a glance.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-ssl-certificates-1024x640.webp\" alt=\"How to Monitor SSL Certificate Expiration in SPanel, How SPanel solves this\" class=\"wp-image-6196\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-ssl-certificates-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-ssl-certificates-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-ssl-certificates-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-ssl-certificates.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For a second view, the <strong>Website Monitoring<\/strong> page includes an SSL Status column, so certificate health sits next to whether the site is responding.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-monitoring-ssl-column-1024x640.webp\" alt=\"How to Monitor SSL Certificate Expiration in SPanel, How SPanel solves this 2\" class=\"wp-image-6197\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-monitoring-ssl-column-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-monitoring-ssl-column-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-monitoring-ssl-column-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-monitoring-ssl-column.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">When a certificate nears expiry, SPanel raises the warning through the <strong>Notifications Manager<\/strong>, the same place your other server alerts arrive. The one thing SPanel cannot do is guarantee you read it, so make sure that channel points at an address you check.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why this is different in SPanel<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Two things stand out.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First, SSL-expiry alerting is built in and delivered through the Notifications Manager alongside your other server alerts &#8211; no third-party monitor, no cron job curling your own endpoint.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Second, expiry dates are visible per domain on the SSL Certificates page, so a glance at the &#8216;Expires At&#8217; column tells you where every managed certificate stands without opening a terminal.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Before you start<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Access your <strong>SPanel user account<\/strong> (the standard user UI, not root or WHM).<\/li>\n\n\n\n<li>Your <strong>domain list<\/strong> in mind, so you can scan the &#8216;Expires At&#8217; column for each.<\/li>\n\n\n\n<li>The <strong>Notifications Manager<\/strong> pointed at a mailbox you actually monitor.<\/li>\n\n\n\n<li>Nothing here is destructive &#8211; you are just reading statuses, not reissuing certificates.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Step-by-step<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Log in to SPanel with your user account and open <strong>Tools > SSL Certificates<\/strong>. You should see a row for each domain with its Issuer and an &#8216;Expires At&#8217; date.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-ssl-certificates-1024x640.webp\" alt=\"How to Monitor SSL Certificate Expiration in SPanel, How SPanel solves this\" class=\"wp-image-6196\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-ssl-certificates-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-ssl-certificates-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-ssl-certificates-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-ssl-certificates.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Read the &#8216;Expires At&#8217; column. Any date inside the next couple of weeks is worth a note; if a certificate auto-renews, the date usually rolls forward before then.<\/li>\n\n\n\n<li>Open the Website Monitoring page and find the SSL Status column, which shows certificate health beside the site&#8217;s response status.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-monitoring-ssl-column-1024x640.webp\" alt=\"How to Monitor SSL Certificate Expiration in SPanel, How SPanel solves this 2\" class=\"wp-image-6197\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-monitoring-ssl-column-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-monitoring-ssl-column-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-monitoring-ssl-column-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-monitoring-ssl-column.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Open the Notifications Manager and confirm the address on file is one you read daily &#8211; [VERIFY UI LABEL] user-facing Notifications Manager channel for SSL alerts. A <strong>stale address<\/strong> is the most common reason an alert is &#8220;missed.&#8221;<\/li>\n\n\n\n<li>There is nothing to save and no switch to flip. Once the address is correct, the automatic check handles the rest for you.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What happens behind the scenes<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">SPanel periodically inspects the certificates it manages and compares each expiry date against the current time. When one is close enough, the system queues a notification and hands it to the Notifications Manager. Because the check is server-side and continuous, you do not schedule it or keep it running &#8211; the benefit is one fewer recurring task and a warning that arrives on its own.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Limitations and edge cases<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The warning is a late safety net.<\/strong> It fires within roughly 72 hours of expiry [VERIFY] exact SSL-expiry warning window (~72h) &#8211; not a 30-day planner. For long lead time on a manually managed certificate, set your own reminder from the &#8216;Expires At&#8217; date.<\/li>\n\n\n\n<li><strong>Auto-renewing Let&#8217;s Encrypt certificates usually renew first.<\/strong> These renew before this warning would fire, so most sites rarely see the alert. Treat its silence as healthy, not as proof the check is off.<\/li>\n\n\n\n<li><strong>It covers certificates SPanel manages for your domains.<\/strong> A certificate managed outside SPanel is not part of this check, so track those yourself.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Troubleshooting<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-regular green-rows\"><table class=\"has-fixed-layout\"><tbody><tr><td>Symptom<\/td><td>Likely cause<\/td><td>What to do<\/td><\/tr><tr><td>No expiry alert ever arrives<\/td><td>Notifications Manager address is wrong or unmonitored<\/td><td>Confirm the address and check spam; the alert only fires near expiry<\/td><\/tr><tr><td>&#8216;Expires At&#8217; date looks stale<\/td><td>Auto-renewal has not run yet, or certificate is externally managed<\/td><td>Re-check after the renewal window; track external certificates separately<\/td><\/tr><tr><td>SSL Status column shows a problem<\/td><td>Certificate expired or was not issued for that domain<\/td><td>Open Tools > SSL Certificates and review that domain&#8217;s row<\/td><\/tr><tr><td>Certificate not listed at all<\/td><td>It is not managed by SPanel for that domain<\/td><td>Manage it in SPanel or monitor it with your own reminder<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>When to use this \/ when not to use this<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-regular green-rows\"><table class=\"has-fixed-layout\"><tbody><tr><td>Use this when<\/td><td>Skip or use something else when<\/td><\/tr><tr><td>You want a built-in last-line warning before a certificate lapses<\/td><td>You need 30-day-ahead renewal planning<\/td><\/tr><tr><td>Your certificates are managed by SPanel<\/td><td>The certificate is managed outside SPanel<\/td><\/tr><tr><td>You want certificate status beside uptime in one place<\/td><td>You require a custom alert window or escalation policy<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>FAQ<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Is there a button to turn SSL expiry monitoring on?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. The check runs automatically for the certificates under SPanel management. You confirm where status is shown and that the Notifications Manager can reach you, rather than enabling anything.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>How much warning will I get before a certificate expires?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> The warning fires close to expiry, within roughly 72 hours [VERIFY] exact SSL-expiry warning window (~72h). Use the &#8216;Expires At&#8217; date if you want more lead time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Where do I see when a certificate expires?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> On the SSL Certificates page under <strong>Tools > SSL Certificates<\/strong>, in the &#8216;Expires At&#8217; column. Each managed domain shows its Issuer and expiry date there.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Will I get an alert if my Let&#8217;s Encrypt certificate auto-renews?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Usually not, because it renews before this warning would fire. Silence in that case means the renewal worked.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Does this cover certificates I installed outside SPanel?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. The check covers certificates SPanel manages for your domains. Anything managed elsewhere needs your own tracking.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>How does the alert reach me?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Through the Notifications Manager, the same channel your other server alerts use. Make sure the address on file is one you read regularly.<\/p>\n\n\n\n<script type=\"application\/ld+json\">\n    {\n      \"@context\": \"https:\/\/schema.org\",\n      \"@type\": \"FAQPage\",\n      \"mainEntity\": [{\n        \"@type\": \"Question\",\n        \"name\": \"Is there a button to turn SSL expiry monitoring on?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. The check runs automatically for the certificates under SPanel management. You confirm where status is shown and that the Notifications Manager can reach you, rather than enabling anything.\"\n        }\n      }, {\n        \"@type\": \"Question\",\n        \"name\": \"How much warning will I get before a certificate expires?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"The warning fires close to expiry, within roughly 72 hours [VERIFY] exact SSL-expiry warning window (~72h). Use the 'Expires At' date if you want more lead time.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Where do I see when a certificate expires?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"On the SSL Certificates page under Tools > SSL Certificates, in the 'Expires At' column. Each managed domain shows its Issuer and expiry date there.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Will I get an alert if my Let's Encrypt certificate auto-renews?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Usually not, because it renews before this warning would fire. Silence in that case means the renewal worked.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Does this cover certificates I installed outside SPanel?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. The check covers certificates SPanel manages for your domains. Anything managed elsewhere needs your own tracking.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"How does the alert reach me?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Through the Notifications Manager, the same channel your other server alerts use. Make sure the address on file is one you read regularly.\"\n        }\n      }]\n    }\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>SPanel already watches the SSL certificates it manages and sends an expiry warning through the Notifications Manager, so there is no on\/off button to find. Your job is to know where certificate status lives &#8211; the &#8216;Expires At&#8216; date on the SSL Certificates page and the SSL Status column on the Website Monitoring page &#8211; [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_titles_title":"How to Monitor SSL Certificate Expiration in SPanel | ScalaHosting KB","_seopress_titles_desc":"Keep your websites secure by monitoring SSL certificate expiration in SPanel. Follow this step-by-step guide to check certificate validity and prevent service disruptions.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[66],"tags":[],"class_list":["post-6195","post","type-post","status-publish","format-standard","hentry","category-tutorials"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/comments?post=6195"}],"version-history":[{"count":2,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6195\/revisions"}],"predecessor-version":[{"id":6200,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6195\/revisions\/6200"}],"wp:attachment":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/media?parent=6195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/categories?post=6195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/tags?post=6195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}