🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 21, 2026

Linear + Slack: bug tickets routed to the right team

Lisa Granqvist Partner Workflow Automation Expert

Your bug queue fills up fast. Then the real time drain starts: someone reads the report, guesses an owner, moves the ticket, gets it bounced back, and repeats.

This is the kind of mess product managers feel in sprint planning, but engineering leads and support folks doing intake see it every day too. With Linear Slack routing, new bugs land with the right team automatically, and Slack only gets pinged when the workflow honestly can’t decide.

Below you’ll see exactly how the workflow routes issues, how the AI decision is validated against real Linear teams, and how to set it up so your triage stays calm.

How This Automation Works

Here’s the complete workflow you’ll be setting up:

n8n Workflow Template: Linear + Slack: bug tickets routed to the right team

Why This Matters: Bug triage turns into ping pong

When multiple teams share one intake pipeline, “new bug” doesn’t mean “actionable.” Someone still has to check if the description is complete, confirm it’s truly a bug, look at state and labels, and then decide which team owns it. That decision is rarely obvious from the title alone, so triage becomes a context-switch tax. Worse, it’s noisy. People get interrupted in Slack for things that could have been routed quietly, and misrouted tickets sit for days because everybody assumes someone else picked it up.

It adds up fast. Here’s where it breaks down in the real world.

  • New issues arrive without enough context, so a human has to chase details before routing.
  • Tickets bounce between teams because the first assignment was a guess, not a decision backed by clear criteria.
  • Slack gets used as a triage queue, which means important alerts drown in routine housekeeping.
  • As volume grows, “we’ll handle triage later” turns into a backlog that quietly blocks real fixes.

What You’ll Build: AI-based Linear routing with Slack exceptions

This workflow watches Linear for issues created or updated in a specific intake team (many companies use a single “Engineering” or “Triage” team first). When a ticket matches your routing criteria, it sends the issue details to an OpenAI GPT-4 prompt that’s been primed with your teams and what they own. The workflow then double-checks the AI’s choice against the actual list of teams pulled from Linear, so it doesn’t assign a made-up name. If the chosen team is valid, the workflow updates the Linear issue’s team property and moves it along. If the AI can’t pick confidently (or the choice doesn’t validate), Slack gets a focused alert so a human can decide quickly, without spamming the channel for every single ticket.

It starts with a Linear issue trigger, filters down to the bugs that are ready for routing, then uses AI classification plus a “does this team exist?” validation step. Finally, it either assigns the correct team in Linear or posts one clean message to Slack for manual triage.

What You’re Building

Expected Results

Say you get about 20 new bugs a week into one shared Linear team. Manually, triage is usually 5 minutes to read, check labels/state, decide ownership, and move it, so you’re looking at roughly 2 hours weekly (and it’s never one clean block of time). With this workflow, the “human time” becomes the exceptions only. If even 4 out of 5 bugs get routed automatically, you’re down to maybe 20 minutes of manual triage for the week, plus the automated processing time running in the background.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Linear for bug intake and team assignment.
  • Slack to alert only on unclassified tickets.
  • OpenAI API key (get it from the OpenAI dashboard)

Skill level: Beginner. You’ll connect accounts, paste in team definitions, and adjust a few filters to match your Linear setup.

Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).

Step by Step

A Linear issue changes. The workflow runs whenever an issue is created or updated in your chosen Linear team, which is typically the shared intake queue.

Only the right tickets continue. It filters for issues that are actually ready for automated routing, such as having a proper description, the correct “bug” label, and sitting in your “Triage” state. Anything else is ignored so you don’t accidentally re-route work-in-progress tickets.

AI picks the best owner. OpenAI (GPT-4) reads the ticket and your internal “who owns what” notes, then returns the most likely team. This is where you’ll get the biggest payoff, because the model can interpret real language, not just rigid keywords.

The workflow validates and acts. n8n pulls the current team list from Linear, checks that the AI’s answer matches a real team name, then updates the issue’s team property. If validation fails, it posts a Slack alert so a human can make the call.

You can easily modify the routing rules (labels, states, required fields) to match how your team triages today. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Linear Trigger

Set up the workflow to start when a new Linear issue is created or updated for the target team.

  1. Add the Linear Issue Trigger node and set Team ID to 7a330c36-4b39-4bf1-922e-b4ceeb91850a.
  2. Set Authentication to oAuth2 and ensure Resources includes issue.
  3. Credential Required: Connect your linearOAuth2Api credentials.

Step 2: Connect Linear Data and Team Options

Define team options and retrieve the active Linear teams for ID mapping.

  1. In Initialize Team Options, add the team list under teams with the provided value block and set slackChannel to #yourChannelName.
  2. In Retrieve Linear Teams, set URL to https://api.linear.app/graphql, Method to POST, and enable Send Body.
  3. Set the body parameter query to { teams { nodes { id name } } }.
  4. Credential Required: Connect your linearOAuth2Api credentials to Retrieve Linear Teams.

Step 3: Set Up AI Classification

