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.

Deterministic Code
SecurityTrailsGoogle SheetsSlackJiraOperationsEngineeringNotifications & AlertsDaily Digests
PromptCreate

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

Renewal check | Monday 9 August Expiring within 45 days, soonest first: 1. shop.example.com | certificate | 18 Aug 2026 | 9 days left (Jira OPS-412) 2. example.com | domain registration | 23 Aug 2026 | 14 days left (Jira OPS-413) 3. example.io | certificate | 2 Sep 2026 | 24 days left 4. status.example.com | certificate | 14 Sep 2026 | 36 days left 2 items at 14 days or less were escalated to Jira. No published expiry date for: legacy.example.net

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?
Some registrars redact registration details, so no renewal date comes back. When that happens the workflow writes "unknown" into the sheet for that domain, leaves the countdown blank, and keeps going with the rest of your list. Those domains are also listed at the bottom of the Slack digest, so you know to check them manually rather than assuming they are fine.
Can I change the 45 day and 14 day thresholds?
Yes. Both are just numbers you can adjust. Forty five days gives you a comfortable heads up for the digest and 14 days is the point where something becomes urgent enough to deserve a ticket, but plenty of teams prefer 60 and 30, or a tighter 30 and 7. Change one without touching the other if you like.
Will it post to Slack even when nothing is expiring?
Yes, and that is deliberate. It posts every Monday and says explicitly when everything is clear for the next 45 days. If it only spoke up when something was wrong, you could never tell the difference between a calm week and a check that quietly stopped running.
Does it cover both the domain name and the security certificate?
Both, in a single digest. They are tracked as separate items, so one domain can show up twice if the registration and the certificate are both coming due. Each line tells you which of the two is expiring.
Do I have to keep the spreadsheet up to date by hand?
You only maintain the list of domains you care about. The renewal dates, the days remaining, and the last checked timestamp are all written back into the tab every time it runs, so the sheet stays current on its own and works as a shared tracker anyone on the team can open.

Related templates

Auto-fix your calendar when a flight slips, and flag what's at risk

When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.

Google Calendar
AviationStack
Slack
Agentic Task
Build a credential rotation checklist when someone leaves

When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.

1Password
Rippling
Slack Bot
+1
Agentic Task
Trace phishing emails to the sending IP and report abuse

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.

AbuseIPDB
Gmail
Slack
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task
Turn procurement portal tenders into CRM deals each morning

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.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Draft polite follow-ups for emails that never got a reply

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.

Aurinko
Google Sheets
Slack Bot
Agentic Task

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.