🔓 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

Slack to Linear, clean bug tickets with every /bug

Lisa Granqvist Partner Workflow Automation Expert

Bug reports die in Slack threads all the time. Someone posts “this is broken,” a few replies pile up, and then it vanishes under 200 newer messages.

Product managers usually discover it during triage. Support leads feel it when customers follow up on “known issues.” And founders get dragged in because nobody can tell what’s been filed. This Slack Linear automation turns a quick /bug message into a real Linear ticket with consistent structure and labels.

You’ll see how the workflow captures the report, formats it, creates the ticket in Linear, and sends a confirmation back to Slack so nothing gets lost.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Slack to Linear, clean bug tickets with every /bug

The Problem: Slack Bugs Aren’t Trackable Bugs

Slack is where bugs get noticed, but it’s a terrible long-term home for bug tracking. You can’t reliably assign ownership, group by area, or see what’s trending because the “system” is basically scrolling and memory. And the moment a report is missing a key detail (device, steps to reproduce, expected behavior), your team wastes time going back-and-forth instead of fixing. Worst part: people stop reporting bugs because it feels pointless, so the issues pile up quietly until a release goes sideways.

The friction compounds. Here’s where it breaks down in real teams.

  • A bug posted in a channel often never makes it into Linear, especially on busy days.
  • Reports come in messy, so triage turns into 10 minutes of rewriting per ticket.
  • Without a default label and structure, tickets end up inconsistent, which makes filtering and prioritizing harder than it should be.
  • People don’t get confirmation, so they assume “someone else handled it” and duplicates appear later.

The Solution: Turn /bug Messages into Linear Tickets

This workflow makes Slack the easiest place to report a bug while keeping Linear as the source of truth. It starts when someone uses a Slack slash command (like /bug) tied to your Slack app. n8n receives that slash command via a webhook, then shapes the content into a clean, predictable ticket format. Next, it creates the issue in Linear through API calls (HTTP requests), applying your default description and label rules so every report looks the same. Finally, the workflow sends a confirmation back to the reporter in Slack so they know the ticket exists and can click through with full context.

The workflow begins with a Slack webhook trigger, then a “defaults” step standardizes fields like title, description, and labels. From there it creates the Linear ticket and follows up with a message back to Slack so reporting feels instant, not bureaucratic.

What You Get: Automation vs. Results

Example: What This Looks Like

Say your team logs about 10 bugs a week from Slack. Manually, each one takes roughly 10 minutes to copy into Linear, rewrite into a usable format, and add labels, so you’re at about 2 hours weekly (and that’s on a good week). With this workflow, reporting is a /bug message that takes about 1 minute, then n8n creates the Linear ticket in the background. You still do triage, but the “paperwork” disappears.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Slack for the /bug slash command trigger
  • Linear to create and label bug tickets
  • Slack bot token (create it at api.slack.com/apps)

Skill level: Intermediate. You’ll connect Slack + Linear credentials and paste webhook URLs into Slack’s slash command setup.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A Slack slash command triggers the workflow. When someone types /bug in Slack, Slack sends a request to n8n’s webhook URL (you’ll paste the webhook into Slack during setup).

Defaults get applied so tickets stay clean. n8n takes the raw text from Slack and maps it into a predefined structure (title, description template, and your standard label choices) so you don’t rely on reporters to “write it the right way.”

Linear is updated through API calls. The workflow creates the Linear issue using HTTP Request nodes, and it can also fetch team/label info so the ticket lands where it belongs.

The reporter gets a confirmation back in Slack. A follow-up message confirms the ticket was created, which reduces duplicates and stops that nagging “did anyone file this?” loop.

You can easily modify the default description and labels to match how your team triages. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Webhook Trigger

This workflow starts when an external system posts a bug report to the webhook endpoint.

  1. Add the Incoming Bug Hook node as the trigger.
  2. Set HTTP Method to POST.
  3. Set Path to e6d88547-5423-4b01-bc7f-e1f94274c4b2.
  4. Copy the production webhook URL from Incoming Bug Hook and configure your bug intake source to post to it.
Tip: Use the Test URL during setup to avoid triggering live notifications while you validate payload formatting.

Step 2: Connect Linear

The workflow creates Linear issues and optionally fetches team metadata, so you must connect Linear credentials to the relevant nodes.

  1. Open Create Linear Ticket and set Credential Required: Connect your linearOAuth2Api credentials.
  2. Open Fetch Team Labels and set Credential Required: Connect your linearOAuth2Api credentials.
  3. Open Utility: Retrieve Linear Teams and set Credential Required: Connect your linearOAuth2Api credentials.