Configure the AI to classify issues into one of the predefined teams.

  1. In AI Classification Prompt, select the model gpt-4-32k-0314.
  2. Confirm the system messages include the team list expression {{ $('Initialize Team Options').first().json.teams }} and issue data expressions for title and description: {{ $('Linear Issue Trigger').first().json.data.title }} and {{ $('Linear Issue Trigger').first().json.data.description }}.
  3. Credential Required: Connect your openAiApi credentials.

Tip: Ensure team names in Initialize Team Options match the Linear team names exactly to avoid mismatches later in the workflow.

Step 4: Configure Filtering and Parallel Processing

Filter issues that need classification and run AI and team retrieval in parallel.

  1. In Filter Unclassified Tickets, add three conditions: Description does not contain Add a description here using {{ $('Linear Issue Trigger').item.json.data.description }}; State ID equals 6b9a8eec-82dc-453a-878b-50f4c98d3e53 using {{ $('Linear Issue Trigger').item.json.data.state.id }}; and Label count greater than 0 using {{ $('Linear Issue Trigger').item.json.data.labels.filter(label => label.id === 'f2b6e3e9-b42d-4106-821c-6a08dcb489a9').length }}.
  2. Filter Unclassified Tickets outputs to both AI Classification Prompt and Retrieve Linear Teams in parallel.
  3. In Combine Data Streams, set Mode to chooseBranch to merge AI output and team data correctly.

⚠️ Common Pitfall: If the label ID or state ID is incorrect, the workflow will never reach AI classification. Double-check both IDs match your Linear workspace.

Step 5: Validate and Route the Result

Validate the AI response, map the team ID, and update the issue or alert Slack.

  1. In Validate Team Selection, set the condition to check {{ $json.message.content }} is not equal to Other.
  2. In Assign Team Identifier, set teamId to {{ $('Retrieve Linear Teams').first().json.data.teams.nodes.find(team => team.name === $json.message.content).id }}.
  3. In Modify Team Assignment, set Operation to update, Issue ID to {{ $('Linear Issue Trigger').item.json.data.id }}, and teamId to {{ $json.teamId }}.
  4. Credential Required: Connect your linearApi credentials to Modify Team Assignment.
  5. On the false branch, configure Post Slack Alert with Text The AI was not able to identify a fitting team for a bug and Channel as {{ $('Initialize Team Options').first().json.slackChannel }}.
  6. Credential Required: Connect your slackApi credentials to Post Slack Alert.

Step 6: Test and Activate Your Workflow

Validate the end-to-end behavior and activate for production use.

  1. Click Execute Workflow and trigger a sample issue in Linear that matches the filter conditions.
  2. Successful execution should show a team name in AI Classification Prompt, a valid teamId in Assign Team Identifier, and an updated team on the issue in Modify Team Assignment.
  3. If the AI returns Other, confirm that Post Slack Alert posts to the channel defined in Initialize Team Options.
  4. When satisfied, toggle the workflow to Active to enable real-time classification.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • Linear credentials can expire or lack the permission to update issues. If assignments stop working, check the Linear connection in n8n’s Credentials first and confirm it can edit issues and read teams.
  • If Slack alerts aren’t showing up, it’s usually a channel or scope issue. Confirm the Slack app is allowed to post in the selected channel and that the channel in your “Set me up” configuration matches where you’re looking.
  • Default prompts in AI nodes are generic. Add your team boundaries and examples early or you will be editing outputs forever, and your Slack channel will fill with avoidable “unclear owner” pings.

Quick Answers

What’s the setup time for this Linear Slack routing automation?

About 30 minutes if you already have Linear, Slack, and OpenAI access.

Is coding required for this bug routing automation?

No. You’ll mostly connect accounts and edit a few plain-language fields like team names, labels, and states.

Is n8n free to use for this Linear Slack routing workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API usage, which is typically a few cents per classification depending on prompt size.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I modify this Linear Slack routing workflow for different use cases?

Yes, and you probably should. Most teams start by adjusting the “Initialize Team Options” (Set) node to reflect real ownership boundaries, then tweak the filter that checks for “Bug” label, “Triage” state, and “description present.” You can also swap what happens on failure: keep the Slack alert, create a fallback “Needs Triage” label in Linear, or assign to a default team for later sorting.

Why is my Linear connection failing in this workflow?

Usually it’s credentials or permissions. Reconnect Linear in n8n and confirm the token can read teams and update issues, not just view them. Also check that the team names in your “Initialize Team Options” match Linear exactly, because mismatches can look like a connection error when it’s really a data validation problem.

What volume can this Linear Slack routing workflow process?

A typical setup handles hundreds of issues a month without breaking a sweat.

Is this Linear Slack routing automation better than using Zapier or Make?

Often, yes, because this isn’t a simple two-step zap. You’ve got filtering rules, an AI classification step, a live fetch of Linear team data, then a validation branch that either updates Linear or posts to Slack. n8n handles that kind of branching cleanly and it’s easier to keep the logic in one place. Self-hosting is a practical advantage too if your ticket volume spikes and you don’t want every extra execution to hurt. Zapier or Make can still work if you simplify the flow (for example, always Slack on new bugs and route manually). If you’re unsure, Talk to an automation expert and you’ll get a straight recommendation for your setup.

Once this is live, most bug tickets route themselves and Slack stays reserved for the tricky edge cases. You get your focus back, and the queue finally behaves.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal