

How to Share Notion Meeting Notes to Slack with Power Automate
When a new page is created in a Notion database, Power Automate automatically posts a formatted message with the page title, author, and link to a designated Slack channel.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Teams already in the Microsoft 365 ecosystem who want Notion meeting notes pushed to Slack without buying another tool
Not ideal for
Teams that need true real-time delivery under 60 seconds — Power Automate polls Notion, so expect 1-15 minute delays
Sync type
scheduledUse case type
notificationReal-World Example
A 20-person product team at a SaaS company stores all sprint meeting notes in a shared Notion database. Before this flow, whoever ran the meeting had to manually copy the Notion link into #product-team on Slack — and about 30% of the time it didn't happen until the next day. Now, within 5 minutes of a new page being created in the Meeting Notes database, the flow posts the title, meeting date, and a direct link to #product-team automatically.
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 | ||
| Page Title | ||
| Page URL | ||
| Created Time | ||
| Database ID | ||
4 optional fields▸ show
| Created By | |
| Meeting Date (custom property) | |
| Attendees (custom property) | |
| Topic / Project (custom property) |
Step-by-Step Setup
make.powerautomate.com > My flows > New flow > Automated cloud flow
Create a new Automated cloud flow
Go to make.powerautomate.com and sign in. In the left sidebar, click 'My flows', then click '+ New flow' at the top. Select 'Automated cloud flow' from the dropdown — this is the event-triggered option, not scheduled. Give the flow a name like 'Notion Meeting Notes to Slack', then click 'Skip' when prompted to choose a trigger from the quick-start modal, because the Notion trigger isn't listed there.
- 1Click 'My flows' in the left sidebar
- 2Click '+ New flow' at the top of the page
- 3Select 'Automated cloud flow'
- 4Type a name: 'Notion Meeting Notes to Slack'
- 5Click 'Skip' on the trigger picker modal
Flow canvas > Trigger block > Search: Notion > When a page is added to a database (V2)
Add the Notion trigger: When a page is added to a database
In the empty trigger block on the canvas, type 'Notion' in the search bar. The Notion connector will appear — select it. From the list of triggers, choose 'When a page is added to a database (V2)'. This is the polling trigger that checks your Notion database for new pages on a recurring interval. You'll be prompted to sign in to Notion immediately.
- 1Click the trigger block on the canvas
- 2Type 'Notion' in the search bar
- 3Click the Notion connector in the results
- 4Select 'When a page is added to a database (V2)'
Trigger block > Sign in > Notion OAuth popup > Select pages
Connect your Notion account
Click 'Sign in' inside the trigger block. A browser popup opens asking you to log in to Notion and authorize the Power Automate integration. Select the Notion workspace that contains your meeting notes database, then click 'Select pages' and grant access to the specific database — not the entire workspace. Click 'Allow access'. Power Automate will confirm the connection is established.
- 1Click 'Sign in' in the trigger block
- 2Log in to Notion in the popup window
- 3Click 'Select pages'
- 4Find and check your Meeting Notes database
- 5Click 'Allow access'
Trigger block > Database ID dropdown
Select your Meeting Notes database
Click the 'Database ID' dropdown inside the trigger block. Power Automate will load the Notion databases your connection can access. Find and select your Meeting Notes database by name. If you have many databases, type part of the name to filter. Once selected, the trigger is fully configured — Power Automate will poll this database every 1-5 minutes depending on your plan.
- 1Click the 'Database ID' dropdown
- 2Wait for the list to populate (takes 3-5 seconds)
- 3Type part of your database name to filter
- 4Click your Meeting Notes database name
Flow canvas > + New step > Search: Parse JSON > Data Operation – Parse JSON
Add a Parse JSON action to extract page properties
Click '+ New step' below the trigger. Search for 'Parse JSON' and select the 'Data Operation – Parse JSON' action. In the 'Content' field, click inside and select 'Properties' from the dynamic content panel on the right — this is the raw JSON object containing all your Notion page properties. You need to supply a schema so Power Automate knows how to extract individual fields like page title and creation date. Click 'Generate from sample' and paste in a sample Notion page properties JSON in the next step.
- 1Click '+ New step'
- 2Search for 'Parse JSON'
- 3Select 'Data Operation – Parse JSON'
- 4Click the 'Content' field
- 5Select 'Properties' from the dynamic content panel
Parse JSON action > Generate from sample > paste JSON > Done
Generate the JSON schema from a sample Notion page
Open your Notion database in a browser and open any existing meeting notes page. In the Notion page URL, copy the 32-character page ID. Use the Notion API docs or a test run to capture the raw properties JSON — or click 'Test' on your flow trigger to pull a real sample. Copy the 'Properties' object from the test run output, then return to the Parse JSON action, click 'Generate from sample', paste the JSON, and click 'Done'. Power Automate generates the schema automatically.
- 1Click 'Test' at the top right of the flow canvas
- 2Select 'Manually' and click 'Test'
- 3Create a test page in your Notion database to fire the trigger
- 4Once the test run completes, click the trigger output to expand it
- 5Copy the 'Properties' JSON value, paste it into 'Generate from sample', click 'Done'
Flow canvas > + New step > Search: Compose > Data Operation – Compose
Add a Compose action to build the Slack message text
Click '+ New step', search for 'Compose', and select 'Data Operation – Compose'. This is where you assemble the message string that will appear in Slack. In the 'Inputs' field, type your message template and insert dynamic values from the Parse JSON output. A useful format is: the meeting title, the creation date, and the Notion page URL. Use the expression editor for the page URL since it's in the trigger output, not the Parse JSON output.
- 1Click '+ New step'
- 2Search for 'Compose'
- 3Select 'Data Operation – Compose'
- 4Click inside the 'Inputs' field
- 5Type your message and insert dynamic values from Parse JSON and the trigger
channel: {{channel}}
ts: {{ts}}
Flow canvas > + New step > Search: Slack > Post message (V2) > Sign in
Connect your Slack account
Click '+ New step' and search for 'Slack'. Select the Slack connector and choose the action 'Post message (V2)'. You'll be prompted to sign in. Click 'Sign in' and authorize Power Automate with your Slack workspace — you'll need permission to post to channels. The connection is created once and reused for all future runs. Select the Slack workspace from the dropdown if you're in multiple.
- 1Click '+ New step'
- 2Search for 'Slack'
- 3Select 'Post message (V2)'
- 4Click 'Sign in' and authorize your Slack workspace
- 5Select the correct workspace if prompted
Post message (V2) > Channel Name > Message Text
Configure the Slack channel and message
In the 'Post message (V2)' action, click the 'Channel Name' dropdown and select the Slack channel where meeting notes should be posted — for example, #meeting-notes or #product-team. In the 'Message Text' field, click inside and select 'Outputs' from the Compose action in the dynamic content panel. This inserts the formatted message you built in Step 7. Optionally, set 'Post as Bot' to true if your connection supports it.
- 1Click the 'Channel Name' dropdown and select your target channel
- 2Click inside the 'Message Text' field
- 3Select 'Outputs' from the Compose step in the dynamic content panel
- 4Optionally toggle 'Post as Bot' to Yes
Flow canvas > Test > Manually > Test > create Notion page > check Slack
Test the full flow end to end
Click 'Test' in the top right of the flow canvas. Choose 'Manually' and click 'Test'. Then go to your Notion database and create a real new page — add a title, date, and any other fields you use. Wait up to 5 minutes for the polling trigger to fire. Once the flow completes, check your Slack channel for the message. Review each action's output in the run history by clicking on the flow run.
- 1Click 'Test' in the top right
- 2Select 'Manually' and click 'Test'
- 3Open your Notion database and create a new test page with a title and date
- 4Wait up to 5 minutes
- 5Check the target Slack channel and the flow run history
My flows > [Flow name] > Run history
Turn on the flow and monitor first 24 hours
Click 'Save' then confirm the flow is toggled On in 'My flows'. The status column should show 'On' with a green indicator. Check back after 24 hours by clicking the flow name and reviewing 'Run history' at the bottom. Look for any failed runs and expand them to see which action failed. Set up an email alert for flow failures by clicking the '...' menu on the flow and selecting 'Edit' > add a Scope action with error handling if you want automatic failure notifications.
- 1Click 'Save' in the top right
- 2Navigate to 'My flows' in the left sidebar
- 3Confirm the flow shows 'On' status
- 4After 24 hours, click the flow name and scroll to 'Run history'
- 5Expand any failed runs to diagnose the failing action
Paste this expression into the 'Inputs' field of the Compose action in Step 7. It extracts the plain text title from Notion's nested title property structure, formats the creation date into a readable string, and assembles the full Slack message. Replace 'When_a_page_is_added_to_a_database_(V2)' with your actual trigger name if you renamed it.
JavaScript — Code Stepconcat(▸ Show code
concat(
'📝 New meeting notes: *',
body('Parse_JSON')?['Name']?['title']?[0]?['plain_text'],... expand to see full code
concat(
'📝 New meeting notes: *',
body('Parse_JSON')?['Name']?['title']?[0]?['plain_text'],
'*\n',
'Created: ',
formatDateTime(triggerOutputs()?['body/created_time'], 'MMM d, yyyy \a\t h:mm tt'),
'\n',
'Read the notes → ',
triggerOutputs()?['body/url']
)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 Power Automate for this if your organization is already on Microsoft 365 and you want to avoid adding another paid tool to the stack. Power Automate is included in many M365 business plans, so if your company already pays for it, this flow costs you nothing extra. It also plays well with other Microsoft services — if you later want to log meeting notes to a SharePoint list or trigger a Teams message alongside the Slack post, that's one extra action with a connector you already have. The one scenario where you'd pick something else: if your team needs delivery under 60 seconds or true webhook-based triggering from Notion, go with Make. Power Automate polls Notion — it does not support real-time webhooks for this connector.
The cost math is straightforward. Each flow run on Power Automate consumes one cloud flow run from your plan's monthly allowance. The per-user plan ($15/month) includes unlimited cloud flow runs. If you're on a Microsoft 365 Business plan that includes Power Automate, you get 6,000 runs per user per month at no additional cost. At 20 meeting notes per month, this flow uses 20 runs — negligible. For comparison, Zapier's free tier allows 100 tasks/month and a 15-minute polling delay. Zapier's Starter plan ($19.99/month) gets you 750 tasks with 15-minute polling. Power Automate gives you 1-minute polling and higher run volume for less money if you're already in M365.
Here's where the competitors actually beat Power Automate on this specific use case. Make has a Notion module that uses near-instant webhooks (not polling), so notes appear in Slack in under 10 seconds — Power Automate's 1-5 minute lag is genuinely worse. Zapier has a cleaner setup for non-technical users: 5 steps, no Parse JSON required, and the UI guides you through field mapping with zero expression syntax. n8n gives you a JavaScript function node where you can parse Notion's deeply nested property structure far more reliably than Power Automate's expression editor — especially useful when your database has 15+ custom properties. Pipedream lets you handle the Notion webhook directly with full Node.js, so you can add conditional routing logic in 20 lines of code. Power Automate is still the right pick when you're in an M365 shop and don't want another vendor contract — but be honest: it's the most friction-heavy setup of the five.
Three things you'll hit after going live. First: Notion's property structure for rich text is deeply nested — the title lives at properties > Name > title > [0] > plain_text, not at a flat title field. Anyone who builds this flow without the Parse JSON step will get object references instead of readable text in their Slack messages. Second: Power Automate's Slack connector posts as the authorizing user, which means your Slack messages show a person's name and avatar, not a bot. If that person's Slack account is deactivated, the flow fails silently on the next run. Third: if you duplicate a Notion page (a common way teams reuse meeting templates), the flow triggers for the duplicate immediately. Teams that clone a template and then fill it in later will get a Slack notification with a blank or template-titled page. Add a condition that checks whether the title contains 'Template' or is empty before posting.
Ideas for what to build next
- →Route notes to different channels by team — Add a Switch action after Parse JSON that checks a 'Team' or 'Project' property on the Notion page and posts to #engineering, #product, or #marketing accordingly. This way one flow handles all your databases without teams getting irrelevant notifications.
- →Send a weekly digest instead of per-note alerts — Build a second Scheduled cloud flow that runs every Monday morning, queries the Notion database for pages created in the past 7 days using the Notion API via HTTP action, and posts a single digest message to Slack with all the week's meeting notes listed together.
- →Add an action item extraction step — After the Slack notification, add an HTTP action that calls the Notion API to read the page body, then use a Parse JSON and a string filter to extract any lines that start with '[ ]' or '- Action:'. Post those extracted action items as a threaded reply to the original Slack message.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~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
How to Create Notion Tasks from Slack with Power Automate
~15 min setup