Google Sheets + Gmail, SSL expiry alerts you trust
Your SSL certificate shouldn’t be something you remember because a customer can’t load your site. But manual tracking makes that exact scenario weirdly common: a calendar reminder gets missed, a renewal email goes to the wrong inbox, and suddenly you’re firefighting.
Marketing managers feel it when landing pages go dark. An ops lead feels it when checkout breaks. And if you run an agency, you already know the pain of “Which client domain was that?” This SSL expiry alerts automation gives you predictable reminders and a clean place to track what’s been checked.
You’ll set up an n8n workflow that pulls your domain list from Google Sheets, checks each certificate via SSL-Checker.io, logs the result back to the sheet, and sends Gmail alerts when anything is getting close to expiring.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Google Sheets + Gmail, SSL expiry alerts you trust
flowchart LR
subgraph sg0["Scheduled Weekly Kickoff Flow"]
direction LR
n0@{ icon: "mdi:database", form: "rounded", label: "Update Monitored Sheet", pos: "b", h: 48 }
n1@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Weekly Kickoff", pos: "b", h: 48 }
n2@{ icon: "mdi:database", form: "rounded", label: "Retrieve URL List", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Validate SSL Status"]
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Expiry Threshold Check", pos: "b", h: 48 }
n5@{ icon: "mdi:message-outline", form: "rounded", label: "Dispatch Alert Email", pos: "b", h: 48 }
n3 --> n0
n3 --> n4
n2 --> n3
n4 --> n5
n1 --> n2
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n1 trigger
class n4 decision
class n0,n2 database
class n3 api
classDef customIcon fill:none,stroke:none
class n3 customIcon
Why This Matters: SSL Expiry Sneaks Up on You
SSL renewals are one of those “boring until it’s urgent” tasks. You might have 5 domains today, then 20 by next quarter (microsites, sub-brands, client projects, regional domains). Keeping expirations in your head doesn’t scale, and inbox reminders are unreliable because they’re scattered across accounts and vendors. The worst part is the timing: certificates often expire quietly, then you hear about it from a teammate, a client, or a customer. That’s not a security posture. It’s a surprise party you didn’t want.
The friction compounds. Here’s where it breaks down.
- You don’t have one source of truth, so teams argue over which domains are still active.
- Manual checks take longer than you think, especially when you have to repeat them every week.
- Renewal emails get lost in shared inboxes, which means you find out after users do.
- When someone updates a certificate, the “status” doesn’t get logged anywhere, so you re-check the same sites again and again.
What You’ll Build: Google Sheets → SSL Check → Gmail Alerts
This workflow turns a simple Google Sheet into an automated SSL monitoring system. On a weekly schedule, n8n reads your list of website URLs from Google Sheets, then sends each URL to SSL-Checker.io using an HTTP request to retrieve certificate details like expiration date and validity. It records the latest status back into your sheet so you can see what was checked and when, without digging through logs. If a certificate is close to expiring (based on your threshold), the workflow sends a Gmail alert to the right inbox so someone can renew it calmly, not during an outage. You end up with both proactive warnings and an ongoing audit trail.
The workflow starts with a scheduled weekly kickoff. It pulls the URL list from Google Sheets, validates SSL status via an HTTP request, then splits paths: one branch updates your tracking sheet while the other checks your expiry threshold and emails you via Gmail if action is needed.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you monitor 30 domains. Manually checking SSL status often takes about 3 minutes per site once you include loading, copying dates, and updating your sheet, which is roughly 90 minutes every week. With this workflow, you spend about 5 minutes maintaining the Google Sheet, then let the run happen in the background (it may take a few minutes to process the list). If one domain is near expiry, you get a Gmail alert without doing any routine checking at all.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for your monitored domain list and log.
- Gmail to send certificate expiry notifications.
- SSL-Checker.io API key (get it from your SSL-Checker.io account dashboard).
Skill level: Beginner. You’ll connect accounts, map a few fields, and choose an expiry threshold.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A weekly schedule kicks things off. n8n runs automatically on the cadence you choose (weekly by default), so checks happen even when nobody remembers to do them.
Your URL list is pulled from Google Sheets. The workflow reads each row that contains a website URL. This is your control panel: add a new domain once, and it gets monitored going forward.
SSL-Checker.io validates the certificate. Using an HTTP request, n8n sends the URL to the SSL checker service and receives certificate details back. Those details are shaped into consistent fields so your spreadsheet stays readable.
Results get logged and alerts get sent. One path updates Google Sheets with the latest status (so you have history and visibility). Another path compares the expiration date to your threshold and sends a Gmail alert if it’s getting close.
You can easily modify the expiry threshold to match your renewal process based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set up the weekly schedule that kicks off the SSL checks.
- Add and open Scheduled Weekly Kickoff.
- In Rule, confirm the interval is weekly with Trigger At Day set to
1and Trigger At Hour set to8. - Ensure the workflow timezone matches your preference (currently set to
Asia/Kolkatain workflow settings).
Step 2: Connect Google Sheets
Connect the source sheet that lists URLs and the destination sheet that stores updated SSL expiry dates.
- Open Retrieve URL List and set Document ID to
https://docs.google.com/spreadsheets/d/[YOUR_ID]/edit?usp=sharing. - Set Sheet Name to
https://docs.google.com/spreadsheets/d/[YOUR_ID]/edit?gid=0#gid=0. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve URL List.
- Open Update Monitored Sheet and set Document ID to
https://docs.google.com/spreadsheets/d/[YOUR_ID]/edit?gid=0#gid=0. - Set Sheet Name to
gid=0(displayed asURLs to Check). - Confirm Operation is
updateand Matching Columns isURL. - Map columns as: URL →
={{ $json.result.host }}and KnownExpiryDate →={{ $json.result.valid_till }}. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Monitored Sheet.
Step 3: Set Up SSL Validation and Threshold Logic
Configure the HTTP call that checks SSL status and the condition that flags expiring certificates.
- Open Validate SSL Status and set URL to
=https://ssl-checker.io/api/v1/check/{{ $json["URL"].replace(/^https?:\/\//, "").replace(/\/$/, "") }}. - Open Expiry Threshold Check and set the condition to Number lte with Left Value
={{ $json.result.days_left }}and Right Value7. - Verify the execution flow: Retrieve URL List → Validate SSL Status.
- Confirm parallel branching: Validate SSL Status outputs to both Update Monitored Sheet and Expiry Threshold Check in parallel.
Step 4: Configure the Alert Email Output
Send an email alert when a certificate is within the threshold.
- Open Dispatch Alert Email and set Send To to
[YOUR_EMAIL]. - Set Subject to
=SSL Expiry - {{ $json.result.days_left }} Days Left - {{ $json.result.host }}. - Set Message to
=SSL Expiry - {{ $json.result.days_left }} Days Left - {{ $json.result.host }}. - Set Email Type to
text. - Credential Required: Connect your gmailOAuth2 credentials in Dispatch Alert Email.
Step 5: Test and Activate Your Workflow
Validate the end-to-end flow before enabling the weekly schedule.
- Click Execute Workflow to run a manual test from Scheduled Weekly Kickoff.
- Verify that Retrieve URL List pulls rows and Validate SSL Status returns SSL data.
- Confirm Update Monitored Sheet writes KnownExpiryDate updates and that Expiry Threshold Check routes expiring entries to Dispatch Alert Email.
- Check your inbox for the test alert email with the expected subject and message.
- Toggle the workflow to Active to enable weekly runs.
Troubleshooting Tips
- Google Sheets credentials can expire or need specific permissions. If things break, check the connected Google account and the n8n credential test first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- SSL-Checker.io and Gmail both have limits, and burst-checking a big list can trigger rate limits. If alerts suddenly stop, review the HTTP response from the SSL check and confirm Gmail sending is allowed for your account.
Quick Answers
About 30 minutes if your Google and SSL-Checker.io accounts are ready.
No. You’ll mostly connect accounts, paste in an API key, and map fields from the SSL check into your Google Sheet.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in SSL-Checker.io API usage based on how many domains you check each week.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and it’s pretty straightforward. You can swap the Google Sheets “Retrieve URL List” step for Airtable or a CSV import, then keep the same SSL validation call. Most people also adjust the “Expiry Threshold Check” logic to alert at 14 or 30 days instead of 7, because renewal policies vary. If you want team-wide visibility, replace the Gmail alert step with Slack or Microsoft Teams, or do both.
Usually it’s expired Google authorization or missing Gmail send permissions in your n8n credentials. Reconnect the Gmail credential, then test the node again. If you’re using a shared mailbox, confirm the account actually has access to send as that address. Also check your n8n execution log for a “quota” or “rate limit” message, which can happen if you trigger too many emails at once.
Plenty for most small teams: dozens to a few hundred domains weekly is common, as long as your SSL-Checker.io plan supports it.
For this use case, n8n is often the more comfortable fit because the HTTP request and branching logic are first-class, and you can self-host if you don’t want to pay per task. Zapier and Make can absolutely do it, but complex filtering and logging can get fiddly once you track more than a handful of domains. Another practical difference is visibility: n8n’s execution logs make it easier to answer “what happened last run?” when someone asks. If you’re already paying for Zapier and only want a basic reminder, keep it simple and use what you have. Talk to an automation expert if you want a quick recommendation for your stack.
Once this is running, SSL renewals stop being a last-minute scramble. You get a steady rhythm: clear checks, clear logs, and alerts that show up before anything breaks.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.