# Notion — Pipedream Connect

> Notion is a new tool that blends your everyday work apps into one. It's the all-in-one workspace for you and your team.

- API slug: `notion` (use in MCP headers and tool keys)
- Auth: OAuth (Pipedream-managed)
- Categories: Productivity
- Website: https://notion.so
- This page (HTML): https://pipedream.com/apps/notion
- Tools: 25 actions · 9 triggers

## Connect via MCP (recommended)

- Endpoint: `https://remote.mcp.pipedream.net/v3`
- Headers: `Authorization: Bearer <token>` · `x-pd-project-id` · `x-pd-environment` · `x-pd-external-user-id` · `x-pd-app-slug: notion`

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "notion",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// e.g. run Append Block to Parent:
const result = await mcp.callTool({
  name: "notion-append-block",
  arguments: {
    pageId: "Page ID or URL",
    content: "Content",
  },
})
```

Docs: [MCP guide](https://pipedream.com/docs/connect/mcp/developers.md)

## API proxy

For a Notion endpoint with no pre-built tool, the proxy forwards your request with the connected user's credentials attached.

```bash
# The path segment is the target URL, URL-safe base64 encoded:
# https://api.notion.com/v1/users/me

curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkubm90aW9uLmNvbS92MS91c2Vycy9tZQ?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
  -H "Authorization: Bearer {access_token}" \
  -H "x-pd-environment: production"
```

Docs: [API proxy guide](https://pipedream.com/docs/connect/api-proxy.md)

## SDK

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "notion-append-block",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    notion: { authProvisionId: "apn_xxxxxxx" },
    pageId: "Page ID or URL",
    content: "Content",
  },
})
```

