Intermediate~20 min setupAI & CommunicationVerified April 2026
OpenAI logo
Slack logo

How to Create Thread Summaries with OpenAI and Slack via N8n

Automatically generate AI summaries of long Slack threads when users react with a πŸ“ emoji.

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

Best for

Teams that want customizable thread summarization with control over message formatting and filtering logic.

Not ideal for

Teams needing instant summaries or those without JavaScript knowledge for customization.

Sync type

real-time

Use case type

notification

Real-World Example

πŸ’‘

A 25-person product team uses this to summarize long feature discussion threads that span hours across timezones. Before automation, team leads manually read through 50+ message threads each morning to catch up on decisions made overnight. Now anyone can react with πŸ“ to get an instant AI summary, saving 15-20 minutes of daily reading time.

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 access to install the N8n bot
OpenAI API account with available credits
N8n instance (cloud or self-hosted) with Slack and OpenAI nodes
Channels where the bot should work must add the N8n bot as a member

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Channel IDchannel
Message Timestampts
Reaction Namereaction
Thread Messagesmessages
Summary Contentcontent
Thread Reply Timestampthread_ts

Step-by-Step Setup

1

Workflow Canvas > + > Slack Trigger

Add Slack Trigger Node

Set up N8n to listen for new emoji reactions in your Slack workspace. This will fire every time someone adds any emoji to a message.

  1. 1Click the + button to add a new node
  2. 2Search for 'Slack' and select 'Slack Trigger'
  3. 3Choose 'On Reaction Added' from the event dropdown
  4. 4Click 'Create New Credential' to connect your Slack workspace
βœ“ What you should see: You should see a Slack Trigger node with 'On Reaction Added' selected and a credential connection prompt.
n8n
+
click +
search apps
OpenAI
OP
OpenAI
Add Slack Trigger Node
OpenAI
OP
module added
2

Slack Trigger > Credentials > OAuth2 API

Connect Slack Workspace

Authenticate N8n with your Slack workspace using OAuth. This requires admin permissions to install the N8n bot.

  1. 1Click 'OAuth2 API' as the authentication method
  2. 2Click 'Connect my account' to open Slack OAuth
  3. 3Select your workspace and click 'Allow'
  4. 4Return to N8n and click 'Save' on the credential
βœ“ What you should see: Green 'Connected' status appears next to your Slack credential name.
⚠
Common mistake β€” The bot needs to be added to channels manually after setup β€” it won't see reactions in private channels it hasn't joined.
n8n settings
Connection
Choose a connection…Add
click Add
OpenAI
Log in to authorize
Authorize n8n
popup window
βœ“
Connected
green checkmark
3

Workflow Canvas > + > IF

Filter for Notebook Emoji

Add a filter to only process πŸ“ reactions, ignoring all other emoji. This prevents the workflow from firing on every thumbs up or checkmark.

  1. 1Add an IF node after the Slack Trigger
  2. 2Set condition to 'String' and 'Equal'
  3. 3In Value 1, select 'reaction' from the Slack trigger data
  4. 4In Value 2, type 'memo' (the emoji shortcode for πŸ“)
βœ“ What you should see: IF node shows 'reaction equals memo' with True and False output branches visible.
⚠
Common mistake β€” Use 'memo' not 'pencil' β€” Slack's internal name for πŸ“ is 'memo', not what you'd expect.
OpenAI
OP
trigger
filter
Condition
matches criteria?
yes β€” passes through
no β€” skipped
Slack
SL
notified
4

Workflow Canvas > + > Slack > Get Channel Messages

Get Thread Messages

Fetch all messages in the thread using Slack's conversations.replies API. This pulls the original message plus all replies in chronological order.

  1. 1Connect a Slack node to the IF node's True branch
  2. 2Set operation to 'Get Channel Messages'
  3. 3Map 'Channel' to the channel ID from the trigger
  4. 4Map 'Timestamp' to the message timestamp from trigger data
  5. 5Enable 'Return All' to get the complete thread
βœ“ What you should see: Slack node shows configuration for retrieving thread messages with all fields mapped from trigger data.
⚠
Common mistake β€” Map fields using the variable picker β€” don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
5

Workflow Canvas > + > Function

Format Thread Text

Combine all thread messages into a single text block for OpenAI. Add timestamps and user names to preserve context in the summary.

  1. 1Add a Function node after the Slack messages node
  2. 2Select 'Run Once for All Items' mode
  3. 3Paste the thread formatting code into the code editor
  4. 4Test the function to verify proper text concatenation
βœ“ What you should see: Function node processes all messages and outputs a single formatted text string with usernames and timestamps.
⚠
Common mistake β€” Set to 'Run Once for All Items' β€” the default 'Run Once per Item' will create separate summaries for each message.
6

Workflow Canvas > + > OpenAI > Credentials

Connect OpenAI API

Set up OpenAI credentials to access GPT models for summarization. You'll need an active OpenAI API account with available credits.

  1. 1Add an OpenAI node after the Function node
  2. 2Click 'Create New Credential' for OpenAI
  3. 3Paste your OpenAI API key from platform.openai.com
  4. 4Click 'Save' and test the connection
βœ“ What you should see: OpenAI credential shows 'Connected' status and the node is ready for configuration.
⚠
Common mistake β€” API keys from the old beta dashboard don't work β€” generate a new key from platform.openai.com/api-keys.
7

OpenAI > Chat > Message a model

Configure GPT Summarization

