🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Google Sheets + Telegram: SSL expiry alerts that stick

Lisa Granqvist Partner Workflow Automation Expert

SSL renewals never fail at a convenient time. One forgotten certificate turns into a broken checkout page, a “site not secure” warning, or a late-night scramble to figure out who owns the domain.

IT admins usually get blamed first. But agency owners managing client sites and ops leads keeping internal tools alive feel the same stress. This SSL expiry alerts automation gives you a simple system: one sheet as the source of truth, and timely alerts that actually get seen.

Below you’ll see how the workflow runs weekly, checks each domain’s certificate status, updates your Google Sheet, and sends the right warning through Telegram (plus email and optional push alerts).

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets + Telegram: SSL expiry alerts that stick

The Problem: SSL Certificates Expire Quietly (Until They Don’t)

If you manage more than a handful of domains, SSL monitoring becomes this annoying background task you never quite “finish.” A certificate gets renewed on one site, but the spreadsheet doesn’t get updated. Another site is owned by a former contractor, so nobody has access when it suddenly goes invalid. And because the warning signs are easy to miss, you find out from customers, teammates, or a monitoring tool that pings the wrong person. It’s not just downtime. It’s the mental load of constantly wondering what you’re forgetting.

The friction compounds. Here’s where it breaks down.

  • People keep domain lists in too many places, so “the real list” is always outdated.
  • Manual checks across 30 to 100 URLs eat up a couple hours, and it still isn’t consistent week to week.
  • Certificates can be “valid” but close to expiry, which means you don’t see the problem until it’s urgent.
  • Alerts go to email only, then get buried in newsletters and ticket noise.

The Solution: A Weekly SSL Check That Updates Sheets and Pings Telegram

This workflow turns Google Sheets into your SSL “command center,” then uses automated checks to keep it accurate. On a weekly schedule, n8n pulls your URL list from a Google Sheet and runs each domain through an SSL checking service (via HTTP request). It captures key details like expiry date and certificate status, then writes the latest results back into the same sheet. After that, the workflow routes each domain into the right notification path: urgent Telegram alerts and “invalid” emails when something is broken, warning emails when expiry is getting close (under about 30 days), and informational messages when everything looks healthy. You end up with fewer surprises and a clearer owner trail because the sheet stays updated automatically.

The workflow starts with a weekly trigger, reads your monitored domains from Sheets, then checks certificate status one by one. Once the sheet is updated, a routing step decides which message you receive (Telegram for urgent cases, Gmail for warnings and notices, and an optional ntfy push for info-level updates).

What You Get: Automation vs. Results

Example: What This Looks Like

Say you manage 40 domains across client sites and internal tools. Manually, even a quick SSL check plus a spreadsheet update is maybe 2 minutes per domain, so you’re looking at about 80 minutes every week (and it’s easy to skip when things get busy). With this workflow, you spend about 10 minutes adding or removing URLs in Google Sheets, then the weekly run checks everything in the background and sends Telegram alerts only when something needs attention. Same coverage, a lot less babysitting.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets to store and share your domain list.
  • Telegram to deliver urgent SSL alerts instantly.
  • Gmail for warning/notice emails to stakeholders.
  • SSL-Checker.io access (use their site/API endpoint you request).

Skill level: Beginner. You’ll connect accounts, paste your Google Sheet link, and confirm where alerts should go.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A weekly schedule kicks it off. n8n runs on a recurring timer (“Weekly Schedule Start”), so checks happen even when nobody remembers to do them.

Your Google Sheet provides the URL list. The workflow reads the domains from the “Retrieve URL List” step, so the sheet stays the single place you update when a site is added, removed, or handed off.

Each domain gets checked for certificate validity and expiry. An HTTP request hits SSL-Checker.io, then the workflow captures details and writes them back to the sheet (“Update SSL Sheet”). Simple, but it keeps your data honest.

Alerts route based on what’s found. If something is invalid, you get an urgent Telegram alert and an email. If expiry is getting close, warning and notice emails go out. When everything looks fine, you can still receive info-level messages (including an optional ntfy push) so you know checks are running.

You can easily modify who gets notified and when (for example, change the “under 30 days” warning threshold) based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Weekly Schedule Start Trigger

Set the weekly schedule that kicks off the SSL monitoring run.

  1. Add the Weekly Schedule Start node as your trigger.
  2. Set the schedule rule to run weekly with Weeks and Trigger At Day set to 1 and Trigger At Hour set to 8.
  3. Connect Weekly Schedule Start to Retrieve URL List.
If you need a different day/time, adjust Trigger At Day and Trigger At Hour to fit your timezone and maintenance window.

Step 2: Connect Google Sheets

Pull the URL list and store SSL status results in Google Sheets.

  1. Open Retrieve URL List and select the document Monitor SSL and sheet Sheet1.
  2. Set Output Formatting in Retrieve URL List to keep dates as FORMATTED_STRING and general values as UNFORMATTED_VALUE.
  3. Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve URL List.
  4. Open Update SSL Sheet and set Operation to appendOrUpdate.
  5. Set Document to Monitor SSL and Sheet to certificate-data in Update SSL Sheet.
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials in Update SSL Sheet.
⚠️ Common Pitfall: Ensure your URL list sheet has a column named URL so the SSL request expression can read {{$json["URL"]}} correctly.

Step 3: Set Up SSL Status Request

Call the SSL checker API for each URL and normalize the request URL.

  1. Add SSL Status Request after Retrieve URL List.
  2. Set URL to =https://ssl-checker.io/api/v1/check/{{ $json["URL"].replace(/^https?:\/\//, "").replace(/\/$/, "") }}.
  3. Confirm that SSL Status Request outputs to both Update SSL Sheet and Route by Certificate in parallel.
