

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-timeUse case type
notificationReal-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.
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 | ||
| Channel ID | channel | |
| Message Timestamp | ts | |
| Reaction Name | reaction | |
| Thread Messages | messages | |
| Summary Content | content | |
| Thread Reply Timestamp | thread_ts | |
Step-by-Step Setup
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.
- 1Click the + button to add a new node
- 2Search for 'Slack' and select 'Slack Trigger'
- 3Choose 'On Reaction Added' from the event dropdown
- 4Click 'Create New Credential' to connect your Slack workspace
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.
- 1Click 'OAuth2 API' as the authentication method
- 2Click 'Connect my account' to open Slack OAuth
- 3Select your workspace and click 'Allow'
- 4Return to N8n and click 'Save' on the credential
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.
- 1Add an IF node after the Slack Trigger
- 2Set condition to 'String' and 'Equal'
- 3In Value 1, select 'reaction' from the Slack trigger data
- 4In Value 2, type 'memo' (the emoji shortcode for π)
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.
- 1Connect a Slack node to the IF node's True branch
- 2Set operation to 'Get Channel Messages'
- 3Map 'Channel' to the channel ID from the trigger
- 4Map 'Timestamp' to the message timestamp from trigger data
- 5Enable 'Return All' to get the complete thread
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.
- 1Add a Function node after the Slack messages node
- 2Select 'Run Once for All Items' mode
- 3Paste the thread formatting code into the code editor
- 4Test the function to verify proper text concatenation
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.
- 1Add an OpenAI node after the Function node
- 2Click 'Create New Credential' for OpenAI
- 3Paste your OpenAI API key from platform.openai.com
- 4Click 'Save' and test the connection
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.
- 1Set Resource to 'Chat' and Operation to 'Message a model'
- 2Choose 'gpt-3.5-turbo' or 'gpt-4' as the model
- 3Set the system message: 'Summarize this Slack thread in 2-3 sentences'
- 4Map the user message to the formatted thread text from Function node
- 5Set max tokens to 150 for concise summaries
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.
- 1Add another Slack node after OpenAI
- 2Set operation to 'Post Message'
- 3Map Channel to the original channel from trigger data
- 4Set Thread Timestamp to the original message timestamp
- 5Map message text to OpenAI's response content
- 6Add a prefix like 'π Thread Summary: '
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.
- 1Click the OpenAI node settings (gear icon)
- 2Set 'On Error' to 'Continue (using Error Output)'
- 3Connect the error output to a Slack node
- 4Configure error message: 'Sorry, couldn't summarize this thread right now. Try again in a few minutes.'
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.
- 1Click 'Save' to save your workflow
- 2Toggle the workflow Active switch to On
- 3Go to a Slack thread and react with π
- 4Check N8n executions tab for successful completion
- 5Verify the summary appears in the Slack thread
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 } }];Scaling Beyond 100+ summaries/day+ Records
If your volume exceeds 100+ summaries/day records, apply these adjustments.
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.
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
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.
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.
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
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