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

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-time

Use case type

routing

Real-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.

/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.

Admin access to create Slack apps in your workspace
Trello account with edit permissions on target boards
n8n instance running with webhook capabilities
Slack channels where the bot will be invited to monitor messages

Field Mapping

Map these fields between your apps.

FieldAPI 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

1

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.

  1. 1Click 'Create New App' and choose 'From scratch'
  2. 2Enter app name like 'Trello Card Creator' and select your workspace
  3. 3Go to 'Event Subscriptions' in the left sidebar
  4. 4Toggle 'Enable Events' to On
What you should see: You should see an empty 'Request URL' field that needs a webhook endpoint.
Common mistake — Don't add the Request URL yet - you need to create the n8n workflow first to get the webhook endpoint.
2

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.

  1. 1Click the + button to create a new workflow
  2. 2Add a Webhook node from the trigger section
  3. 3Set HTTP Method to POST
  4. 4Copy the Production URL from the webhook settings
What you should see: You should see a webhook URL ending with /webhook/[random-string] that you can copy.
Common mistake — Copy the webhook URL carefully — it expires if you regenerate it, and any scenarios using the old URL will silently stop working.
n8n
+
click +
search apps
Slack
SL
Slack
Set Up n8n Webhook Trigger
Slack
SL
module added
3

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.

  1. 1Paste your n8n webhook URL into the Request URL field
  2. 2Wait for the green 'Verified' checkmark to appear
  3. 3Scroll down to 'Subscribe to bot events'
  4. 4Add 'reaction_added' and 'message.channels' events
  5. 5Click 'Save Changes' at the bottom
What you should see: Both events should appear in your subscriptions list with green verified status.
Common mistake — Slack will send a challenge request to verify your webhook - make sure your n8n workflow is active before saving.

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
  }
};
4

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.

  1. 1Go to 'OAuth & Permissions' in the left sidebar
  2. 2Scroll to 'Scopes' and add 'channels:history' and 'reactions:read'
  3. 3Click 'Install to Workspace' at the top
  4. 4Authorize the app in the popup window
  5. 5Copy the 'Bot User OAuth Token' that starts with xoxb-
What you should see: You should see a bot token starting with 'xoxb-' that you can copy for n8n authentication.
Common mistake — The bot token only appears after installation - don't skip the workspace installation step.
5

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.

  1. 1Go to trello.com/app-key to get your API key
  2. 2Click the Token link to generate an access token
  3. 3Return to n8n and click 'Create New Credential'
  4. 4Select 'Trello API' and paste your key and token
  5. 5Test the connection and save
What you should see: Green 'Connection tested successfully' message appears in n8n.
Common mistake — Trello tokens expire after 30 days by default - choose 'never' for expiration if you want permanent access.
6

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.

  1. 1Add an IF node after your webhook trigger
  2. 2Set condition 1: event.type equals 'reaction_added'
  3. 3Add condition 2: event.reaction equals 'memo' (for 📝 emoji)
  4. 4Set the logic to OR between conditions
  5. 5Connect the True output to continue the workflow
What you should see: IF node shows two conditions connected with OR logic, filtering for memo reactions.
Common mistake — Use the emoji name (memo) not the actual emoji character in the condition - Slack sends the text version.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Trello
TR
notified
7

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.

  1. 1Add a Slack node after your IF condition
  2. 2Choose 'Get Message' operation
  3. 3Set Channel to {{$json.event.item.channel}}
  4. 4Set Timestamp to {{$json.event.item.ts}}
  5. 5Use your Slack bot credentials
What you should see: Slack node shows the message retrieval configuration with dynamic channel and timestamp fields.
Common mistake — Connect this node only to the True output of your IF node - False output should end the workflow.
8

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.

  1. 1Add a Trello node after your Slack message node
  2. 2Choose 'Create a Card' operation
  3. 3Select your target board from the dropdown
  4. 4Choose the list where new cards should appear
  5. 5Set card name to a combination of channel and user info
What you should see: Trello node shows your board and list selections with empty card fields ready for mapping.
Common mistake — If your boards don't appear in the dropdown, check that your Trello credentials have access to the workspace containing those boards.
9

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.

  1. 1Set Card Name to 'Action: {{$node["Slack"].json["text"].substring(0, 50)}}'
  2. 2Set Description to include full message text and channel context
  3. 3Add the message author using {{$node["Slack"].json["user"]}}
  4. 4Include channel name with {{$json.event.item.channel}}
  5. 5Set any default labels for Slack-created cards
What you should see: Card fields show dynamic expressions pulling message text, user info, and channel context from Slack.
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
10

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.

  1. 1Click Save in the top right of your workflow
  2. 2Toggle the Active switch to enable the workflow
  3. 3Go to a Slack channel where your bot is invited
  4. 4React to any message with the 📝 emoji
  5. 5Check your Trello board for the new card
What you should see: New Trello card appears within 10-15 seconds with message content, author, and channel information.
Common mistake — Your Slack bot must be invited to the channel where you're testing - add it with /invite @your-bot-name first.
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 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.

Cost

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.

Tradeoffs

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 syncSet up another workflow to update Slack threads when Trello cards are completed or moved to different lists.
  • Implement smart routingCreate cards in different Trello boards based on the source Slack channel or message content keywords.
  • Build digest notificationsSend daily summaries to Slack showing all cards created from that channel's messages.

Related guides

Was this guide helpful?
Slack + Trello overviewn8n profile →