Skip to content

Every 5 minutes

Get website-down alerts in Slack and by email

If any of your sites goes down, your team hears in Slack and you get an email, and again when it's back.

Runs
Every 5 minutes
Apps
Gmail, Slack
AI
Not needed
Access
Slack chat:write; Gmail gmail.send

Send this to your assistant

Create a ClickRuntime automation: every 5 minutes, check example.com and shop.example.com. When either goes down or recovers, post to #ops and email me.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A small business website that goes down at night costs sales and credibility, and the owner often hears about it from a customer. A hosting hiccup, an expired certificate or a broken deploy can take a site offline for hours, and without monitoring nobody knows until the next person tries to visit. Paid monitoring services work, but each site adds another subscription.

Every 5 minutes each of your URLs is requested and the result is compared with the last known status. Only when a site changes from up to down, or back again, is a message sent to Slack and an email to you, so you hear about real changes and not a constant stream of reports.

Freelancers who look after client sites, shop owners and small agencies can use it to cover many domains with one setup.

What you get out of it

  • Outages are noticed in minutes

    A downtime message reaching you five minutes after a problem starts is far better than learning about it from a customer who could not place an order. Every hour of downtime you avoid is sales and goodwill you keep.

  • You hear about recovery too

    The status change message when a site comes back tells you the incident has ended and roughly how long it lasted, which helps when reporting to a client. Clients appreciate precise numbers when you explain what happened.

  • Alerts happen only on changes

    Comparing with the previous status means one alert per outage, not twelve an hour, so the messages keep their meaning and are read when they arrive. Alert fatigue is the main reason monitoring gets ignored in practice.

  • One setup covers many sites

    A list of URLs is checked in the same run, which suits an agency that looks after a dozen client sites without paying for a monitor per domain. That keeps the cost of monitoring at zero for each additional site.

  • Two channels reduce the chance of a miss

    Slack catches the team during the day and email reaches the owner on a phone at night, so a single muted app is not a single point of failure. Redundancy is cheap here and matters when it is two in the morning.

How it works

What happens, step by step

  1. Every 5 minutes, ClickRuntime visits each website on your list and checks whether it responds.

  2. It compares the result with the last check, so you only hear when something changes.

  3. When a site goes down or comes back up, a message appears in your #ops Slack channel and the same alert is sent to you from Gmail.

Before it runs live

  • Connect Google through your own Google app (a one-time, 10-minute setup), so it works with your own Gmail
  • Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)

What you get

RunsEvery 5 minutes
Get website-down alerts in Slack and by emailtoday, 9:00Succeeded
Slack · #ops🔴 https://shop.example.com is DOWN

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Run it at a different time, more or less often, or only on weekdays
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Google Sheets
  • Combine it with other Gmail and Slack steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
website_down_alerts_by_email_and_slack.pyexample
import base64
from email.message import EmailMessage
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, state, notify

SITES = ["https://example.com", "https://shop.example.com"]
ME = "me@example.com"

@on_trigger
def run(event):
    status = state.get("status") or {}
    for url in SITES:
        try:
            up = http.get(url, timeout=10).status_code < 500
        except Exception:
            up = False
        if url in status and status[url] != up:
            text = f"{'✅' if up else '🔴'} {url} is {'back up' if up else 'DOWN'}"
            notify.slack(text, channel="#ops")
            msg = EmailMessage()
            msg["To"], msg["Subject"] = ME, text
            msg.set_content(text)
            gmail = build("gmail", "v1", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
            gmail.users().messages().send(userId="me", body={"raw": base64.urlsafe_b64encode(msg.as_bytes()).decode()}).execute()
        status[url] = up
    state.set("status", status)
    return status

FAQ

Common questions

What counts as the site being down?
A request that fails to connect, times out or returns an error status such as 500. You can also require a particular word to appear on the page, which catches a site that loads but shows an error.
How quickly will I hear about an outage?
Within about five minutes of it starting, because that is how often each site is checked. A very short blip between two checks might not be seen, which is the normal tradeoff of interval monitoring.
Can it check pages behind a login?
It checks public URLs, so a login page loads but private pages need credentials. For an application, most people monitor a public health or status page that confirms the service is working. Add a health check page for deeper coverage.
What permissions does it need?
Slack chat:write; Gmail gmail.send. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it runs (every 5 minutes). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Get website-down alerts in Slack and by email” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.