

How to Clean Up Meeting Notes with Power Automate
Automatically format raw meeting notes pasted in Slack into structured notes with action items using OpenAI.
Steps and UI details are based on platform versions at time of writing β check each platform for the latest interface.
Best for
Teams that take messy meeting notes in Slack and need them formatted consistently with clear action items
Not ideal for
Teams that need meeting transcription from audio or want notes stored outside Slack
Sync type
real-timeUse case type
enrichmentReal-World Example
A 12-person marketing team pastes raw meeting notes into their #team-updates Slack channel after every standup. The bot detects notes, sends them to OpenAI for formatting, then posts back structured notes with attendees, key decisions, and action items. Before automation, someone spent 10 minutes after each meeting manually formatting notes.
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 | ||
| Message Text | ||
| Channel Name | ||
| Formatted Content | ||
3 optional fieldsβΈ show
| User Name | |
| Timestamp | |
| Model Used |
Step-by-Step Setup
My flows > + New flow > Automated cloud flow
Create automated cloud flow
Go 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 'Meeting Notes Cleanup' and search for Slack in the trigger list.
- 1Click 'My flows' in the left navigation
- 2Click the '+ New flow' button
- 3Select 'Automated cloud flow'
- 4Enter 'Meeting Notes Cleanup' as the flow name
- 5Search for 'Slack' in the trigger search box
Trigger > Slack > When a message is posted to a channel
Configure Slack message trigger
Select 'When a message is posted to a channel' trigger from Slack. You'll need to sign in to your Slack workspace. Choose the specific channel where meeting notes get posted. Set up a condition to only trigger when messages contain specific keywords like 'Meeting:' or 'Attendees:' to avoid processing every message.
- 1Click 'When a message is posted to a channel'
- 2Click 'Sign in' and authorize Power Automate to access Slack
- 3Select your workspace from the dropdown
- 4Choose the channel where notes are posted
- 5Click 'Show advanced options' and add keyword filters
Actions > Control > Condition
Add message content condition
Click '+ New step' and search for 'Condition' in the actions. Add a condition that checks if the message text contains your meeting note keywords. Use the 'contains' function with the message text from the Slack trigger. This prevents the flow from running on regular chat messages.
- 1Click '+ New step' below the Slack trigger
- 2Search for and select 'Condition'
- 3Click the left value box and select 'Text' from Slack dynamic content
- 4Set the condition to 'contains'
- 5Enter 'Meeting:' or your keyword in the right value box
Condition Yes > + Add an action > HTTP
Add OpenAI connection
In the 'Yes' branch of your condition, click '+ Add an action'. Search for 'HTTP' and select the HTTP action since OpenAI doesn't have a native Power Automate connector. You'll make a POST request to the OpenAI API endpoint. Set the method to POST and the URI to 'https://api.openai.com/v1/chat/completions'.
- 1Click '+ Add an action' in the Yes branch
- 2Search for 'HTTP' and select the HTTP action
- 3Set Method to 'POST'
- 4Enter 'https://api.openai.com/v1/chat/completions' as URI
- 5Click 'Show advanced options'
HTTP Action > Headers
Configure OpenAI API headers
In the HTTP action, add the required headers for OpenAI authentication. Add 'Content-Type' with value 'application/json' and 'Authorization' with value 'Bearer YOUR_API_KEY'. Replace YOUR_API_KEY with your actual OpenAI API key from platform.openai.com. Store the API key securely in a variable or use Azure Key Vault.
- 1Click 'Add new parameter' and select 'Headers'
- 2Add header 'Content-Type' with value 'application/json'
- 3Add header 'Authorization' with value 'Bearer sk-your-api-key'
- 4Replace 'sk-your-api-key' with your actual OpenAI key
- 5Consider using a variable for the API key
HTTP Action > Body
Build OpenAI request body
In the HTTP action Body field, create a JSON payload for OpenAI. Include the model (gpt-3.5-turbo), messages array with your formatting prompt, and the original Slack message text. The prompt should instruct GPT to format messy notes into structured sections with attendees, topics, decisions, and action items.
- 1Click in the Body text area
- 2Paste the JSON structure for OpenAI chat completion
- 3Set model to 'gpt-3.5-turbo'
- 4Insert the Slack message text using dynamic content
- 5Include clear formatting instructions in the system message
Actions > Data Operations > Parse JSON
Parse OpenAI response
Add a 'Parse JSON' action after the HTTP request to extract the formatted text from OpenAI's response. Click '+ New step', search for 'Parse JSON', and select it. In the Content field, select 'body' from the HTTP action. Generate the schema by using a sample OpenAI response or manually define it.
- 1Click '+ New step' after the HTTP action
- 2Search for and select 'Parse JSON'
- 3Click Content field and select 'body' from HTTP dynamic content
- 4Click 'Generate from sample' or enter the schema manually
- 5Include choices[0].message.content in your schema
Actions > Slack > Post message
Post formatted notes to Slack
Add another Slack action to post the cleaned-up notes back to the channel. Search for 'Post message' in Slack actions. Select the same channel as your trigger. In the message field, select the parsed content from OpenAI. Add a prefix like 'Formatted Notes:' to distinguish it from the original message.
- 1Click '+ New step' after Parse JSON
- 2Search for 'Slack' and select 'Post message'
- 3Choose the same channel as your trigger
- 4Click in Message field and select parsed content from OpenAI
- 5Add a prefix like 'π Formatted Notes:' for clarity
HTTP Action > ... > Settings > Configure run after
Add error handling
Click on the HTTP action and select 'Settings' from the three-dot menu. Enable 'Configure run after' and check 'is failed' and 'has timed out'. Add a Slack message action in the failure branch to notify users when OpenAI is unavailable or returns an error.
- 1Click the three dots on the HTTP action
- 2Select 'Settings'
- 3Click 'Configure run after'
- 4Check 'is failed' and 'has timed out'
- 5Add a Slack message action for error notifications
Flow > Save
Test and save the flow
Click 'Save' in the top right to save your flow. Go to your Slack channel and post a test message with meeting notes that match your trigger keywords. Check the flow run history to see if each step executed successfully. Verify the formatted output appears in Slack within 30-60 seconds.
- 1Click 'Save' in the top toolbar
- 2Navigate to your configured Slack channel
- 3Post a test message starting with your keyword
- 4Return to Power Automate and check 'Run history'
- 5Verify the formatted message appears in Slack
Add this JSON body structure to your HTTP action for better OpenAI formatting. Paste this in the Body field of your HTTP request to OpenAI.
JavaScript β Code Step{βΈ Show code
{
"model": "gpt-3.5-turbo",
"messages": [... expand to see full code
{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "system",
"content": "Format messy meeting notes into structured format with sections for Meeting Topic, Date, Attendees, Key Topics, Decisions, and Action Items. Use markdown formatting and bullet points. Be concise but don't lose important details."
},
{
"role": "user",
"content": "@{triggerBody()?['text']}"
}
],
"max_tokens": 1500,
"temperature": 0.3
}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 native integration with Teams, SharePoint, and other Office apps. The HTTP connector handles OpenAI calls reliably, and you get unlimited runs with most business licenses. Skip Power Automate if you need complex data transformations or your team isn't on Microsoft 365.
The math works out to roughly $0.004 per meeting note with GPT-3.5-turbo assuming 200-word notes. At 50 notes per month, you're spending $0.20 on OpenAI plus whatever your Power Automate license costs. Make handles the same volume and includes more transformation options, but you'll pay $9-29/month for the platform. Zapier costs $20+ for unlimited runs but has simpler OpenAI integration.
Make beats Power Automate on data transformation with built-in text parsing and conditional logic modules. Zapier wins on ease of setup with their native OpenAI app connection. n8n gives you better error handling and retry logic with custom code nodes. Pipedream offers superior debugging with request/response inspection. But Power Automate integrates better with SharePoint for note storage and Planner for action item tracking if you're already using those tools.
You'll hit OpenAI rate limits if multiple people post notes simultaneously. The HTTP connector doesn't handle retries gracefully, so add error handling that waits and retries. Long meeting notes can exceed token limits and get cut off. Slack's webhook reliability varies, so expect occasional missed triggers during Slack maintenance windows.
Ideas for what to build next
- βAdd meeting summaries to SharePoint β Extend the flow to save formatted notes as documents in SharePoint for searchable meeting history.
- βCreate action item reminders β Parse action items from formatted notes and create follow-up reminders in Microsoft To Do or Planner.
- βSupport multiple note formats β Add conditions to detect different meeting note styles and apply appropriate formatting 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