

How to Create Trello Cards from Slack Messages with n8n
Automatically create Trello cards when team members react with specific emojis or use keywords in Slack channels.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Teams who need to capture action items and decisions from Slack discussions without manual copy-paste.
Not ideal for
Teams that prefer batch processing of messages or need complex approval workflows before card creation.
Sync type
real-timeUse case type
routingReal-World Example
A 25-person product team uses this to turn feature requests from #customer-feedback into Trello cards on their roadmap board. When someone reacts with 📝 to a message, n8n creates a card with the message content, author, and channel context. Before automation, product managers manually copied 15-20 requests weekly and lost context switching between apps.
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 Name | ||
| Board ID | ||
| List ID | ||
5 optional fields▸ show
| Card Description | |
| Message Author | |
| Channel Name | |
| Message Timestamp | |
| Labels |
Step-by-Step Setup
api.slack.com > Your Apps > Create New App
Create Slack App and Get Webhook URL
Go to api.slack.com and create a new app for your workspace. You'll need this app to listen for message events and reactions. Set up the Event Subscriptions feature to send data to n8n when specific events happen in your channels.
- 1Click 'Create New App' and choose 'From scratch'
- 2Enter app name like 'Trello Card Creator' and select your workspace
- 3Go to 'Event Subscriptions' in the left sidebar
- 4Toggle 'Enable Events' to On
n8n > Workflows > + > Webhook
Set Up n8n Webhook Trigger
Create a new workflow in n8n and add a Webhook node as your trigger. This will generate the URL you need for Slack's Event Subscriptions. Configure it to accept POST requests from Slack's event system.
- 1Click the + button to create a new workflow
- 2Add a Webhook node from the trigger section
- 3Set HTTP Method to POST
- 4Copy the Production URL from the webhook settings
api.slack.com > Your App > Event Subscriptions
Configure Slack Event Subscriptions
Return to your Slack app configuration and paste the n8n webhook URL into the Request URL field. Add the specific events you want to monitor - reaction_added for emoji triggers or message.channels for keyword detection.
- 1Paste your n8n webhook URL into the Request URL field
- 2Wait for the green 'Verified' checkmark to appear
- 3Scroll down to 'Subscribe to bot events'
- 4Add 'reaction_added' and 'message.channels' events
- 5Click 'Save Changes' at the bottom
This code snippet adds smart message parsing to extract action items and priority levels from Slack messages before creating Trello cards. Paste it into a Function node between your Slack message retrieval and Trello card creation.
JavaScript — Code Node// Extract priority and clean message content▸ Show code
// Extract priority and clean message content const message = $input.first().json; const messageText = message.text || '';
... expand to see full code
// Extract priority and clean message content
const message = $input.first().json;
const messageText = message.text || '';
const user = message.user || 'Unknown';
const channel = $json.event.item.channel;
// Detect priority keywords
let priority = 'normal';
if (messageText.toLowerCase().includes('urgent') || messageText.toLowerCase().includes('asap')) {
priority = 'high';
} else if (messageText.toLowerCase().includes('nice to have') || messageText.toLowerCase().includes('someday')) {
priority = 'low';
}
// Extract action items (sentences starting with action words)
const actionWords = ['should', 'need to', 'must', 'have to', 'let\'s', 'we could'];
let actionItem = messageText;
for (const word of actionWords) {
if (messageText.toLowerCase().includes(word)) {
const sentences = messageText.split('.');
const actionSentence = sentences.find(s => s.toLowerCase().includes(word));
if (actionSentence) {
actionItem = actionSentence.trim();
break;
}
}
}
// Create enhanced card data
return {
json: {
cardName: `[${priority.toUpperCase()}] ${actionItem.substring(0, 50)}`,
cardDescription: `**Original Message:** ${messageText}\n\n**From:** ${user}\n**Channel:** ${channel}\n**Priority:** ${priority}\n**Created:** ${new Date().toISOString()}`,
priority: priority,
labels: priority === 'high' ? ['urgent'] : [],
dueDate: priority === 'high' ? new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString() : null
}
};api.slack.com > Your App > OAuth & Permissions
Add OAuth Scopes and Install App
Your Slack app needs specific permissions to read messages and reactions. Add the required OAuth scopes, then install the app to your workspace to generate the bot token you'll use in n8n.
- 1Go to 'OAuth & Permissions' in the left sidebar
- 2Scroll to 'Scopes' and add 'channels:history' and 'reactions:read'
- 3Click 'Install to Workspace' at the top
- 4Authorize the app in the popup window
- 5Copy the 'Bot User OAuth Token' that starts with xoxb-
n8n > Credentials > + > Trello API
Set Up Trello Authentication
Create credentials for Trello in n8n by getting your API key and token from Trello's developer portal. You'll need these to create cards and access your boards programmatically.
- 1Go to trello.com/app-key to get your API key
- 2Click the Token link to generate an access token
- 3Return to n8n and click 'Create New Credential'
- 4Select 'Trello API' and paste your key and token
- 5Test the connection and save
Workflow > + > Logic > IF
Add Message Filtering Logic
Add an IF node after your webhook to filter incoming Slack events. You want to process only reaction_added events with specific emojis or message events containing trigger keywords. This prevents your workflow from firing on every Slack message.
- 1Add an IF node after your webhook trigger
- 2Set condition 1: event.type equals 'reaction_added'
- 3Add condition 2: event.reaction equals 'memo' (for 📝 emoji)
- 4Set the logic to OR between conditions
- 5Connect the True output to continue the workflow
Workflow > + > Regular Nodes > Slack
Get Original Message Content
When someone reacts to a message, Slack only sends the reaction event - not the original message text. Add a Slack node to fetch the full message content using the channel and timestamp from the reaction event.
- 1Add a Slack node after your IF condition
- 2Choose 'Get Message' operation
- 3Set Channel to {{$json.event.item.channel}}
- 4Set Timestamp to {{$json.event.item.ts}}
- 5Use your Slack bot credentials
Workflow > + > Regular Nodes > Trello
Configure Trello Card Creation
Add a Trello node to create new cards with the message content. Map the Slack message text to the card description, use the original message author for context, and set the appropriate board and list where cards should appear.
- 1Add a Trello node after your Slack message node
- 2Choose 'Create a Card' operation
- 3Select your target board from the dropdown
- 4Choose the list where new cards should appear
- 5Set card name to a combination of channel and user info
Trello Node > Parameters
Map Slack Data to Card Fields
Configure the card fields to pull relevant information from the Slack message. Set up the card name, description, and any labels or due dates based on the message content and context from your Slack channel.
- 1Set Card Name to 'Action: {{$node["Slack"].json["text"].substring(0, 50)}}'
- 2Set Description to include full message text and channel context
- 3Add the message author using {{$node["Slack"].json["user"]}}
- 4Include channel name with {{$json.event.item.channel}}
- 5Set any default labels for Slack-created cards
Workflow > Save > Activate
Test and Activate Workflow
Save your workflow and activate it, then test the integration by going to Slack and reacting to a message with the 📝 emoji. Check that the card appears in your designated Trello board with the correct information.
- 1Click Save in the top right of your workflow
- 2Toggle the Active switch to enable the workflow
- 3Go to a Slack channel where your bot is invited
- 4React to any message with the 📝 emoji
- 5Check your Trello board for the new card
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 you want granular control over message parsing and card formatting. The Function node lets you extract priority levels, clean up message content, and set dynamic due dates based on keywords. You can build complex routing logic that creates cards in different boards based on channel or content. Skip n8n if you just need basic message-to-card conversion without custom logic - Zapier handles the simple version faster.
Real math: Each message reaction triggers 3 API calls (Slack message fetch, optional user lookup, Trello card creation). At 50 reactions per month, you'll use 150 executions monthly. n8n cloud costs $20/month for 2,500 executions. Zapier charges $20/month but only includes 750 tasks, making n8n significantly cheaper for teams with active Slack channels.
Zapier wins on setup speed - their Slack integration auto-populates channel lists and handles authentication with fewer clicks. Make offers better built-in text parsing tools for extracting action items from messages without custom code. Power Automate integrates naturally with Microsoft Teams if that's your primary chat platform. Pipedream gives you more advanced async processing if you need to batch multiple reactions before creating cards. But n8n's Function nodes make it the best choice for complex message analysis and conditional card routing that the visual-only platforms can't handle.
Things you'll hit: Slack's challenge verification fails if your n8n webhook isn't active when you save Event Subscriptions - always activate first. User mentions in messages come through as <@U1234567> format and need resolution to readable names. Long message threads create massive card descriptions that break Trello's field limits, so truncate at 1,000 characters. Rate limiting kicks in around 100 cards per hour per Trello board.
Ideas for what to build next
- →Add bidirectional sync — Set up another workflow to update Slack threads when Trello cards are completed or moved to different lists.
- →Implement smart routing — Create cards in different Trello boards based on the source Slack channel or message content keywords.
- →Build digest notifications — Send daily summaries to Slack showing all cards created from that channel's messages.
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