Escalate tagged Intercom bugs into Linear without duplicates

When support tags a conversation as a bug, an AI agent files it in Linear, checks it is not a duplicate first, and tells engineering.

Agentic Task
IntercomLinearSlack BotCustomer SupportEngineeringFeedback TriageNotifications & Alerts
PromptCreate

I want an agent that escalates tagged Intercom conversations into Linear bugs, without filing a duplicate every time a second customer reports the same thing.

Trigger this on a webhook from Intercom when a tag is applied to a conversation (the conversation_part.tag.created topic). Make the tag name a configurable input that defaults to "bug", so a team can point it at "escalate", "needs-eng", or whatever they already use. If the tag that fired does not match the configured name, stop immediately and do nothing.

When a matching tag fires, use the Intercom operation Retrieve a Conversation to pull the entire thread, including all of its conversation parts. Read the whole exchange and work out: the reproduction steps, what the customer expected versus what actually happened, any error messages, IDs, or URLs they mentioned, which customer and company reported it, and whether they are fully blocked or have a workaround. Support threads are messy and out of order, so reconstruct the actual sequence of events rather than quoting the customer verbatim.

Before creating anything, use the Linear operation Search Issues to look for an existing open issue describing the same symptoms. Search on the distinctive technical terms from the report rather than the customer's exact phrasing, and try a second and third wording if the first search comes back empty. Only treat a result as a match if it genuinely describes the same underlying bug, not merely the same feature area. Ignore issues that are already closed, archived, or shipped.

If you find a confident match, use the Linear operation Add Comment to Issue to append this report to the existing issue instead of filing a duplicate. The comment should name the customer and company, note whether they are blocked and since when, add anything new this thread reveals that the issue does not already capture, and link back to the Intercom conversation. Do not restate what is already in the issue.

If nothing matches, use the Linear operation Create Issue to file a new one on the right team. Write a title that describes the symptom concisely, and a description containing the reproduction steps, expected versus actual behaviour, the affected customer and company, and a link to the Intercom conversation. Set the priority yourself based on how many customers are affected and how badly they are blocked: urgent when a customer is fully blocked with no workaround or several customers have already hit it, high when it blocks a core task but a workaround exists, normal for everything else. State in the description why you chose that priority so an engineer can overrule you.

Either way, post to the engineering channel using the Slack Bot operation Send a Message. Say clearly whether this was a newly filed issue or another report on an existing one, and include the Linear link, the customer name, the priority, and a one or two sentence summary of the bug. Make the channel a configurable input.

Finally, write the Linear URL back onto the Intercom thread using the Intercom operation Reply to a Conversation, as an admin note rather than a customer-visible reply, so the support rep who applied the tag can follow the issue without leaving the inbox. Note whether it was newly filed or added to an existing issue.

One guard: if the conversation has already been escalated, meaning the thread already contains an admin note with a Linear link, do not file or comment again. Post a short note to Slack saying it was already escalated and stop there.

Additional information

What does this prompt do?
  • Watches for a tag of your choosing on your Intercom conversations, like bug or escalate, and kicks off the moment a teammate applies it.
  • Reads the whole conversation and writes up the reproduction steps, the affected customer, and whether they are completely stuck.
  • Checks your existing Linear issues first, so a second report of a known bug gets added as a comment on the open issue instead of becoming a duplicate.
  • Posts the Linear link to your engineering channel in Slack and drops the same link back on the Intercom thread as an internal note.
What do I need to use this?
  • An Intercom workspace where your support team already tags conversations, plus permission to connect it.
  • A Linear workspace, and the team you want bug reports filed against.
  • A Slack workspace and the engineering channel where escalations should land.
How can I customize it?
  • The tag that triggers everything: keep it as bug, or point it at escalate, needs-eng, or whatever your team already uses.
  • The Linear team bugs get filed to, and how strict the agent should be before it calls something a duplicate.
  • The Slack channel that gets notified, and how much detail the message carries.

FAQs

Will it create duplicate issues if several customers report the same bug?
No, that is the main thing it is built to avoid. Before filing anything it searches your open Linear issues for the same symptoms, and when it finds a genuine match it adds the new customer as another report on that issue instead of opening a second one.
Does the customer see anything?
No. The link it writes back onto the Intercom conversation is an internal note, visible only to your team inside the inbox. Nothing is sent to the customer.
Can I use a tag other than bug?
Yes. The tag name is a setting, so you can use escalate, needs-eng, or any tag your team already applies. Only conversations carrying that exact tag are picked up, and everything else is ignored.
How does it decide the priority?
It reads the conversation for how badly the customer is stuck and whether others have reported the same thing. Someone fully blocked with no workaround gets urgent, a broken core task with a workaround gets high, and everything else lands at normal. It also explains its reasoning in the issue so an engineer can overrule it.
What happens if it matches the wrong issue?
Everything it does is visible and reversible. The Slack message states whether it filed a new issue or commented on an existing one and links straight to it, so an engineer can move or reopen anything that landed in the wrong place.

Related templates

Chase past-due JobNimbus invoices with escalating emails

Every weekday, find every unpaid JobNimbus invoice, email each customer one reminder that gets firmer as it ages, and post a receivables summary to Slack.

JobNimbus
Gmail
Slack Bot
Agentic Task
Flag at-risk students in Canvas before they fall behind

Every weekday at 7am, your active courses are checked for missing work, silent logins, and slipping grades, with a ranked list sent to your advising channel.

Canvas
Google Sheets
Slack Bot
Agentic Task
Catch Jira service desk tickets before their SLA runs out

Every hour, find the tickets closest to breaching, leave a nudge on each one, and post a ranked at-risk list to your support channel.

Jira Service Management
Slack Bot
Agentic Task
Send Canvas students a kind nudge about missing work

Every weekday afternoon, each student who is behind gets a warm, personal message in their Canvas inbox listing exactly what they owe.

Canvas
Slack Bot
Agentic Task
Weekly Canvas grading backlog report in Slack and Sheets

Every Monday at 8am, see exactly which assignments have work waiting, sorted worst first, posted to Slack and logged to a spreadsheet.

Canvas
Slack Bot
Google Sheets
Deterministic Code
Revoke Bitwarden access when someone leaves in BambooHR

Every weekday morning we compare your password vault against your HR records and suspend access for anyone who has already left.

Bitwarden
BambooHR
Slack Bot
Agentic Task

Stop retyping bug reports from Intercom into Linear.

Your support team applies a tag, and the write-up, the duplicate check, and the engineering ping all happen on their own.