Docs: [Managed auth guide](https://pipedream.com/docs/connect/managed-auth/quickstart.md) · [Tools guide](https://pipedream.com/docs/connect/components.md)

## Actions (25)

### `notion-append-block` — Append Block to Parent (Write)

Append Markdown content to the bottom of a Notion page (or block). The content is parsed from Markdown into Notion blocks — use it to add paragraphs, headings, bullet/numbered lists, to-dos, quotes, code, etc. Provide the page ID or URL (use Search to resolve a page name into an ID). To change a…

Full schema: https://pipedream.com/apps/notion/actions/append-block.md

### `notion-complete-file-upload` — Complete File Upload (Write)

Use this action to finalize a mode=multi_part file upload after all of the parts have been sent successfully. See the documentation

Full schema: https://pipedream.com/apps/notion/actions/complete-file-upload.md

### `notion-duplicate-page` — Copy Page From Template (Write)

Copy an EXISTING page (template) into a new page with a new title. Use this ONLY when the user is reusing the structure of an existing page as a template (e.g. "copy this offer letter template for a new candidate"). Do NOT use to create a new page with original content — for that, use Create Page…

Full schema: https://pipedream.com/apps/notion/actions/duplicate-page.md

### `notion-create-comment` — Create Comment (Write)

Add a comment to a Notion page, or reply to an existing discussion thread. Provide either a page ID/URL (use Search to resolve a page name) or a discussion ID — not both. See the documentation

Full schema: https://pipedream.com/apps/notion/actions/create-comment.md

### `notion-create-database` — Create Database (Write)

Create a new Notion database (data source) as a subpage of a parent page, defining its column schema. Provide the parent page ID or URL (use Search to resolve a page name into an ID). properties is a JSON object of column-name → column type. Each value is a property schema object, or shorthand for…

Full schema: https://pipedream.com/apps/notion/actions/create-database.md

### `notion-create-file-upload` — Create File Upload (Write)

Create a file upload. See the documentation

Full schema: https://pipedream.com/apps/notion/actions/create-file-upload.md

### `notion-create-page` — Create Page (Write)

Create a new Notion page. The parent can be either another page (creates a subpage) or a database/data source (creates a row in that database). Provide the parent's ID or URL — use Search to resolve a name into an ID. When the parent is a database, set properties to a flat JSON object of…

Full schema: https://pipedream.com/apps/notion/actions/create-page.md

### `notion-create-page-from-database` — Create Page from Data Source (Write)

Create a new page (row) in a Notion data source (database). Provide the parent data source ID and the row's field values as a JSON object keyed by column name. Use the Search action (with filter: data_source) to resolve a database name into its data source ID, and Retrieve Database Schema to learn…

Full schema: https://pipedream.com/apps/notion/actions/create-page-from-database.md

### `notion-delete-block` — Delete Block (Write)

Sets a Block object, including page blocks, to archived: true using the ID specified. Example: blockId "1a2b3c4d-..." → archives that block and returns the block object with archived: true. See the documentation

Full schema: https://pipedream.com/apps/notion/actions/delete-block.md

### `notion-get-current-user` — Get Current User (Read-only)

Retrieve the Notion identity tied to the current OAuth token, returning the full users.retrieve payload for me (person or bot). Includes the user ID, name, avatar URL, type (person vs bot), and workspace ownership metadata—useful for confirming which workspace is connected, adapting downstream…

Full schema: https://pipedream.com/apps/notion/actions/get-current-user.md

### `notion-retrieve-page` — Get Page (Read-only)

Retrieve a Notion page: both its property values and its body content rendered as Markdown. Use this to read what a page says or to inspect a database row's fields. Provide a page ID or a Notion page URL (use Search to resolve a page name into an ID). See the documentation

Full schema: https://pipedream.com/apps/notion/actions/retrieve-page.md

### `notion-list-all-users` — List All Users (Read-only)

Returns all users in the workspace. See the documentation

Full schema: https://pipedream.com/apps/notion/actions/list-all-users.md

### `notion-list-file-uploads` — List File Uploads (Read-only)

Use this action to list file uploads. See the documentation

Full schema: https://pipedream.com/apps/notion/actions/list-file-uploads.md

### `notion-query-database` — Query Data Source (Read-only)

Filter and sort the pages (rows) inside a Notion database (data source) by their property values. Discover exact property names and option values with Retrieve Database Schema first, then build a filter against them. A filter is a JSON object: a single condition { "property": "Status", "select": {…

Full schema: https://pipedream.com/apps/notion/actions/query-database.md

### `notion-retrieve-database-content` — Retrieve Data Source Content (Read-only)

Get all content of a data source. See the documentation

Full schema: https://pipedream.com/apps/notion/actions/retrieve-database-content.md

### `notion-retrieve-database-schema` — Retrieve Database Schema (Read-only)

Get the column (property) schema of a Notion database (data source): each property's name, type, and — for select/multi_select/status columns — its allowed option values. Call this before Query Data Source, Create Page, or Update Page on a database so you use exact property names and valid option…

Full schema: https://pipedream.com/apps/notion/actions/retrieve-database-schema.md

### `notion-retrieve-file-upload` — Retrieve File Upload (Write)

Use this action to retrieve a file upload. See the documentation

Full schema: https://pipedream.com/apps/notion/actions/retrieve-file-upload.md

### `notion-retrieve-block` — Retrieve Page Content (Read-only)

Get page content as block objects or markdown. Blocks can be text, lists, media, a page, among others. Example: blockId "1a2b3c4d-..." with Retrieve Children set to All Children and Retrieve as Markdown enabled → returns the block with its nested children array plus a markdownContent string of the…

Full schema: https://pipedream.com/apps/notion/actions/retrieve-block.md

### `notion-retrieve-page-property-item` — Retrieve Page Property Item (Read-only)

Get a Property Item object for a selected page and property. See the documentation

Full schema: https://pipedream.com/apps/notion/actions/retrieve-page-property-item.md

### `notion-retrieve-user` — Retrieve User (Read-only)

Returns a user using the ID specified. See the documentation

Full schema: https://pipedream.com/apps/notion/actions/retrieve-user.md

### `notion-search` — Search (Read-only)

Search Notion for pages and databases (data sources) by title. Use this first to resolve a page or database name into an ID that the other Notion tools require (e.g. Query Data Source, Retrieve Database Schema, Get Page, Create Page). Leave query blank to list everything the integration can access…

Full schema: https://pipedream.com/apps/notion/actions/search.md

### `notion-send-file-upload` — Send File Upload (Write)

Send a file upload. See the documentation

Full schema: https://pipedream.com/apps/notion/actions/send-file-upload.md

### `notion-update-block` — Update Child Block (Write)

Update a single existing child block (paragraph, heading, to-do, code, etc.) by its block ID. Use this only to mutate an existing block in place. Do NOT use to update a page's properties (database row fields) — use Update Page instead. Do NOT use to add new content to a page — use Append Block to…

Full schema: https://pipedream.com/apps/notion/actions/update-block.md

### `notion-update-database` — Update Data Source (Write)

Update a Notion database (data source): rename it, change its description, or add/rename/retype its columns. Provide the data source ID (use Search with filter: data_source to resolve a database name, or Retrieve Database Schema to inspect existing columns). properties is a JSON object of changes…

Full schema: https://pipedream.com/apps/notion/actions/update-database.md

### `notion-update-page` — Update Page (Write)

Update a Notion page's property values, and/or archive (delete) it. Properties you don't include are left unchanged. Provide the page ID or URL (use Search or Query Data Source to find it). Set properties to a flat JSON object of column-name → value, e.g. { "Status": "Contained" }; call Retrieve…

Full schema: https://pipedream.com/apps/notion/actions/update-page.md

## Triggers (9)

### `notion-new-comment-created` — New Comment Created (Polling)

Emit new event when a new comment is created in a page or block. See the documentation

Full schema: https://pipedream.com/apps/notion/triggers/new-comment-created.md

### `notion-new-database` — New Data Source Created (Polling)

Emit new event when a data source is created. See the documentation

Full schema: https://pipedream.com/apps/notion/triggers/new-database.md

### `notion-updated-page` — New or Updated Page in Data Source (By Property) (Polling)

Emit new event when a page is created or updated in the selected data source. See the documentation

Full schema: https://pipedream.com/apps/notion/triggers/updated-page.md

### `notion-updated-page-by-timestamp` — New or Updated Page in Data Source (By Timestamp) (Polling)

Emit new event when a page is created or updated in the selected data source. See the documentation

Full schema: https://pipedream.com/apps/notion/triggers/updated-page-by-timestamp.md

### `notion-new-page` — New Page in Data Source (Polling)

Emit new event when a page is created in the selected data source. See the documentation

Full schema: https://pipedream.com/apps/notion/triggers/new-page.md

### `notion-new-webhook-event-instant` — New Webhook Event (Instant) (Instant)

Emit new event each time a webhook event is received. Webhook must be setup in Notion. See the documentation

Full schema: https://pipedream.com/apps/notion/triggers/new-webhook-event-instant.md

### `notion-page-or-subpage-updated` — Page or Subpage Updated (Polling)

Emit new event when the selected page or one of its sub-pages is updated. See the documentation

Full schema: https://pipedream.com/apps/notion/triggers/page-or-subpage-updated.md

### `notion-page-properties-updated-instant` — Page Properties Updated (Instant) (Instant)

Emit new event each time a page property is updated in a data source. For use with Page Properties Updated event type. Webhook must be set up in Notion. See the documentation

Full schema: https://pipedream.com/apps/notion/triggers/page-properties-updated-instant.md

### `notion-updated-page-id` — Page Updated (Polling)

Emit new event when a selected page is updated. See the documentation

Full schema: https://pipedream.com/apps/notion/triggers/updated-page-id.md

---

- All apps: https://pipedream.com/apps — index: https://pipedream.com/llms.txt
- Pipedream docs for agents: https://pipedream.com/docs/llms.txt
