Every 5 minutes
Turn Slack support messages into Linear tickets
Every request posted in #support becomes a Linear issue with a clear title, priority and summary, and the link appears in the Slack thread.
- Runs
- Every 5 minutes
- Apps
- Linear, Slack
- AI
- Yes, uses the built-in AI allowance
- Access
- Slack channels:history, chat:write; Linear write
Send this to your assistant
Create a ClickRuntime automation: every 5 minutes, take new messages in #support, create a Linear issue for each with an AI-written title, priority and summary, and reply in the thread with the issue link.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A support lead at a small software company watches the #support channel where customer success and sales drop problems they hear from customers. Engineers only work from Linear, so someone has to copy each message into an issue, guess a priority and post the link back. On busy days that copying falls behind, messages scroll out of view, and a customer waits a week for a bug nobody filed.
With this automation every new message in #support becomes a Linear issue within minutes, with a readable title, a summary and a priority, and the person who posted it sees the issue link in their thread.
What you get out of it
Nothing posted in #support gets lost
Every message is picked up, even on a busy afternoon or over a weekend. Requests no longer depend on someone remembering to file them. The channel stays a place to ask, and Linear stays the place where work is tracked.
Engineers get issues they can act on
The issue has a short title and a summary written from the message, not a pasted wall of chat. Engineers can triage from Linear without opening Slack. The context they need is in one place.
The person who asked can follow progress
The issue link is posted as a reply in the original thread. Whoever raised the problem can open it and see its status instead of asking again. That cuts down on "any news on this?" messages.
Priorities are set from the start
Each issue arrives with a suggested priority based on what the message says, such as an outage versus a cosmetic bug. Urgent problems rise to the top of the queue straight away. The team can still change it during triage.
Support time goes to customers
The support lead no longer spends part of each day copying messages between tools. That time goes back into answering customers and spotting patterns. Filing becomes something that just happens.
How it works
What happens, step by step
Every 5 minutes, ClickRuntime looks for new messages in your #support Slack channel.
It remembers the last message it handled, so each message is only turned into an issue once.
AI reads each message and writes a short title, a summary and a priority.
A Linear issue is created with those details in your chosen team.
The issue link is posted as a reply in the original Slack thread.
Before it runs live
- Connect Linear
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
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
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Google Sheets
- Combine it with other Linear and Slack steps into one automation
Under the hood
The code that runs this automation
from slack_sdk import WebClient
from clickruntime import on_trigger, credentials, http, state, ai, report_fetched
CHANNEL_ID = "your-support-channel-id"
TEAM_ID = "your-linear-team-id"
SCHEMA = {"type": "object", "properties": {"title": {"type": "string"}, "summary": {"type": "string"},
"priority": {"type": "integer"}}, "required": ["title", "summary", "priority"]}
MUTATION = "mutation($i: IssueCreateInput!) { issueCreate(input: $i) { issue { url } } }"
@on_trigger
def run(event):
slack = WebClient(token=credentials.connection("slack", "work"))
since = state.get("last_ts") or "0"
msgs = [m for m in slack.conversations_history(channel=CHANNEL_ID, oldest=since)["messages"] if not m.get("subtype")]
report_fetched(len(msgs))
if not msgs:
return {"summary": "Nothing new"}
for m in sorted(msgs, key=lambda m: m["ts"]):
try:
d = ai.generate(f"Support request:\n{m['text'][:2000]}\nWrite a short title, a summary and a priority from 1 (urgent) to 4 (low).",
json_schema=SCHEMA, max_output_tokens=300).json
except ai.AIError:
d = {"title": m["text"][:80], "summary": m["text"], "priority": 3}
r = http.post("https://api.linear.app/graphql", headers={"Authorization": credentials.secret("LINEAR_API_KEY")},
json={"query": MUTATION, "variables": {"i": {"teamId": TEAM_ID, "title": d["title"], "description": d["summary"], "priority": d["priority"]}}})
url = r.json()["data"]["issueCreate"]["issue"]["url"]
slack.chat_postMessage(channel=CHANNEL_ID, thread_ts=m["ts"], text=f"Logged in Linear: {url}")
state.set("last_ts", m["ts"])
return {"summary": f"{len(msgs)} issues created"}FAQ
Common questions
Are replies in a thread turned into separate issues?
Which Linear team do the issues go to?
What happens to messages posted while it was turned off?
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
Send new Linear bugs to the team that owns them
Each new bug lands with the right team in Linear within seconds, and that team hears about it in Slack.
See how it worksTurn meeting transcripts into Linear issues
Send a meeting transcript and every action item becomes a Linear issue, with a summary and links posted in Slack.
See how it worksOpen Linear issues for expiring SSL certificates
Any domain whose certificate expires within 30 days gets one Linear issue and a Slack alert, well before visitors see a browser warning.
See how it worksKeep exploring
Set up “Turn Slack support messages into Linear tickets” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.