You want to keep Notion database updates automatically posted to a specific Microsoft Teams channel. This eliminates manual copying and ensures your team sees changes in real time. The feature uses a Notion integration with Microsoft Teams and a webhook-based channel mirror. This article explains how to set up the sync between a Notion database and a Teams channel so that new or updated items appear as messages.
Key Takeaways: Notion to Teams Channel Mirror Setup
- Notion Integration with Microsoft Teams: Connects your workspace to a Teams channel using an incoming webhook.
- Database Automation (Notion Automations): Triggers a webhook action when a database item is created or updated.
- Teams Incoming Webhook Connector: Receives the JSON payload from Notion and posts it as a message in the channel.
How the Notion to Teams Channel Mirror Works
The mirror sync relies on three components: a Notion database you want to monitor, an incoming webhook in Microsoft Teams, and a Notion automation that sends data to that webhook. When a new row is added to the database or an existing row is updated, Notion sends a JSON payload to the Teams webhook URL. Teams then posts that payload as a formatted message in the channel. No third-party middleware is needed. The setup requires a Microsoft 365 account with permission to add connectors to a Teams channel. You also need a Notion workspace with access to the Automations feature, which is available on the Plus plan and above.
Prerequisites
Before starting, confirm you have the following:
- Notion workspace on the Plus, Business, or Enterprise plan. The Free plan does not support automations.
- Microsoft Teams desktop app or web app with owner or member permissions to add a connector to a channel.
- A Notion database with at least one property you want to mirror. For example, a task tracker with Name, Status, and Assignee properties.
Steps to Configure the Sync Between Notion and Teams
Step 1: Create an Incoming Webhook in Microsoft Teams
- Open the target channel in Microsoft Teams
Navigate to the channel where you want the mirror messages to appear. Click the three dots (More options) next to the channel name. - Select Connectors from the menu
In the dropdown, choose Connectors. A list of available connectors appears. - Find and configure the Incoming Webhook connector
Search for Incoming Webhook. Click Configure. Give the webhook a name, for example Notion Sync. Optionally upload a custom icon. Click Create. - Copy the webhook URL
Teams displays a unique URL. Copy this URL to your clipboard. It looks like:https://outlook.office.com/webhook/.... Click Done. Keep this URL secure; anyone with it can post messages to the channel.
Step 2: Set Up a Notion Automation for the Database
- Open the Notion database you want to mirror
Navigate to the database page. Click the three dots in the top-right corner of the database view. - Select Automations from the menu
Choose Automations, then click New Automation. A configuration panel opens. - Define the trigger
Under When the following happens, select When a new item is created or When an item is updated. You can also choose both by creating separate automations. For a full mirror, create two automations: one for new items and one for updates. - Add a condition (optional)
If you want to mirror only certain items, click Add condition. For example, filter by Status equals In Progress. Otherwise leave it empty to mirror all items. - Choose the action type
Under Then do the following, select Send webhook. A new field appears for the webhook URL. - Paste the Teams webhook URL
Paste the URL you copied from Teams into the Webhook URL field. - Compose the JSON payload
In the JSON Body field, write the message structure. Use Notion property placeholders inside double curly braces. Example payload:{"text": "New item: {{Name}}. Status: {{Status}}. Assigned to: {{Assignee}}"}
Replace Name, Status, and Assignee with your actual database property names. For updates, include {{Last edited time}} if needed. - Test and save the automation
Click Test to send a sample payload to the Teams channel. Check the channel for the test message. If the message appears correctly, click Save Automation. If not, review the payload syntax and property names.
Step 3: Repeat for Update Events (Optional)
- Create a second automation
Follow Step 2 again, but choose When an item is updated as the trigger. Use a different payload that includes the old and new values if desired. - Adjust the message format
For updates, include dynamic fields like {{Original Name}} and {{New Name}}. Notion does not natively expose old values in automations, so the payload will only show the current state. Consider adding a Last edited time property to indicate freshness.
Common Mistakes and Limitations
Webhook URL Contains Spaces or Line Breaks
If you copy the webhook URL into Notion and it includes extra spaces or line breaks, the automation fails silently. Paste the URL into a plain text editor first to verify it is a single continuous string. Remove any whitespace before saving the automation.
Property Names in Payload Do Not Match Database
Notion property names are case-sensitive. If your database property is named Task Name, you must write {{Task Name}} in the JSON body. Using {{task name}} or {{Task name}} will produce an empty value. Double-check the exact property name by viewing the database properties list.
Automation Does Not Fire for Existing Items
Automations only trigger for new items or updates that occur after the automation is saved. Existing items are not retroactively mirrored. To mirror existing data, manually edit each item to trigger the update automation, or use a bulk update script via the Notion API.
Teams Message Formatting Is Plain Text Only
The incoming webhook connector supports basic Markdown in the text field, such as bold (bold) and links ([text](url)). However, Notion automations send plain JSON text. To use formatting, include Markdown syntax directly in the JSON body. For example: {"text": "New item: {{Name}}"}. Notion property values are always plain text, so you cannot apply dynamic formatting per property.
Rate Limits on Teams Webhooks
Microsoft Teams applies rate limits to incoming webhooks. If your Notion database receives many updates in a short period, some messages may be dropped. The limit is approximately 30 messages per minute per webhook. For high-volume databases, consider batching updates with a delay or using a dedicated integration platform.
Notion Free vs Plus vs Business: Automation Availability
| Item | Free Plan | Plus Plan | Business Plan |
|---|---|---|---|
| Automations | Not available | Up to 100 automations per workspace | Unlimited automations |
| Webhook action | Not available | Included | Included |
| Database triggers | Not available | Create and update events | Create and update events |
If you are on the Free plan, you cannot use automations. Upgrade to at least Plus to enable the webhook mirror feature.
Conclusion
You can now configure a Notion database to automatically post updates to a Microsoft Teams channel using an incoming webhook and Notion automations. The setup requires a Teams connector webhook URL and a correctly formatted JSON payload in the automation. Start with a single trigger for new items, then add a second automation for updates. For advanced control, use the Send webhook action with conditional filters to mirror only specific database entries. Check your Notion plan to ensure automations are enabled before beginning.