Notion Integration
Give your agents the ability to read from and write to Notion — append call notes to a shared database, create pages in a project wiki, query a product-knowledge workspace before answering customers, or turn every voice conversation into a structured record. Perfect for persistent memory: the agent can look up a customer’s prior interactions in Notion and write today’s call summary back into the same row.Connecting Notion
Connection goes through Notion’s verified OAuth flow — you do not need to create an internal integration, copy an API key, or manage page-by-page sharing. thinnestAI brokers the OAuth through Composio.Step 1: Connect via OAuth
- Navigate to Agents and select your agent.
- Open the Tools section and click Add Tool.
- Select Notion.
- Click Connect Notion.
- A Notion sign-in popup opens. Authenticate with the workspace you want the agent to access.
- Select which pages and databases to grant access to (page picker), then click Allow access.
Scoped by page selection. Notion grants access only to the pages / databases you explicitly pick during OAuth. The agent cannot read or write anything else in the workspace. To grant access to additional pages later, disconnect and re-connect with a broader selection.
Step 2: Choose Allowed Actions
Four capability toggles control which action groups the agent can invoke:| Toggle | Default | What it unlocks |
|---|---|---|
| Read Pages | ✅ On | Get page content, block children, traverse the tree |
| Read Databases | ✅ On | Query rows, filter, sort, look up by property |
| Write Pages | ✅ On | Create pages, append blocks, update content |
| Write Databases | ✅ On | Insert rows, update row properties |
| Manage Database Schema | Off | Create new databases, add properties, change types |
| Archive & Delete | Off | Soft-delete pages, archive database rows |
Available Actions
Pages (5)
| Action | Description |
|---|---|
| Get Page | Read a page’s properties and metadata |
| Get Page Content | Read the full block tree under a page |
| Create Page | Create a new page in a parent page or database |
| Update Page | Update page properties or cover / icon |
| Append Blocks | Add blocks (paragraphs, lists, todos) to a page |
Databases (5)
| Action | Description |
|---|---|
| Query Database | Filter and sort rows by property values |
| Get Database | Read a database’s schema (property definitions) |
| Create Database Row | Insert a new row with properties filled |
| Update Database Row | Update properties on an existing row |
| Search | Full-text search across pages and databases |
Blocks (3)
| Action | Description |
|---|---|
| Get Block | Read a single block’s content |
| Update Block | Modify a block’s content or type |
| Delete Block | Remove a block (soft-delete) |
Schema (3) — opt-in
| Action | Description |
|---|---|
| Create Database | Create a new database with a property schema |
| Update Database Schema | Add / rename / retype properties |
| Archive Page | Soft-delete a page (reversible from Notion UI) |
Voice-AI Use Cases
Notion pairs naturally with voice agents for structured long-term memory. Unlike Slack (ephemeral) or Google Sheets (2D only), Notion holds rich page content — transcripts, recordings, action items, linked records — all queryable by the agent on the next call.Call-Log Database
Customer 360 Lookup
Project Handoff
Example: Customer-Aware Support Agent
Build a voice agent that reads the caller’s Notion history before answering, and writes the call summary back on hangup.Agent Setup
| Field | Value |
|---|---|
| Name | Context-Aware Support |
| Model | GPT-4o |
| Tools | Notion, Google Sheets |
Agent Instructions
Structured Writes vs Free-Form
Notion has two write patterns, each suited to different flows: Structured — database rows: Use for CRM-style records where every call has the same fields (caller, outcome, summary, next_action). Query is easy; reporting is easy. Best for call logs, lead tracking, ticket backlogs. Free-form — page content blocks: Use for narrative memory where each customer’s page grows organically. Best for customer-history pages where today’s call appends to yesterday’s summary. Most real agents use both — a row in a “Calls” database links to a dedicated customer page with the full history.Combining with Other Tools
| Combination | Use Case |
|---|---|
| Notion + Voice | Persistent customer memory across calls |
| Notion + Google Sheets | Notion for narrative, Sheets for metrics / reports |
| Notion + Slack | Notify a channel when a new page is created (#new-tickets) |
| Notion + Gmail | Email the customer a link to their Notion page |
| Notion + Google Calendar | Auto-create Notion meeting-prep pages for upcoming calls |
Security & Privacy
- OAuth tokens are encrypted at rest. thinnestAI never sees your Notion password.
- Per-user scoping — Each user’s workspace connection is isolated. An agent owned by User A cannot read User B’s Notion.
- Page-level scoping — At OAuth time, you pick which pages / databases the agent can touch. Unselected pages remain invisible even to the integration.
- Revoke access — Disconnect from the config modal, or revoke directly from Notion → Settings & Members → Connections.
- Audit trail — every agent-written change appears in Notion’s page history with the connected user as the editor.
Troubleshooting
| Issue | Solution |
|---|---|
| ”object_not_found” errors | The page / database wasn’t shared with the integration during OAuth. Reconnect and select the missing page in the picker. |
| ”validation_error: … is not a valid UUID” | You passed a plain page name instead of the Notion page ID (32-char UUID). Use Search first to resolve name → ID. |
| Properties don’t write | Property type mismatch. A Number column rejects text, a Select column rejects values not in its options list. Read the schema via Get Database first. |
| Write fails with “archived” | Pages in the trash can’t be modified. Restore the page in Notion UI or pick a different parent. |
| Pagination missing results | Default Query Database returns 100 rows. Pass start_cursor from a prior response to continue. |
| Rate-limited | Notion API caps at ~3 requests/sec per integration. Agents making bursts of 10+ writes may get 429s. Add small delays for batch flows. |
Next Steps
- Voice — Use Notion as persistent memory across voice conversations.
- Google Sheets — Simpler tabular logging when you don’t need rich page content.
- Slack — Notify your team when agents create new Notion pages.