⚠️ Common Pitfall: If Linear credentials are missing, Create Linear Ticket and Fetch Team Labels will fail with authorization errors.

Step 3: Set Up Processing Defaults

This step sets the team and label IDs used to create issues in Linear.

  1. Open Configure Defaults and set labelIds to ["[YOUR_ID]"].
  2. In Configure Defaults, set teamId to [YOUR_ID].
  3. Open Assign Team Identifier and set teamId to [YOUR_ID].
⚠️ Common Pitfall: Replace all [YOUR_ID] placeholders with real Linear team and label IDs before testing.

Step 4: Configure Output/Action Nodes

These nodes create the Linear issue and send a confirmation message back to the original source.

  1. In Create Linear Ticket, set URL to https://api.linear.app/graphql and Method to POST.
  2. In Create Linear Ticket, set JSON Body to the provided GraphQL mutation, including the expressions {{$json["body"]["text"].replaceAll('"',"'")}} and {{$json["body"]["user_name"].toSentenceCase()}}.
  3. In Send Hidden Prompt, set URL to {{ $('Incoming Bug Hook').item.json.body.response_url }} and Method to POST.
  4. In Send Hidden Prompt, set the text body parameter to the existing message that references {{$node["Incoming Bug Hook"].json["body"]["text"]}}, {{$node["Incoming Bug Hook"].json["body"]["user_id"]}}, and {{$json["data"]["issueCreate"]["issue"]["url"]}}.
  5. In Fetch Team Labels, set URL to https://api.linear.app/graphql and keep the GraphQL query query { team(id: "[YOUR_ID]") { labels { nodes { id name } } } }.
  6. In Utility: Retrieve Linear Teams, set URL to https://api.linear.app/graphql and keep the GraphQL query { teams { nodes { id name } } } for reference.

Execution flow: Incoming Bug HookConfigure DefaultsCreate Linear TicketSend Hidden Prompt. Separately, Assign Team IdentifierFetch Team Labels for label lookup.

Step 5: Test and Activate Your Workflow

Validate the end-to-end flow before enabling the workflow in production.

  1. Click Execute Workflow and send a sample POST request to the Incoming Bug Hook test URL.
  2. Confirm that Create Linear Ticket returns a valid issue url and that a new issue appears in Linear with the correct title, description, team, and labels.
  3. Verify that Send Hidden Prompt posts back to the response_url with the formatted message and issue link.
  4. After successful testing, switch the webhook to production and toggle the workflow to Active.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Slack credentials can expire or need specific permissions. If things break, check your Slack app’s OAuth scopes (especially chat:write) and token status first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Linear API requests can fail if the team ID or label IDs are wrong. If new tickets aren’t getting labeled, confirm the team identifier mapping and re-fetch labels from Linear.

Frequently Asked Questions

How long does it take to set up this Slack Linear automation?

About 30 minutes if your Slack app and Linear access are ready.

Do I need coding skills to automate Slack bug ticket creation?

No. You will connect accounts and paste a webhook URL into Slack’s slash command settings.

Is n8n free to use for this Slack Linear automation 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 Linear and Slack API access, which is usually included in your existing plans.

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 customize this Slack Linear automation workflow for different labels and teams?

Yes, and you should. You can change the default label logic in the “Configure Defaults” and “Fetch Team Labels” parts of the workflow, and update team routing by adjusting the team identifier mapping before the Linear API calls. Common tweaks include adding multiple labels (severity plus platform), changing the default ticket description template, and renaming the Slack command from /bug to something your team actually uses.

Why is my Slack connection failing in this workflow?

Most of the time it’s missing Slack permissions or a rotated token. Confirm your Slack app has the chat:write scope, then reinstall the app to the workspace if you changed scopes. Also verify the slash command Request URL is pointing to the correct n8n webhook URL (prod, not the test URL). If Slack can’t reach your webhook because of networking or authentication, it will fail even if Linear is configured perfectly.

How many tickets can this Slack Linear automation handle?

A lot.

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

Often, yes, because this pattern benefits from flexible formatting, conditional logic, and API calls that you can control tightly in n8n. n8n also gives you a self-hosting option, which means you’re not paying more just because bug volume spikes during a release. Zapier or Make can still be fine if you only want a very basic “Slack message → create ticket” and don’t care about consistent templates, label lookups, or more complex routing later. If you’re unsure, think about your next requirement, not today’s. Talk to an automation expert and we’ll help you pick the right approach.

Clean bug tickets shouldn’t require a “process police” moment in Slack. Set this up once, and every /bug turns into a real Linear issue your team can actually ship against.

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