The moment it happens
Send error and status alerts to Slack and Telegram
Any failure or status change sent to your trigger link reaches both Slack and Telegram, with repeats filtered out.
- Runs
- The moment it happens
- Apps
- Slack, Telegram
- AI
- Not needed
- Access
- Slack chat:write; Telegram bot token
Send this to your assistant
Create a ClickRuntime automation: give me a trigger link. Whenever something posts an error or status change to it, alert me in Slack and Telegram.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A solo developer runs a handful of client projects and side products, each with its own cron jobs, backups and health checks. During the day she watches Slack, but evenings and weekends she only has Telegram on her phone. Alerts sent only to Slack sit unread until Monday, and a failed backup goes unnoticed for days.
With this automation every alert is sent to one link and reaches both Slack and Telegram, with repeated alerts filtered out, so she hears about problems wherever she is without being buried by the same message.
What you get out of it
Alerts reach you wherever you are
Slack covers working hours and Telegram covers your phone in the evening. The same alert arrives in both. A failure at the weekend is not lost in a channel you are not reading.
One link for all your alerts
Backup scripts, cron jobs, health checks and monitoring tools all send to the same place. Setting up a new project is quick. You manage alert delivery once.
No flood of duplicates
When a job fails repeatedly, the alert is sent once rather than every few minutes. Your phone does not buzz all night for the same problem. Real new alerts stand out.
Status changes, not just errors
Recoveries and other status changes can be sent too, so you know when something fixed itself. You stop checking manually after an incident. The alert history tells the whole story.
Simple to hand over
If someone else covers for you, add them to the Slack channel or Telegram group. They receive the same alerts with no reconfiguration of your jobs. Holiday cover is straightforward.
How it works
What happens, step by step
When a job, server or tool has an error or status change, it sends a short message to your ClickRuntime trigger link.
It checks whether the same alert was already sent in the last hour and skips repeats.
The alert is posted to your Slack channel.
The same alert is sent to your Telegram chat.
Before it runs live
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
- Connect Telegram
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
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
- Act only on the items that match your own rules, and skip the rest
- 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 Slack and Telegram steps into one automation
Under the hood
The code that runs this automation
import hashlib, time
from slack_sdk import WebClient
from clickruntime import on_event, credentials, http, state
TELEGRAM_CHAT_ID = "your-telegram-chat-id"
SLACK_CHANNEL = "#alerts"
@on_event
def handle(event):
data = event.json if isinstance(event.json, dict) else {"message": event.body}
service, status = data.get("service", "unknown"), data.get("status", "error")
message = str(data.get("message", ""))[:1500]
key = hashlib.sha1(f"{service}|{status}|{message}".encode()).hexdigest()
recent = {k: t for k, t in (state.get("recent") or {}).items() if time.time() - t < 3600}
if key in recent:
return {"skipped": "repeat"}
text = f"[{status.upper()}] {service}: {message}"
WebClient(token=credentials.connection("slack", "work")).chat_postMessage(channel=SLACK_CHANNEL, text=text)
http.post(f"https://api.telegram.org/bot{credentials.secret('TELEGRAM_BOT_TOKEN')}/sendMessage",
json={"chat_id": TELEGRAM_CHAT_ID, "text": text})
recent[key] = time.time()
state.set("recent", recent)
return {"sent": service, "status": status}FAQ
Common questions
What do my jobs need to send?
How long are repeats filtered?
Can I send recoveries as well as errors?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Post GitHub pushes, pull requests and issues to Slack and Telegram
Activity from all your GitHub repositories appears in one Slack channel and on your Telegram, as it happens.
See how it worksAnnounce subscriptions, cancellations and failed payments in Slack and Telegram
Every new subscription, cancellation and failed payment is posted to your revenue channel in Slack and sent to you on Telegram.
See how it worksAnswer Telegram bot messages and escalate urgent ones to Slack
Every message to your Telegram bot gets an instant reply, and complaints or urgent requests are posted to your Slack support channel.
See how it worksKeep exploring
Set up “Send error and status alerts to Slack and Telegram” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.