Every 5 minutes
Get a Telegram alert when a GitHub Actions run fails
Every 5 minutes ClickRuntime checks your repos for failed GitHub Actions runs and sends a Telegram message with the branch, commit and a link to the logs.
- Runs
- Every 5 minutes
- Apps
- GitHub, Telegram
- AI
- Not needed
- Access
- GitHub Actions read (actions:read) or OAuth repo; bot token
Send this to your assistant
Create a ClickRuntime automation: every 5 minutes, check my GitHub repos for failed Actions runs and send me a Telegram message with the workflow name, branch, who triggered it, the commit message and a link to the run.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
GitHub emails failed runs to the person who pushed, and those emails are easy to miss. When a deploy to main fails at the end of the day, the rest of the team often finds out from a customer.
This automation watches the repos you choose and sends a Telegram message as soon as the check sees a failed run, with enough detail to know whether it matters and a link straight to the logs.
It suits small dev teams and solo developers who already use Telegram for team chat and want CI failures in front of them without adding notifier steps to every workflow.
What you get out of it
Failures reach you quickly
A message on your phone within minutes, instead of an email you read the next morning.
No workflow edits
Works across all workflows in a repo without adding a notification step or storing a bot token in GitHub secrets.
Enough context to triage
Branch, author and commit message tell you if it is your change or a flaky test.
Each failure once
Runs already reported are remembered, so retries do not repeat old alerts.
Covers several repos
List all your repos in one place and get one stream of CI alerts.
How it works
What happens, step by step
Every 5 minutes, ClickRuntime asks GitHub for failed workflow runs in the repos you list.
It skips any run it has already reported.
For each new failure it sends a Telegram message with the workflow, branch, person who triggered it and the commit message.
A link in the message opens the run's logs on GitHub.
Before it runs live
- Connect GitHub
- Connect Telegram
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 Slack
- Combine it with other GitHub and Telegram steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, state
REPOS, CHAT_ID = ["acme/web", "acme/api"], "123456789"
def gh(method, path, **kw):
r = http.request(method, f"https://api.github.com{path}", headers={
"Authorization": f"Bearer {credentials.connection('github', 'work')}", "Accept": "application/vnd.github+json"}, **kw)
r.raise_for_status()
return r.json() if r.content else None
def tg(method, **params):
r = http.post(f"https://api.telegram.org/bot{credentials.secret('TELEGRAM_BOT_TOKEN')}/{method}", json=params)
r.raise_for_status()
return r.json()["result"]
@on_trigger
def run(event):
seen = set(state.get("seen") or [])
first_run = not seen
sent = 0
for repo in REPOS:
runs = gh("GET", f"/repos/{repo}/actions/runs", params={"status": "failure", "per_page": 20})["workflow_runs"]
for r in runs:
if r["id"] in seen:
continue
seen.add(r["id"])
if first_run:
continue # don't alert on old failures the first time
commit = (r.get("head_commit") or {}).get("message", "").splitlines()[0][:80]
tg("sendMessage", chat_id=CHAT_ID, disable_web_page_preview=True,
text=f"❌ {r['name']} failed on {repo}\nBranch: {r['head_branch']} · by {r['actor']['login']}\n\"{commit}\"\n{r['html_url']}")
sent += 1
state.set("seen", list(seen)[-1000:])
return {"alerts": sent}
FAQ
Common questions
Do I need to change my workflow files?
Will it tell me when the build is fixed?
Can I limit it to the main branch?
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
Get GitHub issue updates on Telegram
Telegram messages you when an issue in your repository is opened, commented on or closed, with the title and a link.
See how it worksBack up to GitHub with Telegram alerts
Every day your exports are saved to a GitHub repository, and Telegram tells you which files changed.
See how it worksGet told on Telegram when your forks fall behind
Telegram tells you when one of your GitHub forks falls behind the original project, and by how many commits.
See how it worksKeep exploring
Set up “Get a Telegram alert when a GitHub Actions run fails” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.