Intermediate~20 min setupCommunication & Project ManagementVerified April 2026
Slack logo
Trello logo

How to Process Bug Reports from Slack to Trello with n8n

Automatically convert Slack messages with bug reports or feature requests into organized Trello cards with proper labels and assignments.

Steps and UI details are based on platform versions at time of writing β€” check each platform for the latest interface.

Best for

Development teams handling 20+ bug reports per week who lose requests in Slack channels.

Not ideal for

Teams already using integrated project management tools like Linear or GitHub Issues.

Sync type

real-time

Use case type

routing

Real-World Example

πŸ’‘

A 12-person development team at a SaaS company gets bug reports scattered across #general, #support, and #product channels. Before automation, 30% of reported bugs never made it to their Trello board because developers forgot to manually create cards. Now every message tagged with πŸ› or containing 'feature request' becomes a properly categorized Trello card within 10 seconds.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

Each platform counts differently β€” Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.

Prices shown for annual billing. Based on published pricing as of April 2026.

Estimated ROI

1000

min saved/mo

$583

labor value/mo

Free

no platform cost

Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.

Implementation

Skip the setup

Import this workflow directly into n8n

Copy the pre-built n8n blueprint and paste it straight into n8n. All modules, filters, and field mappings are already configured β€” you just need to connect your accounts.

Before You Start

Make sure you have everything ready.

Slack workspace admin permissions to create apps and add bots
Trello board with appropriate lists set up for bug tracking
Public n8n instance or ngrok tunnel for webhook access
List of team member Slack-to-Trello ID mappings for assignments

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Card Title
Card Description
Bug Type Label
Reporter Name
Source Channel
Original Message URL
3 optional fieldsβ–Έ show
Priority Label
Assigned Member
Due Date

Step-by-Step Setup

1

api.slack.com > Your Apps > Create New App > Event Subscriptions

Create Slack App and Enable Events

Go to api.slack.com and create a new app for your workspace. Navigate to Event Subscriptions and toggle it on. You'll need this to receive real-time message events from your channels. Add the message.channels event under Bot Token Events.

  1. 1Click 'Create New App' and choose 'From scratch'
  2. 2Name it 'Bug Tracker' and select your workspace
  3. 3Go to 'Event Subscriptions' in the left sidebar
  4. 4Toggle 'Enable Events' to On
  5. 5Add 'message.channels' under 'Subscribe to bot events'
βœ“ What you should see: You should see 'message.channels' listed under Bot Token Events with a green checkmark.
⚠
Common mistake β€” Don't add the Request URL yet - you'll get that from n8n in the next step.
2

n8n Dashboard > + New Workflow > Add Node > Slack

Set Up n8n Slack Webhook Trigger

Create a new workflow in n8n and add a Slack trigger node. Choose 'Events API' as the trigger type. Copy the webhook URL that n8n generates - you'll paste this back into Slack's Event Subscriptions page as the Request URL.

  1. 1Click the '+' button to add your first node
  2. 2Search for 'Slack' and select 'Slack Trigger'
  3. 3Choose 'Events API' from the dropdown
  4. 4Copy the webhook URL shown at the bottom
  5. 5Leave Authentication empty for now
βœ“ What you should see: You should see a webhook URL starting with your n8n domain followed by /webhook/slack.
⚠
Common mistake β€” Save the workflow first or the webhook URL won't be active when Slack tries to verify it.
n8n
+
click +
search apps
Slack
SL
Slack
Set Up n8n Slack Webhook Tri…
Slack
SL
module added
3

api.slack.com > Your App > Event Subscriptions > Request URL

Connect Slack Events to n8n Webhook

Return to your Slack app settings and paste the n8n webhook URL into the Request URL field. Slack will send a verification challenge to confirm the connection is working. Click 'Save Changes' to activate the event subscription.

  1. 1Paste your n8n webhook URL into the Request URL field
  2. 2Wait for the green 'Verified' checkmark to appear
  3. 3Click 'Save Changes' at the bottom
  4. 4Go to 'Install App' in the left sidebar
  5. 5Click 'Install to Workspace' and authorize
βœ“ What you should see: The Request URL field shows 'Verified βœ“' and your bot token appears under OAuth & Permissions.
⚠
Common mistake β€” If verification fails, check that your n8n instance is publicly accessible and the workflow is saved.
4

Workflow Canvas > + Add Node > Core > IF

Add Message Filtering Logic

Add an IF node after the Slack trigger to filter messages. Set it to only process messages containing bug-related keywords or specific emoji reactions. This prevents every channel message from creating Trello cards.

  1. 1Click the '+' after your Slack node
  2. 2Select 'Core' then 'IF'
  3. 3Set condition to 'String' contains
  4. 4Enter '{{ $json.event.text }}' in the first field
  5. 5Enter 'bug|feature request|πŸ›' in the second field
  6. 6Enable 'Regex' option
