Twice a day
Catch issues that nobody owns
Twice a day you get a list of open issues that have been unassigned for more than a few hours.
- Runs
- Twice a day
- Apps
- Jira
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: at 10am and 3pm, Slack me any open issues in project ABC that are still unassigned more than 4 hours after they were created.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A support engineer files a bug at 9 a.m., and the engineering lead assumes the team's triager will assign it. The triager assumes the support engineer picked a component that routes it automatically. By Thursday the bug has no owner and a customer is asking about it. Unowned issues are the ones that quietly age, since nobody feels responsible for them, and the first anyone knows is a complaint.
Twice a day, ClickRuntime searches Jira for unresolved issues with no assignee that were created at least 4 hours ago, and posts the list to your channel in Slack. The four-hour delay gives your normal assignment process a chance to work first, so only issues that were truly missed are shown.
It suits teams that rely on a triage rota or automatic assignment, and need a check for the cases that fall through.
What you get out of it
Every issue gets an owner
The twice-daily list makes sure no issue stays unowned for more than half a day. Responsibility is assigned while the problem is still new and cheap to handle. Nothing waits a full day for someone to notice that nobody was handling it.
Customers are not left waiting
A customer's bug without an owner is a bug nobody is fixing. Catching it within hours means someone can answer the customer, even if the answer is that the team is looking into it.
Triage rules are tested
If the same kind of issue keeps appearing unassigned, your automatic assignment rules have a gap. The list shows that pattern, so you can fix the rule instead of fixing the same issue repeatedly.
Short grace period avoids noise
Issues are listed only after four hours, so ones that are normally assigned within minutes are not mentioned. The team trusts the list because it contains genuine misses and not routine delays.
Visible to the whole team
A post in a shared channel invites anyone with capacity to pick one up. That spreads the load more evenly than one manager assigning everything. The list also makes it easy to see who has capacity and who is already stretched.
How it works
What happens, step by step
Twice a day, ClickRuntime looks for open Jira issues that nobody is assigned to.
It keeps the ones that have been waiting for more than four hours.
The list is posted to your Slack channel with each issue's priority and when it was created.
Before it runs live
- Connect Jira
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
- 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 Slack
- Combine it with other Jira steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, notify
JIRA = "https://api.atlassian.com/ex/jira/your-cloud-id"
def jira(method, path, **kw):
resp = http.request(method, JIRA + path, headers={
"Authorization": f"Bearer {credentials.connection('jira', 'work')}", "Accept": "application/json"}, **kw)
resp.raise_for_status()
return resp.json() if resp.content else None
def search(jql, fields, limit=100):
return jira("POST", "/rest/api/3/search/jql", json={"jql": jql, "fields": fields, "maxResults": limit})["issues"]
@on_trigger
def run(event):
issues = search("project = ABC AND assignee is EMPTY AND resolution is EMPTY AND created <= -4h ORDER BY created",
["summary", "created", "priority"], 50)
if not issues:
return {"unassigned": 0}
lines = [f"• {i['key']} {i['fields']['summary']} ({i['fields']['priority']['name']}, created {i['fields']['created'][:16].replace('T', ' ')})"
for i in issues]
notify.slack(f"{len(issues)} ABC issues still unassigned:\n" + "\n".join(lines), channel="#dev")
return {"unassigned": len(issues)}FAQ
Common questions
Why four hours before an issue counts as unassigned?
Can I run it more often than twice a day?
Does it include issues in every Jira project?
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
Find open issues missing key details
Each morning you get a list of open issues with no assignee, estimate or priority.
See how it worksTrack created vs resolved issues each week
Each Monday you see how many issues were created and resolved last week, and how that compares with the week before.
See how it worksFind issues stuck in progress
Each morning you see issues that have sat In Progress for too long, grouped by assignee.
See how it worksKeep exploring
Set up “Catch issues that nobody owns” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.