🔓 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 22, 2026

Slack + Linear: turn ✅ reactions into clean tickets

Lisa Granqvist Partner Workflow Automation Expert

Your support Slack channel is busy, loud, and weirdly fragile. One “quick question” turns into a thread, then vanishes under a dozen new pings, and suddenly nobody remembers what was promised.

This is where Slack Linear tickets automation pays off. Support leads feel it first, but ops managers and client-facing agency owners get dragged into the same mess. Missed requests, duplicate work, and ticket writeups that look like they were typed mid-meeting.

This workflow turns a simple ✅ reaction into a clean Linear issue, rewritten and prioritized by AI. You’ll see how it works, what you need, and what changes once Slack stops being your ticketing system.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Slack + Linear: turn ✅ reactions into clean tickets

The Problem: Slack support requests don’t become trackable work

Slack is great for fast conversations. It’s not great for accountability. A customer drops a bug report in a shared channel, your team reacts, someone says “I’ll take it,” and then the message gets buried. Later, you’re reconstructing context from half a thread, guessing priority, and rewriting the request into something an engineer can actually act on. That translation step is where things slip. Honestly, it’s also where time disappears, because you do it over and over.

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

  • A “we’ll fix it” message never becomes a ticket, so it never gets scheduled.
  • Ticket writeups are inconsistent, which means more back-and-forth and slower resolution.
  • Duplicates show up because nobody knows a similar issue already exists in Linear.
  • Support handoffs get messy, since Slack context doesn’t map cleanly to a trackable workflow.

The Solution: ✅ in Slack becomes a Linear ticket (with AI doing the cleanup)

This workflow watches a support Slack channel and looks for messages your team “approves” with a ✅ reaction. On a schedule, it searches for those marked messages, pulls the key fields (who said it, what they said, and any useful context), and checks Linear to see if the problem already exists. If it’s new, an AI model rewrites the raw Slack message into a proper support ticket: clearer title, cleaner description, sensible priority, and a consistent structure your team recognizes. Then it creates the issue in Linear so it lands directly in the same system you plan and ship from.

The workflow starts with a scheduled trigger, then gathers approved Slack messages and normalizes the data. Next, it compares against existing Linear issues to reduce duplicates. Finally, ChatGPT drafts the ticket content and n8n creates the Linear ticket automatically.

What You Get: Automation vs. Results

Example: What This Looks Like

Say your channel produces about 20 “real” support requests a week that deserve tickets. Manually, writing each one up in Linear takes maybe 6 minutes (copy the message, rewrite it, add context, set priority), which is roughly 2 hours. With this workflow, the human step is just reacting ✅ in Slack, which takes seconds. The scheduled run and AI drafting happen in the background, so your weekly admin drops to a quick review pass instead of full rewrites.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Slack for the support channel and reactions.
  • Linear to create and track issues.
  • OpenAI API key (get it from the OpenAI API dashboard)

Skill level: Intermediate. You’ll connect accounts, set permissions, and adjust a couple of fields so the ticket format matches your team.

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

How It Works

A scheduled check scans Slack. The workflow runs on a schedule and searches a specific Slack channel for messages that have been tagged with a ✅ reaction by your team.

Slack messages get cleaned up and normalized. n8n maps the message fields into a predictable structure (think “title,” “description,” “reporter,” and a few identifiers), so downstream steps aren’t guessing.

Linear is queried to prevent duplicates. It retrieves existing issues and aggregates their descriptions, then extracts hashes/identifiers so the workflow can decide if a “new” request is actually already in your backlog.

AI drafts the ticket and Linear receives it. If the ticket should be created, ChatGPT rewrites the raw Slack request into a clean issue and n8n creates the Linear ticket with the right formatting.

You can easily modify the Slack channel being monitored to support multiple customer channels based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Schedule Trigger

Set the workflow to run on a schedule so it regularly scans Slack for ticket markers.

  1. Add the Scheduled Automation Trigger node as the workflow trigger.
  2. Set the Rule interval field to minutes (as configured in the node).
  3. Connect Scheduled Automation Trigger to Slack Message Search.

Step 2: Connect Slack Search and Map Message Data

Search for Slack messages that contain ticket markers and map required fields for downstream processing.

  1. Open Slack Message Search and set Operation to search.
  2. Set Query to in:#n8n-tickets has::ticket: and Limit to 10.
  3. Credential Required: Connect your slackApi credentials.
  4. In Map Message Fields, set Mode to raw and JSON Output to ={ "id": "#{{ $json.permalink.split('/').last() }}", "type": "{{ $json.type }}", "title": "__NOT_SET__", "channel": "{{ $json.channel.name }}", "user": "{{ $json.username }} ({{ $json.user }})", "ts": "{{ $json.ts }}", "permalink": "{{ $json.permalink }}", "message": "{{ $json.text.replaceAll('\"','\\\\\"').replaceAll('\n', '\\n') }}"}.
  5. Connect Slack Message Search to Map Message Fields.

Tip: The message mapping escapes quotes and newlines to keep downstream JSON safe. Keep the exact expression in JSON Output as shown.

Step 3: Build the Existing-Issue Check and Parallel Data Streams

