

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.
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.
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
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.
Field Mapping
Map these fields between your apps.
| Field | API 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
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.
- 1Click 'Create New App' and choose 'From scratch'
- 2Name it 'Bug Tracker' and select your workspace
- 3Go to 'Event Subscriptions' in the left sidebar
- 4Toggle 'Enable Events' to On
- 5Add 'message.channels' under 'Subscribe to bot events'
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.
- 1Click the '+' button to add your first node
- 2Search for 'Slack' and select 'Slack Trigger'
- 3Choose 'Events API' from the dropdown
- 4Copy the webhook URL shown at the bottom
- 5Leave Authentication empty for now
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.
- 1Paste your n8n webhook URL into the Request URL field
- 2Wait for the green 'Verified' checkmark to appear
- 3Click 'Save Changes' at the bottom
- 4Go to 'Install App' in the left sidebar
- 5Click 'Install to Workspace' and authorize
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.
- 1Click the '+' after your Slack node
- 2Select 'Core' then 'IF'
- 3Set condition to 'String' contains
- 4Enter '{{ $json.event.text }}' in the first field
- 5Enter 'bug|feature request|π' in the second field
- 6Enable 'Regex' option
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.
- 1Connect the 'True' output of your IF node to a new Code node
- 2Set the mode to 'Run Once for All Items'
- 3Paste the bug parsing code into the editor
- 4Test with sample data to verify extraction
- 5Save the node configuration
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('.', '')}`
}
}];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.
- 1Add a Trello node connected to your Code node
- 2Select 'Create a Card' as the operation
- 3Click 'Create New' next to Credentials
- 4Go to trello.com/app-key in a new tab
- 5Copy your API key and generate a token
- 6Paste both into the n8n credential form
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.
- 1Select your target board from the Board dropdown
- 2Choose the appropriate list (like 'Bug Reports' or 'Backlog')
- 3Set Name to '{{ $json.title }}'
- 4Set Description to include reporter and original message
- 5Map labels based on priority level from Code node
- 6Set Due Date if priority is 'Critical'
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.
- 1Insert a Code node between your existing Code and Trello nodes
- 2Write logic to detect @mentions or categorize by keywords
- 3Map Slack user IDs to Trello member IDs
- 4Set default assignee for unmatched cases
- 5Return the appropriate Trello member ID
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.
- 1Add an Error Trigger node at the workflow level
- 2Connect it to a Slack node for error notifications
- 3Add a final Slack node after successful Trello creation
- 4Configure success message with Trello card URL
- 5Set the channel to match the original message channel
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.
- 1Click the 'Active' toggle in the top right
- 2Go to your Slack channel and post a test message
- 3Include bug keywords and @mentions to test all logic
- 4Check Trello for the created card
- 5Verify the success notification appears in Slack
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
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.
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.
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
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup