The moment it happens
Create Linear issues from a form or alert
Bug reports or alerts sent to a link become Linear issues in the team you choose.
- Runs
- The moment it happens
- Apps
- Linear
- AI
- Not needed
- Access
- read+write
Send this to your assistant
Create a ClickRuntime automation: give me a link my bug report form can send to. For each report, create a Linear issue in team ENG with the title, description and reporter's email, and skip repeats with the same title.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Bug reports arrive from places that are not Linear: a public feedback form, a monitoring tool that fires an alert, a support widget, a spreadsheet of customer complaints. Someone has to copy each one into Linear by hand, and in the rush they leave out the stack trace, forget the link back to the source or never get around to it. Alerts that never become issues are simply forgotten.
The automation gives you a URL that accepts a payload. When something posts to it, ClickRuntime maps the fields to the title, description and priority of a Linear issue, creates it in the team you choose and returns the new issue's URL to the caller. The report becomes a tracked item as soon as it arrives.
It is useful for teams collecting feedback from outside the company or wiring in alerts from other tools.
What you get out of it
Reports are never lost in transit
Each submission becomes an issue automatically, so nothing waits in a mailbox or a chat thread for someone to have time. The team sees every report in the one place they work.
Context stays attached to the issue
Fields like the page URL, browser or customer email are mapped into the description. Engineers do not have to go back and ask the reporter for the details they should have had from the start.
The caller gets a link back
Because the issue URL is returned to whatever sent the request, a form can show a confirmation with a reference, or a monitoring tool can attach the link to its alert.
Intake is open to non-Linear users
Customers, contractors and teammates without a Linear seat can still report problems through a form. That widens your sources of feedback without paying for more seats. That is a real saving in a team that pays per seat.
Triage starts from a clean, uniform record
Every issue is created with the same structure, which makes filtering, labeling and assigning faster. It beats a pile of free-form emails written in all sorts of formats. Consistency here saves minutes on every single report.
How it works
What happens, step by step
When your form or monitoring tool sends a new report to ClickRuntime, the automation starts straight away.
It picks out the title, description and reporter from the report.
It skips reports it has already turned into issues, so repeats do not create duplicates.
A new issue is created in your Linear team, and the link to it is sent back to whatever sent the report.
Before it runs live
- Connect Linear
- Paste your automation's link into the other app's webhook settings
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 Linear steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, http, credentials, state
def linear(query, variables=None):
r = http.post(
"https://api.linear.app/graphql",
headers={"Authorization": credentials.secret("LINEAR_API_KEY")},
json={"query": query, "variables": variables or {}},
)
r.raise_for_status()
return r.json()["data"]
@on_event
def handle(event):
form = event.json or {}
title = form.get("title", "").strip()
seen = state.get("titles") or []
if not title or title.lower() in seen:
return {"created": False}
team = linear('{ teams(filter: {key: {eq: "ENG"}}) { nodes { id } } }')["teams"]["nodes"][0]["id"]
issue = linear("""mutation($input: IssueCreateInput!) { issueCreate(input: $input) { issue { identifier url } } }""",
{"input": {"teamId": team, "title": title,
"description": f"{form.get('description', '')}\n\nReported by {form.get('email', 'unknown')}"}})
state.set("titles", (seen + [title.lower()])[-1000:])
return issue["issueCreate"]["issue"]FAQ
Common questions
What format should the incoming request use?
How do I stop random people from creating issues?
Can issues go to different teams depending on the content?
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 a Slack message for every new Linear issue
Each new issue in your team shows up in Slack with its title, priority, assignee and link.
See how it worksGet alerted when an issue becomes Urgent
You hear straight away when an issue is created as Urgent or raised to Urgent.
See how it worksRoute new bugs to the right team
New issues in Triage get a team, label and priority, and you get a note explaining each choice.
See how it worksKeep exploring
Set up “Create Linear issues from a form or alert” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.