Every 5 minutes
Get a Slack message for every new issue
Each new issue on your repo shows up in Slack with its title, author and link.
- Runs
- Every 5 minutes
- Apps
- GitHub
- AI
- Not needed
- Access
- Issues: read
Send this to your assistant
Create a ClickRuntime automation: post to #dev in Slack every time a new issue is opened in acme/app, with the title, author and link. Leave out pull requests.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
For a maintainer, the first hour after an issue is opened is when it is cheapest to help. A bug report with a clear stack trace can be answered with a one-line fix, and a user who is stuck on installation will give up if nobody replies. Yet GitHub emails are easy to miss among the rest of a busy inbox, so issues sit for days and reporters assume the project is abandoned.
Every 5 minutes issues created since the previous run are listed. Pull requests, which GitHub also returns as issues, are skipped, and each real issue goes to Slack with its title, author and a link. The newest timestamp is saved so the next run begins where the last one stopped.
Maintainers of libraries and developer tools, and support engineers who watch a public repo, use it to hear about problems quickly.
What you get out of it
Reporters hear back fast
A reply within the first hour tells the reporter that the project is alive, and often it is the difference between a helpful bug report and a frustrated user who moves on.
Critical bugs are noticed immediately
A crash on startup or a security concern reaches Slack right away, so it can be triaged before it spreads across social media or into more duplicate reports. Fixing something obvious quickly limits the damage to your reputation.
Slack is where the team already is
Posting issues in a channel brings teammates into the conversation, so a question about a part of the code you do not know gets answered by the person who does.
Pull requests do not clutter the feed
Skipping pull requests keeps the channel about real problems, so every message is something that needs a decision about priority, ownership or a quick answer. That keeps focus on user problems rather than code churn.
No gap or double-up between runs
Saving the newest timestamp means an issue opened between checks is still caught next time, and one already posted is not announced a second time. That is particularly helpful when a workflow is paused for a day.
How it works
What happens, step by step
Every five minutes, the automation checks your GitHub repo for issues opened since the last check.
Pull requests are left out, so only real issues come through.
Each new issue is posted to your Slack channel with its number, title, author and link.
It remembers the newest issue it posted, so nothing is posted twice.
Before it runs live
- Connect GitHub
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 steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, state, notify, report_fetched
def gh(method, path, **kw):
resp = http.request(method, f"https://api.github.com{path}", headers={
"Authorization": f"Bearer {credentials.connection('github', 'work')}",
"Accept": "application/vnd.github+json"}, **kw)
resp.raise_for_status()
return resp.json() if resp.content else None
REPO = "acme/app"
@on_trigger
def run(event):
last = state.get("last_number")
issues = [i for i in gh("GET", f"/repos/{REPO}/issues", params={"state": "all", "sort": "created",
"direction": "desc", "per_page": 30}) if "pull_request" not in i]
new = [i for i in issues if last is not None and i["number"] > last]
report_fetched(len(new))
if issues:
state.set("last_number", max([i["number"] for i in issues] + [last or 0]))
if not new:
return {"posted": 0}
for i in reversed(new):
notify.slack(f"New issue #{i['number']}: {i['title']} by {i['user']['login']}\n{i['html_url']}", channel="#dev")
return {"posted": len(new)}FAQ
Common questions
Why are pull requests skipped?
Can I watch more than one repository?
Can it post only issues with certain labels?
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
Assign new issues automatically
New issues get an owner based on their label, and anyone can take an issue by commenting /assign.
See how it worksGet pinged when a pull request is opened
You hear about each new pull request within minutes of it being opened.
See how it worksHear about new releases of repos you follow
When a project you depend on ships a release, you get the version and release notes.
See how it worksKeep exploring
Set up “Get a Slack message for every new issue” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.