Skip to content

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.

Paste it into your assistant. It tells you what it will send or change before it runs live.

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

  1. Every 5 minutes, ClickRuntime looks for new messages in your #support Slack channel.

  2. It remembers the last message it handled, so each message is only turned into an issue once.

  3. AI reads each message and writes a short title, a summary and a priority.

  4. A Linear issue is created with those details in your chosen team.

  5. 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

RunsEvery 5 minutes
Turn Slack support messages into Linear ticketstoday, 9:00Succeeded
Slack · #supportLogged in Linear: SUP-412 "Contoso can't export invoices to CSV" (High priority)

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
turn_slack_support_messages_into_linear_tickets.pyexample
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?
No. Only new top-level messages in the channel become issues, so a conversation about one problem stays as one issue. Follow-up replies stay in the thread with the issue link.
Which Linear team do the issues go to?
You choose one team when you set it up, and every issue is created there. If different kinds of requests belong to different teams, the team can be picked per message as well.
What happens to messages posted while it was turned off?
When it starts again it picks up from the last message it handled, so messages posted in the meantime are still turned into issues. Nothing is filed twice.
What permissions does it need?
Slack channels:history, chat:write; Linear write. Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

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.