

How to Thread Summarization with Power Automate
Automatically generate summaries of Slack threads using OpenAI's GPT models when someone reacts 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
Microsoft 365 teams who want AI summaries without installing third-party Slack bots
Not ideal for
Teams needing sub-5-second response times or processing 100+ threads daily
Sync type
real-timeUse case type
notificationReal-World Example
A 25-person product team uses this to summarize long feature discussions in Slack channels. When someone adds a π reaction to any message in a thread, OpenAI generates a 3-sentence summary and posts it back to the channel. This saves 15 minutes per discussion that would otherwise be spent scrolling through 30+ messages.
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 Power Automate
Copy the pre-built Power Automate blueprint and paste it straight into Power Automate. 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 | ||
| Thread timestamp | ||
| Messages | ||
| Model | model | |
| Max tokens | max_tokens | |
| System prompt | messages[0].content | |
1 optional fieldβΈ show
| User |
Step-by-Step Setup
My flows > New flow > Automated cloud flow
Create automated cloud flow
Navigate to make.powerautomate.com and sign in with your Microsoft account. Click 'My flows' in the left sidebar, then 'New flow' at the top. Select 'Automated cloud flow' from the dropdown. Name your flow 'Thread Summarizer' and search for 'Slack' in the trigger list.
- 1Click 'My flows' in the left navigation
- 2Select 'New flow' button
- 3Choose 'Automated cloud flow'
- 4Type 'Thread Summarizer' as flow name
- 5Search for 'Slack' in trigger search box
Triggers > Slack > When a reaction is added to a message
Configure Slack reaction trigger
Select 'When a reaction is added to a message' from the Slack triggers. You'll need to create a new connection to Slack by clicking 'Sign in' and authorizing Power Automate access. Choose your workspace from the dropdown. Set the Channel to 'Any channel' and Reaction to 'π' (memo emoji).
- 1Click 'When a reaction is added to a message'
- 2Click 'Sign in' and authorize Slack access
- 3Select your Slack workspace from dropdown
- 4Set Channel field to 'Any channel'
- 5Enter 'π' in the Reaction field
New step > Slack > Get messages from a channel
Add thread retrieval step
Click 'New step' below the trigger. Search for 'Slack' and select 'Get messages from a channel'. This action will fetch all messages in the thread. Set the Channel to the dynamic content 'Channel' from the trigger. Set the Message timestamp to 'Thread timestamp' from the trigger dynamic content.
- 1Click 'New step' button
- 2Search for 'Slack' in the connector search
- 3Select 'Get messages from a channel'
- 4Click in Channel field and select 'Channel' from dynamic content
- 5Set Message timestamp to 'Thread timestamp'
New step > Data Operation > Compose
Parse thread messages
Add another step and search for 'Data Operation'. Select 'Compose' to format the thread messages for OpenAI. In the Inputs field, you'll build an expression to combine all message text. Click the expression tab and enter a formula to concatenate the message texts with sender names.
- 1Click 'New step' and search 'Data Operation'
- 2Select 'Compose' action
- 3Click in the Inputs field
- 4Select 'Expression' tab
- 5Enter the message parsing expression
New step > HTTP
Connect to OpenAI
Add a new step and search for 'HTTP' since Power Automate doesn't have a native OpenAI connector. Select 'HTTP' action and configure it as a POST request to https://api.openai.com/v1/chat/completions. You'll need to add your OpenAI API key in the headers and format the request body as JSON.
- 1Click 'New step' and search for 'HTTP'
- 2Select 'HTTP' action
- 3Set Method to 'POST'
- 4Enter 'https://api.openai.com/v1/chat/completions' as URI
- 5Add Authorization header with your API key
HTTP > Body
Configure OpenAI request
In the HTTP step's Body field, create a JSON payload for the OpenAI API. Include the model (gpt-3.5-turbo), messages array with system and user prompts, and parameters like max_tokens. Use dynamic content from the Compose step as the user message containing the thread text.
- 1Click in the Body field of HTTP step
- 2Select 'Expression' tab
- 3Build JSON object with model and messages
- 4Set system prompt for summarization
- 5Use Compose output as user content
New step > Data Operation > Parse JSON
Parse OpenAI response
Add a 'Parse JSON' step from Data Operations. In the Content field, select 'body' from the HTTP response dynamic content. You'll need to provide a schema that matches OpenAI's response format. The key field is choices[0].message.content which contains the summary.
- 1Add 'Parse JSON' step
- 2Set Content to HTTP response body
- 3Click 'Generate from sample' for schema
- 4Paste a sample OpenAI API response
- 5Verify the schema includes choices array
New step > Slack > Post message to a channel
Post summary to Slack
Add a final Slack step 'Post message to a channel'. Use the same Channel from the trigger. In the message text, format the summary with context like 'Thread Summary:' followed by the parsed OpenAI content. Set Thread timestamp to reply in the same thread.
- 1Search for Slack connector
- 2Select 'Post message to a channel'
- 3Set Channel to trigger's Channel value
- 4Format message with summary prefix
- 5Set Thread timestamp from trigger
Save > Test > My flows > Run history
Test the flow
Save your flow and test it by going to any Slack channel and reacting to a message with the π emoji. Check the Flow run history in Power Automate to see if all steps executed successfully. Look for any errors in the HTTP request to OpenAI or the JSON parsing steps.
- 1Click 'Save' at the top right
- 2Go to Slack and add π reaction to any message
- 3Return to Power Automate
- 4Click 'Run history' to view execution
- 5Check each step for green success indicators
Add this expression to the Compose step to format thread messages with usernames and clean up Slack's formatting artifacts.
Copy this templatejoin(βΈ Show code
join(
map(
body('Get_messages_from_a_channel')?['messages'],... expand to see full code
join(
map(
body('Get_messages_from_a_channel')?['messages'],
concat(
item()?['user'], ': ',
replace(
replace(
replace(item()?['text'], '<@', '@'),
'>', ''
),
'<', '<'
)
)
),
'\n'
)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 Microsoft Power Automate for this if you're already in the Microsoft ecosystem and want thread summaries without installing third-party Slack apps. Power Automate handles the webhook triggers reliably and processes messages in real-time. The HTTP connector gives you full control over OpenAI API parameters. Skip this platform if you need sub-5-second response times - Pipedream handles OpenAI calls 3x faster.
Real math: Each summary costs 2 Power Automate actions (trigger + HTTP call) plus OpenAI usage. At 50 summaries/month, you'll use 100 actions from your included allocation. OpenAI costs $0.002 per summary with gpt-3.5-turbo, so $0.10/month total. Make costs $0 until 1,000 operations, making it cheaper for low-volume teams.
Make wins on conditional logic - you can easily check thread length before calling OpenAI and skip short conversations. Zapier's Formatter handles Slack message parsing better than Power Automate's expressions. n8n gives you proper JavaScript for complex text manipulation. Pipedream processes OpenAI responses 70% faster with native async handling. But Power Automate integrates seamlessly with Microsoft security policies and doesn't require learning new platforms.
You'll hit OpenAI rate limits at 60 requests/minute during busy periods. Slack's thread_ts field sometimes returns null for very old messages, breaking the flow. Power Automate's HTTP timeout of 2 minutes can trigger on long threads with gpt-4 - switch to gpt-3.5-turbo or add retry logic.
Ideas for what to build next
- βAdd sentiment analysis β Include thread sentiment in summaries by adding temperature parameter to OpenAI request and asking for emotional tone.
- βCreate digest mode β Schedule daily summaries of all π reactions from the past 24 hours into a dedicated channel.
- βSupport other reactions β Expand trigger to handle π for detailed analysis or β‘ for action item extraction using different OpenAI prompts.
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