Set up the OpenAI node to summarize thread content using GPT-3.5 or GPT-4. Include specific instructions for thread context and summary length.

  1. 1Set Resource to 'Chat' and Operation to 'Message a model'
  2. 2Choose 'gpt-3.5-turbo' or 'gpt-4' as the model
  3. 3Set the system message: 'Summarize this Slack thread in 2-3 sentences'
  4. 4Map the user message to the formatted thread text from Function node
  5. 5Set max tokens to 150 for concise summaries
βœ“ What you should see: OpenAI node configured for chat completion with thread text as input and summarization prompt.
8

Workflow Canvas > + > Slack > Post Message

Post Summary to Thread

Send the AI summary back to the original Slack thread as a reply. This keeps the summary contextually linked to the conversation.

  1. 1Add another Slack node after OpenAI
  2. 2Set operation to 'Post Message'
  3. 3Map Channel to the original channel from trigger data
  4. 4Set Thread Timestamp to the original message timestamp
  5. 5Map message text to OpenAI's response content
  6. 6Add a prefix like 'πŸ“ Thread Summary: '
βœ“ What you should see: Slack node configured to reply in-thread with the AI summary prefixed by the notebook emoji.
⚠
Common mistake β€” Map Thread Timestamp to the parent message, not the reaction timestamp β€” otherwise it creates a new thread.
9

OpenAI Node > Settings > Continue on Fail

Add Error Handling

Configure the workflow to handle API failures gracefully. This prevents broken executions when OpenAI is down or rate-limited.

  1. 1Click the OpenAI node settings (gear icon)
  2. 2Set 'On Error' to 'Continue (using Error Output)'
  3. 3Connect the error output to a Slack node
  4. 4Configure error message: 'Sorry, couldn't summarize this thread right now. Try again in a few minutes.'
βœ“ What you should see: OpenAI node shows both success and error output connectors with error handling configured.
10

Workflow Header > Active Toggle

Test and Activate

Test the complete workflow with a real Slack thread and deploy it for your team. Start with a test channel before rolling out workspace-wide.

  1. 1Click 'Save' to save your workflow
  2. 2Toggle the workflow Active switch to On
  3. 3Go to a Slack thread and react with πŸ“
  4. 4Check N8n executions tab for successful completion
  5. 5Verify the summary appears in the Slack thread
βœ“ What you should see: Workflow shows 'Active' status and successfully processes test emoji reactions with AI summaries.
⚠
Common mistake β€” Test in a private channel first β€” once active, the bot will process every πŸ“ reaction across all channels it's in.

Drop this into an n8n Code node.

JavaScript β€” Code Node// Function node code to clean and format thread messages
β–Έ Show code
// Function node code to clean and format thread messages
const messages = $input.all();
const formatted = messages

... expand to see full code

// Function node code to clean and format thread messages
const messages = $input.all();
const formatted = messages
  .filter(msg => msg.json.user && !msg.json.bot_id)
  .map(msg => `${msg.json.user}: ${msg.json.text}`)
  .join('\n');

return [{ json: { thread_text: formatted } }];
n8n
β–Ά Run once
executed
βœ“
OpenAI
βœ“
Slack
Slack
πŸ”” notification
received

Scaling Beyond 100+ summaries/day+ Records

If your volume exceeds 100+ summaries/day records, apply these adjustments.

1

Implement Queue Node

Add N8n's Queue node between the trigger and OpenAI to prevent rate limit hits. Process summaries sequentially rather than parallel to stay within OpenAI's 60 requests per minute limit.

2

Cache Recent Summaries

Store summaries in N8n's memory or a database node to avoid re-summarizing the same thread. Check if a thread was summarized in the last hour before calling OpenAI again.

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 full control over the summarization logic and don't mind writing some JavaScript in the Function node. N8n's code nodes let you customize how thread messages are formatted and filtered before sending to OpenAI. You can add user mention handling, filter out bot messages, or format timestamps exactly how you want. Skip N8n and use Make instead if you need this running immediately β€” Make's Slack trigger has better real-time performance for emoji reactions.

Cost

This workflow uses about 2-3 N8n executions per summary (trigger + OpenAI call + Slack post). At 50 summaries per month, that's 150 executions monthly. N8n's Starter plan at $20/month includes 5,000 executions, so you're covered until you hit 800+ summaries monthly. OpenAI costs around $0.002 per summary with GPT-3.5-turbo. Make would cost $10.59/month for the same volume but includes more operations. Zapier starts at $29.99 and would be overkill for this use case.

Tradeoffs

Make handles Slack emoji reactions faster β€” usually under 10 seconds vs N8n's 30-60 second delay. Zapier's OpenAI integration includes built-in retry logic that N8n makes you build yourself. But N8n wins on customization. You can easily modify the Function node to filter out certain users, handle different emoji types, or format the summary with custom Slack blocks. Make's text formatting tools are more limited for complex thread processing.

OpenAI sometimes returns summaries that reference 'the conversation' instead of 'this thread' β€” train your prompt to be Slack-specific. Long threads over 100 messages will hit token limits and get truncated. The Function node needs error handling for threads with deleted messages or users who left the workspace. N8n's Slack trigger occasionally misses reactions during Slack maintenance windows, unlike Make's more robust webhook handling.

Ideas for what to build next

  • β†’
    Add Action Item Detection β€” Extend the workflow to identify and extract action items from threads, then create Notion tasks or Google Calendar events for follow-ups.
  • β†’
    Summary Digest Automation β€” Create a daily workflow that collects all thread summaries and posts a digest to a leadership channel, showing team discussion activity and key decisions.
  • β†’
    Multi-Language Support β€” Add language detection to the Function node and customize OpenAI prompts to summarize non-English threads in the original language or translate to English.

Related guides

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