Fetch existing Linear issues, aggregate descriptions, extract hashes, and combine them with the Slack message data for duplication checks.

  1. Connect Map Message Fields to both Combine Data Streams and Retrieve Existing Issues in parallel.
  2. Retrieve Existing Issues: set Operation to getAll and connect Credential Required: your linearApi credentials.
  3. In Aggregate Descriptions, set Field to Aggregate to description and Output Field Name to descriptions.
  4. In Extract Issue Hashes, add an assignment named hashes with value ={{ $json.descriptions.map(desc => desc.match(/hash\:\s([\w#]+)/i)[1]) }}.
  5. Configure Combine Data Streams with Mode combine and Combination Mode multiplex.

⚠️ Common Pitfall: If any Linear issue description is missing a hash: entry, the regex in Extract Issue Hashes can fail. Ensure existing tickets follow the same metadata format.

Map Message Fields outputs to both Combine Data Streams and Retrieve Existing Issues in parallel.

Step 4: Set Up the Ticket Creation Gate and AI Drafting

Stop duplicate ticket creation and generate structured ticket data with the OpenAI chain.

  1. Connect Combine Data Streams to Ticket Creation Check.
  2. In Ticket Creation Check, set the boolean condition to ={{ Boolean(($json.hashes ?? []).includes($json.id)) }} and compare to false so only new messages pass.
  3. Open Draft Ticket with ChatGPT and set Prompt Type to define.
  4. Set the Text prompt to =The "user issue" is enclosed by 3 backticks: ``` {{ $('Map Message Fields').item.json.message }} ``` You will complete the following 4 tasks: 1. Generate a title intended for a support ticket based on the user issue only. Be descriptive but use no more than 10 words. 2. Summarise the user issue only by identifying the key expectations and steps that were taken to reach the conclusion. 3. Offer at most 3 suggestions to debug or resolve the user issue only. ignore the previous issues for this task. 4. Identify the urgency of the user issue only and denote the priority as one of "low", "medium", "high" or "urgent". If you cannot determine the urgency of the issue, then assign the "low" priority. Also consider that requests which require action either today or tomorrow should be prioritised as "high"..
  5. Attach OpenAI Chat Engine as the language model for Draft Ticket with ChatGPT and Structured Result Parser as the output parser.
  6. Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine (do not add credentials to Structured Result Parser).

Tip: The Structured Result Parser schema enforces title, summary, ideas, and priority fields—this makes downstream mapping in Create Linear Ticket reliable.

Step 5: Configure Linear Ticket Creation

Create a new Linear ticket using the structured AI output and original Slack metadata.

  1. Open Create Linear Ticket and set Title to ={{ $json.output.title }}.
  2. Set Team ID to [YOUR_ID] and update State ID to [YOUR_ID] in Additional Fields.
  3. Set Priority ID to ={{ { 'urgent': 1, 'high': 2, 'medium': 3, 'low': 4 }[$json.output.priority.toLowerCase()] ?? 0 }}.
  4. Set Description to =## {{ $json.output.summary }} ### Suggestions {{ $json.output.ideas.map(idea => '* ' + idea).join('\n') }} ## Original Message {{ $('Map Message Fields').item.json["user"] }} asks: > {{ $('Map Message Fields').item.json["message"] }} ### Metadata channel: {{ $('Map Message Fields').item.json.channel }} ts: {{ $('Map Message Fields').item.json.ts }} permalink: {{ $('Map Message Fields').item.json.permalink }} hash: {{ $('Map Message Fields').item.json.id }} .
  5. Credential Required: Connect your linearApi credentials in Create Linear Ticket.

Step 6: Test and Activate Your Workflow

Run a manual test to confirm Slack search, duplication checks, AI drafting, and Linear ticket creation work as expected.

  1. Click Execute Workflow and verify that Slack Message Search returns messages with :ticket: in #n8n-tickets.
  2. Confirm Ticket Creation Check only passes items not found in hashes.
  3. Check Draft Ticket with ChatGPT outputs a structured object with title, summary, ideas, and priority.
  4. Verify a new issue appears in Linear with the formatted description and metadata from Map Message Fields.
  5. Once successful, toggle the workflow to Active so Scheduled Automation Trigger runs on schedule.
🔒

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 n8n Slack credential status and the Slack app scopes 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.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

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

About 30 minutes if Slack, Linear, and OpenAI are ready.

Do I need coding skills to automate Slack Linear tickets?

No. You’ll connect accounts and adjust a few mapping fields in n8n.

Is n8n free to use for this Slack Linear tickets 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 costs (usually a few cents per ticket).

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 tickets workflow for Jira instead of Linear?

Yes, but you’ll swap the Linear nodes for Jira equivalents and keep the same Slack + AI pattern. In practice, you replace “Retrieve Existing Issues” and “Create Linear Ticket” with Jira search/create actions, then adjust the field mapping so the AI output matches your Jira project fields. Common customizations include changing the priority labels, writing tickets in your internal template, and routing certain categories to different projects.

Why is my Slack connection failing in this workflow?

Usually it’s expired credentials or missing Slack app scopes for searching messages and reading reactions. Reconnect Slack in n8n and confirm the workflow has access to the specific channel you’re monitoring. If it only fails sometimes, Slack rate limits can also cause intermittent errors when you’re scanning a lot of history at once.

How many tickets can this Slack Linear tickets automation handle?

If you self-host, it’s mainly limited by your server and API rate limits; dozens or even a few hundred tickets a day is realistic for small teams. On n8n Cloud, the limit is driven by your monthly executions, so higher-volume support teams typically move to a larger plan or self-host.

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

Often, yes. This workflow benefits from logic that’s a little more “real world”: branching decisions, checking Linear before creating issues, and shaping AI output into a structured result. n8n is strong here because you can self-host (so you’re not paying per tiny step) and you can keep the flow readable even when it grows. Zapier and Make can still work if you want a very simple “reaction creates ticket” rule and you’re fine doing the rewriting manually. If you’re unsure, Talk to an automation expert and you’ll get a straight recommendation.

Once ✅ becomes the only “intake” your team needs, Slack gets quieter and Linear gets cleaner. Set it up once, then let the workflow do the boring part.

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