Intermediate~15 min setupCommunication & ProductivityVerified April 2026
Slack logo
Notion logo

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

scheduled

Use case type

notification

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

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

Notion account with a database set up for meeting notes — not just a standalone page, it must be a database (table, gallery, or list view)
Notion integration authorized to read the meeting notes database — configured at notion.so/my-integrations and added to the specific database via 'Add connections'
Slack account with permission to post messages to at least one channel — the authorizing user must be a member of the target channel
Power Automate account with access to premium connectors — the Notion connector requires a Power Automate Premium or Microsoft 365 plan that includes premium connectors
Notion database has at minimum a 'Name' (title) property and a 'Date' property — the flow will extract these to build the Slack message

Field Mapping

Map these fields between your apps.

FieldAPI 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

1

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.

  1. 1Click 'My flows' in the left sidebar
  2. 2Click '+ New flow' at the top of the page
  3. 3Select 'Automated cloud flow'
  4. 4Type a name: 'Notion Meeting Notes to Slack'
  5. 5Click 'Skip' on the trigger picker modal
What you should see: You should see the flow canvas open with an empty trigger block labeled 'Search connectors and triggers'.
Common mistake — Do not pick 'Scheduled cloud flow' here. That option runs on a clock interval but won't react to new Notion pages as a trigger — the Notion connector works via polling inside an Automated flow, not a true schedule you define.
2

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.

  1. 1Click the trigger block on the canvas
  2. 2Type 'Notion' in the search bar
  3. 3Click the Notion connector in the results
  4. 4Select 'When a page is added to a database (V2)'
What you should see: The trigger block expands to show a 'Database ID' dropdown field and a 'Sign in' button for Notion authentication.
Common mistake — Use V2 of this trigger, not V1. V1 returns a flattened property structure that drops rich text and date fields. V2 returns the full properties object, which you'll need for the meeting title and date in later steps.
Power Automate
+
click +
search apps
Slack
SL
Slack
Add the Notion trigger: When…
Slack
SL
module added
3

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.

  1. 1Click 'Sign in' in the trigger block
  2. 2Log in to Notion in the popup window
  3. 3Click 'Select pages'
  4. 4Find and check your Meeting Notes database
  5. 5Click 'Allow access'
What you should see: The 'Sign in' button is replaced by your Notion email address, and the 'Database ID' dropdown becomes active.
Common mistake — Notion's OAuth grants access only to the pages you explicitly select. If you grant access to just the top-level Meeting Notes page but not the database itself, the 'Database ID' dropdown will show no results. Go back and re-authorize with the database selected.
Power Automate settings
Connection
Choose a connection…Add
click Add
Slack
Log in to authorize
Authorize Power Automate
popup window
Connected
green checkmark
4

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.

  1. 1Click the 'Database ID' dropdown
  2. 2Wait for the list to populate (takes 3-5 seconds)
  3. 3Type part of your database name to filter
  4. 4Click your Meeting Notes database name
What you should see: The Database ID field shows your meeting notes database name and a corresponding database ID string.
5

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.

  1. 1Click '+ New step'
  2. 2Search for 'Parse JSON'
  3. 3Select 'Data Operation – Parse JSON'
  4. 4Click the 'Content' field
  5. 5Select 'Properties' from the dynamic content panel
What you should see: The Parse JSON action shows the 'Properties' token in the Content field and an empty 'Schema' text area below it.
Common mistake — Do not select 'Body' or 'Page ID' as the Content — selecting 'Properties' targets the nested object that holds your custom database columns like Name, Date, and Owner. Using the wrong dynamic value here causes the schema to generate incorrectly.
Slack fields
text
user
channel
ts
thread_ts
available as variables:
1.props.text
1.props.user
1.props.channel
1.props.ts
1.props.thread_ts
6

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.

  1. 1Click 'Test' at the top right of the flow canvas
  2. 2Select 'Manually' and click 'Test'
  3. 3Create a test page in your Notion database to fire the trigger
  4. 4Once the test run completes, click the trigger output to expand it
  5. 5Copy the 'Properties' JSON value, paste it into 'Generate from sample', click 'Done'
What you should see: The Schema field in the Parse JSON action fills in automatically with property names matching your Notion database columns.
Common mistake — Notion property names in the API use exact casing from your database. If your column is called 'Meeting Title' in Notion, the schema key will be 'Meeting Title' with a capital M and T. Mismatched casing in later expressions will return null values.
7

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.

  1. 1Click '+ New step'
  2. 2Search for 'Compose'
  3. 3Select 'Data Operation – Compose'
  4. 4Click inside the 'Inputs' field
  5. 5Type your message and insert dynamic values from Parse JSON and the trigger
What you should see: The Compose action shows a preview of your message with token placeholders for title, date, and URL.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
message template
🔔 New Record: {{text}} {{user}}
channel: {{channel}}
ts: {{ts}}
#sales
🔔 New Record: Jane Smith
Company: Acme Corp
8

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.

  1. 1Click '+ New step'
  2. 2Search for 'Slack'
  3. 3Select 'Post message (V2)'
  4. 4Click 'Sign in' and authorize your Slack workspace
  5. 5Select the correct workspace if prompted
What you should see: The Slack action shows your workspace name in the connection field and exposes 'Channel Name' and 'Message Text' dropdowns.
Common mistake — The Power Automate Slack connector posts as the authorizing user by default, not a bot. If the authorizing user leaves the company later, the flow breaks. Use a dedicated service account or Slack bot token via a custom connector if this flow is business-critical.
9

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.

  1. 1Click the 'Channel Name' dropdown and select your target channel
  2. 2Click inside the 'Message Text' field
  3. 3Select 'Outputs' from the Compose step in the dynamic content panel
  4. 4Optionally toggle 'Post as Bot' to Yes
What you should see: The Slack action shows your target channel name and the Compose output token in the Message Text field.
Common mistake — Power Automate's Slack connector does not support Block Kit formatting. The message will be plain text. If you need buttons, sections, or formatted cards in Slack, you'll need to call the Slack API directly via an HTTP action with a Block Kit payload.
10

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.

  1. 1Click 'Test' in the top right
  2. 2Select 'Manually' and click 'Test'
  3. 3Open your Notion database and create a new test page with a title and date
  4. 4Wait up to 5 minutes
  5. 5Check the target Slack channel and the flow run history
What you should see: The Slack channel receives a message with the meeting title, date, and Notion page URL. The flow run history shows all green checkmarks.
Power Automate
▶ Test flow
executed
Slack
Notion
Notion
🔔 notification
received
11

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.

  1. 1Click 'Save' in the top right
  2. 2Navigate to 'My flows' in the left sidebar
  3. 3Confirm the flow shows 'On' status
  4. 4After 24 hours, click the flow name and scroll to 'Run history'
  5. 5Expand any failed runs to diagnose the failing action
What you should see: Run history shows successful runs timed to each new Notion page creation, with no errors.
Common mistake — Power Automate will retry failed runs automatically up to 8 times with exponential backoff. If Notion's API is throttled, you may see duplicate Slack messages once retries succeed. Add a duplicate-check variable in Step 7 if your team creates many pages in short bursts.

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

VerdictWhy n8n for this workflow

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.

Cost

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.

Tradeoffs

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 teamAdd 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 alertsBuild 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 stepAfter 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

Was this guide helpful?
Slack + Notion overviewPower Automate profile →