> ## Documentation Index
> Fetch the complete documentation index at: https://modem.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Notion

> Connect Notion so the Modem Agent can access your workspace

export const Prompt = ({text, variant = 'accent'}) => {
  const [copied, setCopied] = useState(false);
  const handleCopy = async () => {
    try {
      await navigator.clipboard.writeText(text);
      setCopied(true);
      setTimeout(() => setCopied(false), 2000);
    } catch {}
  };
  const clipboardIcon = <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
            <title>Copy</title>
            <rect x="9" y="9" width="13" height="13" rx="2" ry="2" />
            <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />
        </svg>;
  const checkIcon = <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
            <title>Copied</title>
            <polyline points="20 6 9 17 4 12" />
        </svg>;
  const promptIcon = <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style={{
    flexShrink: 0,
    opacity: 0.4
  }}>
            <title>Prompt</title>
            <path d="M20 2H2v20h2V4h16v12H6v2H4v2h2v-2h16V2zM6 7h12v2H6zm8 4H6v2h8z" />
        </svg>;
  return <div className={`prompt prompt-${variant}`} style={{
    marginTop: '12px',
    marginBottom: '12px'
  }}>
            {promptIcon}
            <span className="prompt-text">{text}</span>
            <button className="prompt-copy" onClick={handleCopy} title="Copy to clipboard" type="button">
                {copied ? checkIcon : clipboardIcon}
            </button>
        </div>;
};

The Notion integration connects your Notion workspace to the Modem Agent. Once connected, the agent can search your pages and databases, read content, create new pages, update properties, and add comments from chat.

<Info>
  Notion is a fetch-based integration. Modem does not sync or store Notion data. Instead, the agent queries your Notion workspace on
  demand when you ask. The integration can only access pages and databases that have been explicitly shared with it in Notion.
</Info>

## Prerequisites

* A [Notion](https://www.notion.so) account with access to the workspace you want to connect
* **Admin or Owner** role in your Modem organization

<Note>
  The Notion integration is rolling out gradually. If you don't see it in your integration settings, contact [support@modem.dev](mailto:support@modem.dev) to get
  access.
</Note>

## Setup

<Steps>
  <Step title="Start the connection">
    Go to **Settings** > **Integrations** > **Notion** in your Modem dashboard and click **Connect Notion**.
  </Step>

  <Step title="Authorize Modem">
    You'll be redirected to Notion to authorize the connection. Review the permissions and click **Allow access**.
  </Step>

  <Step title="Share pages with the integration">
    The agent can only access pages explicitly shared with the Modem integration. To share a page or database in Notion:

    1. Open the page in Notion
    2. Click **Share** in the top right
    3. Find and add the **Modem** integration

    Any child pages under a shared parent are also accessible.
  </Step>

  <Step title="Set a default page (optional)">
    In your Notion integration settings, choose a default page. The agent uses this as the default parent when creating new Notion pages, unless you specify otherwise. You can search for any page the integration has access to.
  </Step>
</Steps>

## What the Agent Can Do

With Notion connected, you can ask the agent to:

* **Search** your workspace for pages and databases by keyword
* **Read** page content, properties, and comments
* **Query** databases with filters and sorts
* **Create** new pages in a database or as a child of another page
* **Update** page properties (status, priority, assignee, etc.)
* **Add** comments to pages
* **Append** content blocks to existing pages

Read operations happen automatically. Write operations (creating pages, updating properties, adding comments) require your approval before the agent executes them.

### Example Prompts

These work from the dashboard, Slack DMs, or by mentioning `@modem` in a channel.

Simple:

<Prompt text="Find our product roadmap on Notion" />

<Prompt text="What tasks are in progress in the engineering database?" />

<Prompt text="Show me the most recent meeting notes" />

Advanced:

<Prompt text="Look at the top bug report topics from the last week and add them to our Notion issues database" />

<Prompt text="Summarize all open tasks assigned to Alice in our Notion project tracker" />

<Prompt text="Create a new page in our feedback database with a summary of the billing complaints from Slack this week" />

<Prompt text="Cross-reference our Notion roadmap with the most requested features in Modem topics" />

## Sharing and Access

The Notion integration follows Notion's permission model. The agent can only see and interact with pages that have been explicitly shared with the Modem integration.

If the agent can't find a page you expect, the most common cause is that the page hasn't been shared with the integration.

**To share additional pages:**

1. Open the page or database in Notion
2. Click **Share** in the top right
3. Search for and add the **Modem** integration

<Tip>Share a top-level page to give the integration access to all its sub-pages at once.</Tip>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Agent can't find pages or returns empty results">
    The most common cause is that the page hasn't been shared with the Modem integration. Open the page in Notion, click **Share**, and verify the Modem integration has access. Child pages inherit access from their parent, so sharing a top-level page covers everything underneath.
  </Accordion>

  <Accordion title="'Could not find page' error">
    The page exists but wasn't shared with the integration, or the page ID is incorrect. Use a search query first to find accessible pages, then work with the results.
  </Accordion>

  <Accordion title="Property errors when creating or updating pages">
    Each Notion database has its own schema with specific property names and types. The agent fetches the database schema before writing, but if property names have changed or don't match, the operation will fail. Ask the agent to check the database schema first.
  </Accordion>

  <Accordion title="Agent says Notion isn't connected">
    Verify the integration is connected in **Settings** > **Integrations** > **Notion**. If authorization expired, disconnect and reconnect.
  </Accordion>
</AccordionGroup>

## Disconnecting

To disconnect Notion:

1. Go to **Settings** > **Integrations** > **Notion**
2. Click **Disconnect**, then confirm in the dialog that appears

To revoke access from Notion's side:

1. Go to Notion **Settings & members** > **Connections**
2. Find the Modem integration and remove it

## Related

<CardGroup cols={2}>
  <Card title="The Modem Agent" icon="https://mintcdn.com/modem-844d7a4a/Wr2r4IRr97lNQiQb/icons/bot.svg?fit=max&auto=format&n=Wr2r4IRr97lNQiQb&q=85&s=2496f9106cb54fa9f4e27ad1f8f3a171" href="/docs/features/agent" width="22" height="22" data-path="icons/bot.svg">
    See what else the agent can do with your connected tools.
  </Card>

  <Card title="Integrations Overview" icon="https://mintcdn.com/modem-844d7a4a/Wr2r4IRr97lNQiQb/icons/link.svg?fit=max&auto=format&n=Wr2r4IRr97lNQiQb&q=85&s=e774d33588635d44c6c935b78ed55f13" href="/docs/integrations/overview" width="24" height="24" data-path="icons/link.svg">
    All available integrations and how they fit together.
  </Card>
</CardGroup>