βœ“ What you should see: The IF node should show 'True' and 'False' output paths with your regex pattern configured.
⚠
Common mistake β€” Test with actual Slack messages first - emoji reactions come through differently than typed emoji.
Slack
SL
trigger
filter
Condition
matches criteria?
yes β€” passes through
no β€” skipped
Trello
TR
notified
5

Workflow Canvas > + Add Node > Core > Code

Extract Bug Details with Code Node

Add a Code node to parse the Slack message and extract structured information. This node will identify bug priority, affected feature, and reporter details from the message text using regex patterns and string manipulation.

  1. 1Connect the 'True' output of your IF node to a new Code node
  2. 2Set the mode to 'Run Once for All Items'
  3. 3Paste the bug parsing code into the editor
  4. 4Test with sample data to verify extraction
  5. 5Save the node configuration
βœ“ What you should see: The Code node should output structured JSON with priority, title, description, and reporter fields.
⚠
Common mistake β€” Remember that Slack user IDs in messages look like <@U1234567> and need to be cleaned for display.

Add this code to your first Code node to intelligently parse bug reports and extract structured data. Paste it in the JavaScript editor and it will handle priority detection, user mention parsing, and title extraction.

JavaScript β€” Code Nodeconst message = $input.all()[0].json.event.text;
β–Έ Show code
const message = $input.all()[0].json.event.text;
const user = $input.all()[0].json.event.user;
const channel = $input.all()[0].json.event.channel;

... expand to see full code

const message = $input.all()[0].json.event.text;
const user = $input.all()[0].json.event.user;
const channel = $input.all()[0].json.event.channel;
const timestamp = $input.all()[0].json.event.ts;

// Extract priority from keywords
let priority = 'medium';
if (message.toLowerCase().includes('critical') || message.toLowerCase().includes('urgent')) {
  priority = 'critical';
} else if (message.toLowerCase().includes('high priority') || message.includes('πŸ”₯')) {
  priority = 'high';
}

// Determine bug type
let bugType = 'bug';
if (message.toLowerCase().includes('feature request') || message.toLowerCase().includes('enhancement')) {
  bugType = 'feature-request';
}

// Extract title (first sentence or up to first line break)
let title = message.split('\n')[0];
if (title.length > 100) {
  title = title.substring(0, 97) + '...';
}

// Clean emoji and mentions from title
title = title.replace(/[πŸ›πŸ”₯]/g, '').replace(/<@\w+>/g, '').trim();

// Extract mentions
const mentions = message.match(/<@(\w+)>/g) || [];
const cleanMentions = mentions.map(m => m.replace(/<@|>/g, ''));

// User mapping (customize for your team)
const userMap = {
  'U1234567': 'sarah-johnson',
  'U2345678': 'mike-chen',
  'U3456789': 'john-smith'
};

return [{
  json: {
    title: title,
    description: `Reported by ${userMap[user] || 'Unknown'} from Slack\n\n${message}`,
    priority: priority,
    bugType: bugType,
    reporter: userMap[user] || user,
    mentions: cleanMentions,
    sourceChannel: channel,
    timestamp: timestamp,
    slackUrl: `https://yourworkspace.slack.com/archives/${channel}/p${timestamp.replace('.', '')}`
  }
}];
6

Workflow Canvas > + Add Node > Trello > Create Card

Set Up Trello Authentication

Add a Trello node and configure authentication. You'll need to generate an API key and token from Trello's developer portal. Go to trello.com/app-key to get your key, then generate a token with read/write permissions.

  1. 1Add a Trello node connected to your Code node
  2. 2Select 'Create a Card' as the operation
  3. 3Click 'Create New' next to Credentials
  4. 4Go to trello.com/app-key in a new tab
  5. 5Copy your API key and generate a token
  6. 6Paste both into the n8n credential form
βœ“ What you should see: Your Trello credentials should show 'Connection tested successfully' with a green checkmark.
⚠
Common mistake β€” Trello tokens expire after 30 days by default - generate one with no expiration for production use.
7

Trello Node > Parameters

Map Bug Data to Trello Card Fields

Configure the Trello node to map your parsed bug information to card fields. Set the board ID, list ID, card name, description, and labels based on the extracted data from your Code node. Use the bug priority to determine label colors.

  1. 1Select your target board from the Board dropdown
  2. 2Choose the appropriate list (like 'Bug Reports' or 'Backlog')
  3. 3Set Name to '{{ $json.title }}'
  4. 4Set Description to include reporter and original message
  5. 5Map labels based on priority level from Code node
  6. 6Set Due Date if priority is 'Critical'
