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

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

Use case type

notification

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

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

Slack workspace admin rights to install Power Automate app
OpenAI API account with available credits ($5+ recommended)
Microsoft 365 license with Power Automate included
Permission to add reactions in target Slack channels

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Channel
Thread timestamp
Messages
Modelmodel
Max tokensmax_tokens
System promptmessages[0].content
1 optional fieldβ–Έ show
User

Step-by-Step Setup

1

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.

  1. 1Click 'My flows' in the left navigation
  2. 2Select 'New flow' button
  3. 3Choose 'Automated cloud flow'
  4. 4Type 'Thread Summarizer' as flow name
  5. 5Search for 'Slack' in trigger search box
βœ“ What you should see: You should see the Slack connector options with trigger choices like 'When a reaction is added to a message'.
2

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

  1. 1Click 'When a reaction is added to a message'
  2. 2Click 'Sign in' and authorize Slack access
  3. 3Select your Slack workspace from dropdown
  4. 4Set Channel field to 'Any channel'
  5. 5Enter 'πŸ“' in the Reaction field
βœ“ What you should see: The trigger shows your Slack workspace name with a green checkmark and the memo emoji in the reaction field.
⚠
Common mistake β€” The reaction field is case-sensitive and must be the actual emoji character, not :memo: text.
Power Automate
+
click +
search apps
OpenAI
OP
OpenAI
Configure Slack reaction tri…
OpenAI
OP
module added
3

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.

  1. 1Click 'New step' button
  2. 2Search for 'Slack' in the connector search
  3. 3Select 'Get messages from a channel'
  4. 4Click in Channel field and select 'Channel' from dynamic content
  5. 5Set Message timestamp to 'Thread timestamp'
βœ“ What you should see: The step shows Channel and Thread timestamp fields populated with dynamic content tags from the trigger.
⚠
Common mistake β€” Use 'Thread timestamp' not 'Timestamp' - this ensures you get the entire thread, not just one message.
4

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.

  1. 1Click 'New step' and search 'Data Operation'
  2. 2Select 'Compose' action
  3. 3Click in the Inputs field
  4. 4Select 'Expression' tab
  5. 5Enter the message parsing expression
βœ“ What you should see: The Compose step shows your expression in the Inputs field with proper syntax highlighting.
⚠
Common mistake β€” Power Automate's JSON parsing can be temperamental with Slack's nested message structure - test thoroughly.
5

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.

  1. 1Click 'New step' and search for 'HTTP'
  2. 2Select 'HTTP' action
  3. 3Set Method to 'POST'
  4. 4Enter 'https://api.openai.com/v1/chat/completions' as URI
  5. 5Add Authorization header with your API key
βœ“ What you should see: The HTTP step shows POST method with the OpenAI API endpoint and Authorization header configured.
⚠
Common mistake β€” Store your OpenAI API key in Azure Key Vault or as a secure environment variable - never hardcode it in the flow.
6

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.

  1. 1Click in the Body field of HTTP step
  2. 2Select 'Expression' tab
  3. 3Build JSON object with model and messages
  4. 4Set system prompt for summarization
  5. 5Use Compose output as user content
βœ“ What you should see: The Body shows properly formatted JSON with your system prompt and dynamic content for the thread messages.
7

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.

  1. 1Add 'Parse JSON' step
  2. 2Set Content to HTTP response body
  3. 3Click 'Generate from sample' for schema
  4. 4Paste a sample OpenAI API response
  5. 5Verify the schema includes choices array
βœ“ What you should see: Parse JSON shows the OpenAI response schema with choices, message, and content fields available as dynamic content.
⚠
Common mistake β€” OpenAI responses can vary in structure - always include error handling for when choices array is empty.
8

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.

  1. 1Search for Slack connector
  2. 2Select 'Post message to a channel'
  3. 3Set Channel to trigger's Channel value
  4. 4Format message with summary prefix
  5. 5Set Thread timestamp from trigger
βœ“ What you should see: The Slack post step shows your channel, formatted message with OpenAI summary, and thread timestamp for proper threading.
9

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.

  1. 1Click 'Save' at the top right
  2. 2Go to Slack and add πŸ“ reaction to any message
  3. 3Return to Power Automate
  4. 4Click 'Run history' to view execution
  5. 5Check each step for green success indicators
βœ“ What you should see: Run history shows green checkmarks for all steps and the summary appears as a reply in your Slack thread.
⚠
Common mistake β€” First runs often fail due to connection timeouts - OpenAI API calls can take 10-15 seconds during peak hours.

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'], '<@', '@'),
          '>', ''
        ),
        '&lt;', '<'
      )
    )
  ),
  '\n'
)
Power Automate
β–Ά Test flow
executed
βœ“
OpenAI
βœ“
Slack
Slack
πŸ”” 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 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.

Cost

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.

Tradeoffs

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

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