The URL expression strips protocol and trailing slashes to match the SSL Checker API format; keep this as-is unless your API endpoint changes.

Step 4: Configure Certificate Routing Logic

Route SSL results by validity and days remaining.

  1. Open Route by Certificate and configure outputs for invalid, warning, notice, and info.
  2. Set the invalid condition to {{ $json.result.cert_valid }} equals false.
  3. Set the warning condition to {{ $json.result.days_left }} less than or equal to 30.
  4. Set the notice condition to {{ $json.result.days_left }} less than or equal to 60.
  5. Use the fallback output renamed to info for everything else.
⚠️ Common Pitfall: Make sure the SSL API response contains result.days_left and result.cert_valid; otherwise, the switch rules will not match.

Step 5: Configure Output Notifications

Send alerts based on the routing logic and ensure parallel branches are set correctly.

  1. Route by Certificate outputs to both Dispatch Invalid Email and Telegram Urgent Alert in parallel for invalid certificates.
  2. In Dispatch Invalid Email, set Subject to =URGENT: SSL-certificate invalid, action required! - {{ $json.result.days_left }} Days Left - {{ $json.result.host }} and Message to =WARNING: SSL Expiry within one month - {{ $json.result.days_left }} Days Left - {{ $json.result.host }}.
  3. Credential Required: Connect your gmailOAuth2 credentials in Dispatch Invalid Email.
  4. In Telegram Urgent Alert, set Text to =URGENT: SSL-certificate invalid, action required! - {{ $json.result.days_left }} Days Left - {{ $json.result.host }}.
  5. Credential Required: Connect your telegramApi credentials in Telegram Urgent Alert.
  6. For warning certificates, configure Notify Warning Email with Subject and Message as =WARNING: SSL Expiry within one month - {{ $json.result.days_left }} Days Left - {{ $json.result.host }}.
  7. Credential Required: Connect your gmailOAuth2 credentials in Notify Warning Email.
  8. For notice certificates, configure Send Notice Email with Subject =INFO: SSL Expiry - {{ $json.result.days_left }} Days Left - {{ $json.result.host }} and Message =SSL Expiry - {{ $json.result.days_left }} Days Left - {{ $json.result.host }}.
  9. Credential Required: Connect your gmailOAuth2 credentials in Send Notice Email.
  10. For info certificates, send both Send Info Email and Push Info Alert in parallel.
  11. In Send Info Email, set Subject and Message to =INFO: SSL Expiry check completed, took no further actions - {{ $json.result.days_left }} Days Left - {{ $json.result.host }}.
  12. Credential Required: Connect your gmailOAuth2 credentials in Send Info Email.
  13. In Push Info Alert, set Topic to n8n, Tags to =ssl,n8n,angie, Title to =INFO: SSL Expiry check completed for {{ $json.result.host }}., and Message to =INFO: SSL Expiry check completed, took no further actions - {{ $json.result.days_left }} Days Left - {{ $json.result.host }}..
Keep the Flowpast Branding sticky note for documentation only; it does not affect execution and can be moved or removed without impact.

Step 6: Test and Activate Your Workflow

Run a manual test to confirm data flows and notifications fire as expected.

  1. Click Execute Workflow to run Weekly Schedule Start manually.
  2. Verify Retrieve URL List pulls rows from Sheet1 and SSL Status Request returns certificate data.
  3. Confirm Update SSL Sheet writes to certificate-data and the correct route is selected in Route by Certificate.
  4. Check that emails, Telegram, and Ntfy messages are sent according to the SSL status.
  5. When satisfied, toggle the workflow to Active for weekly automation.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets credentials can expire or lack access to the right file. If updates stop, check the n8n Google Sheets connection and confirm the sheet is shared to the connected Google account.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Telegram bot permissions trip people up. If “Telegram Urgent Alert” isn’t delivering, confirm the bot is in the target chat and that you’re using the correct chat ID in n8n.

Frequently Asked Questions

How long does it take to set up this SSL expiry alerts automation?

About 30 minutes if your Google and Telegram accounts are ready.

Do I need coding skills to automate SSL expiry alerts?

No. You’ll mainly connect accounts and paste in your Google Sheet details. The logic is already built into the workflow.

Is n8n free to use for this SSL expiry alerts workflow?

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 any SSL checking service costs if your usage is high.

Where can I host n8n to run this automation?

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.

Can I customize this SSL expiry alerts workflow for Slack instead of Telegram?

Yes, but you’ll swap the notification step. Replace the “Telegram Urgent Alert” action with a Slack message node, and keep the same routing logic in “Route by Certificate.” Common customizations include changing the “under 30 days” threshold, adding different recipients per domain group, and sending a weekly summary message after the sheet update.

Why is my Telegram connection failing in this workflow?

Usually it’s a wrong chat ID or a bot that hasn’t been added to the destination chat. Regenerate or re-check your bot token, then confirm the “Telegram Urgent Alert” node is pointing to the correct chat (group vs. private chat matters). If it works once and then stops, check for revoked bot access or changed group permissions.

How many domains can this SSL expiry alerts automation handle?

Dozens to hundreds is typical.

Is this SSL expiry alerts automation better than using Zapier or Make?

Often, yes, especially if you want control and don’t want per-step pricing to get weird as you scale. n8n makes it easier to route domains into different paths (invalid vs. expiring vs. OK) without turning your scenario into a tangled set of separate automations. You also get the self-hosting option, which can be a big deal for internal security teams. Zapier or Make can still be fine for very simple “one check, one alert” setups. If you want help choosing, Talk to an automation expert.

Once this is running, SSL renewals stop being a guessing game. The workflow handles the repetitive checking, and you get the right alert at the right time.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal