Never miss a domain or certificate renewal deadline
Every Monday, check your domain and certificate renewal dates, refresh the tracker, and get a Slack digest of everything due in the next 45 days.
Every Monday at 8:00am, run a domain and certificate renewal check so nothing in our portfolio silently expires. Build this as a deterministic code workflow: every step is a fixed lookup, a date subtraction, a threshold comparison, and a formatted output, so no reasoning or judgement is required at run time.
Start by reading the watchlist from Google Sheets with Get Values. The tab has one row per domain, with the domain name in the first column, followed by the columns this workflow maintains: domain expiry date, days until domain expiry, certificate expiry date, days until certificate expiry, and last checked. Skip the header row and ignore any row where the domain cell is empty.
For each domain on the list, call SecurityTrails Get WHOIS and read the registration expiry date, then call SecurityTrails Get Domain SSL Certificates and read the not-after date on the certificate that is currently valid. That operation returns both current and historical certificates, so select the active one, meaning the certificate that covers today and has the latest not-after date, rather than an already expired record. Compare both dates against today in UTC and compute the whole number of days remaining for the domain registration and for the certificate.
Write the refreshed dates and day counts back to the same rows with Google Sheets Update Values, along with the last checked timestamp, so the tab doubles as a live renewal tracker rather than a static list. If a domain has private or redacted registration and no expiry date is published, or if no current certificate is found, write unknown into those cells, leave the day count blank, and carry on with the remaining domains instead of failing the whole run.
Then filter to everything expiring within 45 days, treating the domain registration and the certificate as separate items so a single domain can contribute two entries. Post one formatted digest to Slack with Send a Message, sorted soonest first. Each line shows the domain, what is expiring (domain registration or certificate), the expiry date, and the number of days left. Send the whole digest as a single message, not one message per domain. If nothing falls inside the 45 day window, still post the message and state explicitly that all domains and certificates are clear for the next 45 days, so a quiet week is never confused with a broken workflow. Add a short footer listing any domains where an expiry date could not be determined, so a missing answer stays visible instead of looking like a pass.
Finally, for anything at 14 days or less, create a Jira ticket with Create Issue so the urgent ones land in a sprint instead of a chat scroll. Title each ticket with the domain and the deadline, for example "example.com certificate expires 2026-08-20 (9 days left)", and put the expiry date, the days remaining, and which item is expiring in the description. Create one ticket per expiring item, and mark those items in the Slack digest so it is obvious which ones were escalated.
Example output
What does this prompt do?
- Reads your watchlist of domains from a Google Sheets tab, then looks up when each domain registration and its security certificate is due to renew.
- Writes the refreshed dates and countdowns back into the same sheet, so the tab stays a live renewal tracker instead of a list somebody has to update by hand.
- Posts one Slack digest every Monday with everything due in the next 45 days, sorted soonest first, and says so clearly when nothing needs attention.
- Opens a Jira ticket for anything due in 14 days or less, so urgent renewals get an owner in a sprint instead of scrolling past in chat.
What do I need to use this?
- A SecurityTrails account, used to look up domain registration and security certificate details.
- A Google Sheets spreadsheet with a tab listing the domains you want to watch, one per row.
- A Slack workspace, plus the channel where the weekly digest should be posted.
- A Jira project where urgent renewal tickets can be created.
How can I customize it?
- Change the timing. It runs Monday at 8am by default, but any schedule works, whether that is daily, twice a week, or the first of every month.
- Move the thresholds. The 45 day digest window and the 14 day ticket cutoff are both easy to shift if your renewal process needs more lead time.
- Pick where alerts land. Send the digest to a different Slack channel or a direct message, and point the urgent tickets at whichever Jira project your team actually works from.
FAQs
What happens if a domain has private registration and no expiry date is published?
Can I change the 45 day and 14 day thresholds?
Will it post to Slack even when nothing is expiring?
Does it cover both the domain name and the security certificate?
Do I have to keep the spreadsheet up to date by hand?
Related templates
When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.
When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.
Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.
Stop finding out about renewals from an outage.
Set this up once and every domain and certificate deadline comes to you with weeks to spare, in Slack and in a sprint.