Remote Work Tools

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:

  1. Open Notion and navigate to Settings & MembersConnectionsAdd connections
  2. Select Slack from the available integrations
  3. Authorize Notion to access your Slack workspace
  4. In your Slack workspace, create a channel for notifications (or select an existing one)
  5. Return to Notion, open the page you want to monitor
  6. Click the Share button in the top-right corner
  7. Enable Connect to Slack and select your target channel
  8. 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:

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:

  1. Create a Zapier account and start a new Zap
  2. Set the trigger to Notion - Updated Page in Database
  3. Configure the Notion database to monitor
  4. Add an action: Slack - Send Message to Channel
  5. Map Notion page properties to Slack message fields
  6. Test and activate

Using Make (formerly Integromat):

  1. Create a new scenario in Make
  2. Add a Watch Database Items module for Notion
  3. Configure the filter to trigger only on specific property changes
  4. Add a Slack - Send a Message module
  5. Set up the message template using Notion data
  6. 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:

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.

Built by theluckystrike — More at zovo.one