Connecting Notion to Slack for automatic page update notifications keeps your team informed when important documents change without requiring manual checks. This guide walks through three practical approaches: using Notion’s native Slack integration, building a custom solution with the Notion API, and using webhook-based automation tools. Each method suits different technical requirements and team workflows.
Why Connect Notion to Slack
Notion serves as a central knowledge base for many remote teams, but staying current with page changes requires either frequent manual checks or relying on others to share updates. Automatic Slack notifications solve this by pushing updates directly to relevant channels when pages are created, modified, or commented on.
The benefits extend beyond convenience. Engineering teams tracking RFCs, product teams monitoring specifications, and operations teams managing runbooks all benefit from real-time awareness of document changes. Rather than asking “has this been updated?” repeatedly, team members receive notifications automatically.
Method 1: Notion’s Native Slack Integration
Notion provides built-in Slack connectivity that handles basic notification scenarios without writing code.
Setup Steps:
- Open Notion and navigate to Settings & Members → Connections → Add connections
- Select Slack from the available integrations
- Authorize Notion to access your Slack workspace
- In your Slack workspace, create a channel for notifications (or select an existing one)
- Return to Notion, open the page you want to monitor
- Click the Share button in the top-right corner
- Enable Connect to Slack and select your target channel
- Configure notification preferences: page created, page updated, or comments added
This method works well for monitoring individual pages or databases. However, it lacks flexibility for complex notification rules or cross-page automation.
Method 2: Custom API Solution for Advanced Control
When you need granular control over which updates trigger notifications, building a custom integration using the Notion API provides the most flexibility.
Prerequisites:
- Notion integration token (create at notion.so/my-integrations)
- Slack webhook URL or Slack Bot Token
- A server or serverless function to run the polling script
Step 1: Set Up Notion Integration
Create a new integration at notion.so/my-integrations and copy the internal integration token. Share the target database or pages with your integration by opening each page, clicking the three-dot menu, selecting Connect to, and choosing your integration.
Step 2: Create the Notification Script
This Python script polls Notion for recent page updates and sends notifications to Slack:
import os
import time
import requests
from datetime import datetime, timedelta
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
from notion_client import Client
# Configuration
NOTION_API_KEY = os.environ.get("NOTION_API_KEY")
SLACK_TOKEN = os.environ.get("SLACK_TOKEN")
DATABASE_ID = os.environ.get("NOTION_DATABASE_ID")
CHANNEL_ID = os.environ.get("SLACK_CHANNEL_ID")
POLL_INTERVAL = 60 # seconds
notion = Client(auth=NOTION_API_KEY)
slack = WebClient(token=SLACK_TOKEN)
def get_recent_updates():
"""Fetch pages modified in the last 5 minutes."""
five_minutes_ago = datetime.now() - timedelta(minutes=5)
response = notion.databases.query(
database_id=DATABASE_ID,
filter={
"property": "Last Edited Time",
"date": {
"after": five_minutes_ago.isoformat()
}
}
)
return response.get("results", [])
def send_slack_notification(page):
"""Send Slack notification for updated page."""
page_id = page["id"]
title = page["properties"].get("Name", {}).get("title", [{}])[0].get("plain_text", "Untitled")
last_edited = page["last_edited_time"]
page_url = f"https://notion.so/{page_id.replace('-', '')}"
message = f":page_facing_up: *Notion Page Updated*\n*{title}*\nLast edited: {last_edited}\n<{page_url}|View in Notion>"
try:
slack.chat_postMessage(channel=CHANNEL_ID, text=message, mrkdwn=True)
except SlackApiError as e:
print(f"Error sending Slack message: {e}")
def main():
print(f"Starting Notion Slack Notifier...")
while True:
try:
updates = get_recent_updates()
for page in updates:
send_slack_notification(page)
except Exception as e:
print(f"Error polling Notion: {e}")
time.sleep(POLL_INTERVAL)
if __name__ == "__main__":
main()
Step 3: Deploy and Run
Install dependencies:
pip install slack-sdk notion-client python-dotenv
Set environment variables and run the script on a server or container:
export NOTION_API_KEY="secret_..."
export SLACK_TOKEN="xoxb-..."
export NOTION_DATABASE_ID="..."
export SLACK_CHANNEL_ID="C0123456789"
python notifier.py
For production deployment, consider running this as a containerized service on AWS Lambda, Google Cloud Functions, or a simple VPS with systemd.
Method 3: Zapier or Make for No-Code Automation
If writing code feels excessive for your needs, automation platforms like Zapier or Make provide visual interfaces for connecting Notion to Slack.
Using Zapier:
- Create a Zapier account and start a new Zap
- Set the trigger to Notion - Updated Page in Database
- Configure the Notion database to monitor
- Add an action: Slack - Send Message to Channel
- Map Notion page properties to Slack message fields
- Test and activate
Using Make (formerly Integromat):
- Create a new scenario in Make
- Add a Watch Database Items module for Notion
- Configure the filter to trigger only on specific property changes
- Add a Slack - Send a Message module
- Set up the message template using Notion data
- Schedule the scenario to run every 5-15 minutes
These platforms handle the polling infrastructure for you but come with pricing considerations for higher usage volumes.
Choosing the Right Method
For simple use cases monitoring a handful of pages, Notion’s native integration provides the fastest setup with minimal overhead. When you need custom filtering logic—such as notifying different channels based on page tags or properties—the custom API approach offers complete control. For teams without developer resources but requiring more than native integration provides, Zapier or Make bridges the gap effectively.
Consider these factors when choosing:
- Volume: How many pages need monitoring?
- Filtering: Do you need to filter updates by author, property, or content?
- Latency: How quickly must notifications arrive?
- Cost: Budget constraints may favor the native integration or custom solution over platform subscriptions
Best Practices for Implementation
Regardless of which method you choose, structure your notifications to avoid alert fatigue. Instead of notifying on every single edit, configure triggers for meaningful changes—major content updates, status changes, or new comments from specific people. Use Slack threads to keep channels organized when multiple updates occur in quick succession.
Testing your setup thoroughly before rolling it out team-wide prevents notification spam. Start with a test channel, refine your filters, then expand to production channels once the setup stabilizes.
Related Articles
- Example: Using Slack webhooks for deployment notifications
- Page Title
- Best Backup Solution for Remote Employee Laptops
- Example: Create invoice with automatic currency conversion
- Best Format for Remote Team Weekly Written Status Update
Built by theluckystrike — More at zovo.one