βœ“ What you should see: All field mappings should show green checkmarks with no validation errors.
⚠
Common mistake β€” Board and list IDs are required - if dropdowns don't populate, check your Trello credentials have board access.
Slack fields
text
user
channel
ts
thread_ts
available as variables:
1.props.text
1.props.user
1.props.channel
1.props.ts
1.props.thread_ts
8

Workflow Canvas > + Add Node > Core > Code

Add Team Member Assignment Logic

Add another Code node to determine card assignments based on bug category or mention patterns. Parse @mentions from the original Slack message or use keyword matching to assign cards to specific team members automatically.

  1. 1Insert a Code node between your existing Code and Trello nodes
  2. 2Write logic to detect @mentions or categorize by keywords
  3. 3Map Slack user IDs to Trello member IDs
  4. 4Set default assignee for unmatched cases
  5. 5Return the appropriate Trello member ID
βœ“ What you should see: The Code node should output a valid Trello member ID that gets mapped to the card assignment.
⚠
Common mistake β€” Slack and Trello user IDs are completely different - you need to maintain a mapping dictionary.
9

Workflow Canvas > Add Trigger > Error Trigger

Configure Error Handling and Notifications

Add an Error Trigger node and a Slack notification back to the original channel when cards are successfully created. This confirms to reporters that their bug was captured and provides the Trello card link.

  1. 1Add an Error Trigger node at the workflow level
  2. 2Connect it to a Slack node for error notifications
  3. 3Add a final Slack node after successful Trello creation
  4. 4Configure success message with Trello card URL
  5. 5Set the channel to match the original message channel
βœ“ What you should see: Both success and error notification nodes should be properly configured with channel targeting.
⚠
Common mistake β€” Error notifications will fire on any node failure - make them generic enough to be useful without being spammy.
10

Workflow Canvas > Active Toggle > Test

Test and Deploy the Workflow

Activate your workflow and test it with real Slack messages. Send a test bug report in a monitored channel and verify the complete flow: message detection, parsing, Trello card creation, and confirmation notification.

  1. 1Click the 'Active' toggle in the top right
  2. 2Go to your Slack channel and post a test message
  3. 3Include bug keywords and @mentions to test all logic
  4. 4Check Trello for the created card
  5. 5Verify the success notification appears in Slack
βœ“ What you should see: A properly formatted Trello card appears with correct labels, assignment, and a Slack confirmation message.
⚠
Common mistake β€” Test in a private channel first - production testing will create real cards and notify real team members.
n8n
β–Ά Run once
executed
βœ“
Slack
βœ“
Trello
Trello
πŸ”” notification
received

Going live

Production Checklist

Before you turn this on for real, confirm each item.

Troubleshooting

Common errors and how to fix them.

Frequently Asked Questions

Common questions about this workflow.

Analysis

VerdictWhy n8n for this workflow

Use n8n for this if your team wants complete control over the message parsing logic and you need custom field transformations that visual automation tools can't handle. The Code nodes let you build sophisticated text analysis and user mapping that would take 5+ nodes in Zapier. Skip n8n if you want something working in 10 minutes without any code - Zapier's Slack-to-Trello templates are faster for basic setups.

Cost

This workflow costs virtually nothing to run. Each bug report triggers one execution with 3-4 nodes, so at 50 reports per month you'll use 200 executions total. n8n Cloud starts at $20/month for 5,000 executions. Self-hosted n8n is completely free but requires server management. Zapier would cost $30/month for the same volume on their Professional plan.

Tradeoffs

Zapier has cleaner Slack parsing with pre-built formatters that extract @mentions and emoji automatically - you won't need custom regex. Make offers better visual debugging when your parsing logic breaks, and their Trello integration includes more advanced features like custom field mapping. Power Automate has superior error handling with built-in retry policies and dead letter queues. But n8n wins on flexibility - you can implement complex routing rules, maintain user mapping databases, and add AI analysis nodes that other platforms can't match.

You'll hit Slack's event API quirks where thread replies and message edits create duplicate triggers. Trello's member lookup is case-sensitive and breaks silently if IDs don't match exactly. Rate limiting kicks in at 300 API calls per 10 seconds, which you'll hit if multiple people report bugs simultaneously. The webhook verification fails randomly on server restarts, requiring you to re-save the Request URL in Slack's app settings.

Ideas for what to build next

  • β†’
    Add Status Updates β€” Set up reverse sync so Trello card status changes post updates back to the original Slack thread.
  • β†’
    Smart Routing β€” Use AI text analysis to automatically route different bug types to specialized team boards or lists.
  • β†’
    Weekly Digest β€” Create a scheduled workflow that posts weekly summaries of bug resolution rates and top reporters to #dev-team.

Related guides

Was this guide helpful?
← Slack + Trello overviewn8n profile β†’