Skip to navigation

Notion

Answer callers from your Notion pages and databases, and add new entries to a database.

Your receptionist can search your Notion workspace, read a page, and look through a database, such as a price list, a product table, or a list of open jobs, to answer callers. Reading goes through webhook tools with a Notion internal connection, which works on every Notion plan and only sees the pages you share with it. Adding entries to a database also works with a webhook tool, through a second connection that can only add content. You can use Zapier for that instead, but the webhook tool is recommended: it doesn’t need a Zapier account or use your Zapier tasks, and each request goes straight to Notion. The webhook tool can’t fill the title property, though, so if your entries need a real title, use Zapier.

If your Notion content rarely changes, you may not need an integration. Export the page from Notion and upload it to your knowledge base instead.

Your receptionist can read everything you share with the connection and repeat it to callers. Share only pages that callers may hear about, and add a rule that your receptionist never reads private records, such as client details, back to callers.

Set up

1

Create an internal connection

You need to be a workspace owner. Go to app.notion.com/developers/connections, select Internal connections, then Create a new connection. Name it Reception.ai and choose your workspace. On the Configuration tab, allow reading content only, and copy the API token.

2

Share pages with the connection

Open the connection’s Content access tab, select Edit access, and choose the pages and databases your receptionist should read. You can also open a page in Notion, select ••• → Connections → + Add connection, and pick Reception.ai. Child pages are shared too.

3

Find the data source ID

To let your receptionist read a database, open the database’s settings in Notion, select Manage data sources, open the ••• menu next to the data source, and select Copy data source ID.

4

Create the webhook tools

Create the tools below. For each one, go to Integrations, select Add integration, and choose Webhook Tool.

5

Test it

Test your receptionist by asking a question that one of your shared pages answers.

Tools

Every tool sends these request headers:

HeaderTypeValue
AuthorizationSecretBearer followed by your connection’s token
Notion-VersionValue2026-03-11

Set Assign to agents to Receptionist on each tool, and select Enable.

Search pages

FieldValue
Namesearch_notion
Description”Search our Notion pages by title. Use it when a caller asks something our documents might answer, then read the best match with read_notion_page.”
MethodPOST
URLhttps://api.notion.com/v1/search
Body Parametersquery (string, required): “A short title to search for, such as pricing or opening hours.”
page_size (number, fixed value): 10

Read a page

FieldValue
Nameread_notion_page
Description”Read the full text of a Notion page found with search_notion.”
MethodGET
URLhttps://api.notion.com/v1/pages/{page_id}/markdown
Path Parameterspage_id (string, required): “The id of a page returned by search_notion.”
Query Parametersmarkdown_version (string, fixed value): v2

Read a database

FieldValue
Nameread_notion_table
Description”List the rows of our price list. Use it when a caller asks about prices or what we offer.” Describe your own table here instead.
MethodPOST
URLhttps://api.notion.com/v1/data_sources/DATA_SOURCE_ID/query
Body Parameterspage_size (number, fixed value): 100

Replace DATA_SOURCE_ID with the ID you copied. Create one tool per database, each with its own name and description.

To save something from a call to a Notion database, such as a lead or a callback request, create a tool that adds an entry.

1

Create a connection for new entries

Create a second internal connection, for example Reception.ai entries, the same way as the first. On the Configuration tab, allow inserting content only, and copy its API token. On Content access, share only the database it adds entries to. This connection can’t read anything back, so the entries stay private.

2

Prepare the database

Copy the database’s data source ID, as in Set up. Each property the tool fills is a key in the request, and keys can’t contain spaces, so give those properties one-word names, such as Phone, Email, and Status.

3

Create the webhook tool

Go to Integrations, select Add integration, and choose Webhook Tool.

FieldValue
Nameadd_notion_entry
Description”Save a new lead to our leads database when a caller wants a quote or a callback.” Describe your own database here instead.
MethodPOST
URLhttps://api.notion.com/v1/pages
Request HeadersAuthorization (Secret): Bearer followed by the new connection’s token
Notion-Version (Value): 2026-03-11
Body Parametersparent (object, required)
markdown (string, required)
markdown_version (string)
properties (object, required)
Assign to agentsReceptionist

Set up the body parameters like this:

  • parent: one field, data_source_id (string, fixed value): your data source ID.
  • markdown (from the conversation): “The entry as Markdown. Start with a line # followed by the caller’s name and what they need, for example # Jane Doe: quote for a new boiler. Then add a blank line and the details of the request.”
  • markdown_version (fixed value): v2
  • properties: select Add field once for each property to fill. Each one is an object named exactly like the property, with one field for its value:
    • Phone (object): phone_number (string, from the conversation): “The caller’s phone number.”
    • Email (object): email (string, from the conversation): “The caller’s email address, spelled back to them. Leave it out if they didn’t give one.”
    • Status (object, required): select (object, required), with one field, name (string, fixed value): New

Notion documents that when the title property is left out, the first # heading becomes the page’s title; its docs only show this for pages created inside a page, so check that it works for your database. Either way, the heading and details are saved as the entry’s content, and the phone, email, and status properties are filled in. Leave the title property out of properties: Notion nests title and text values six levels deep, one more than webhook tools allow. Phone number, email, URL, number, checkbox, select, and date properties fit. A Status-type property takes status instead of select.

Select Enable, then test your receptionist by asking for a callback. The entry appears in the database.

Add database entries with Zapier

To add entries through Zapier instead, connect Zapier. In your Zapier MCP server at mcp.zapier.com, add the Notion Create Data Source Item action, set the database to a fixed value, and let the AI fill in the fields. In Reception.ai, open the Zapier integration’s Tools tab, select Refresh tools, and assign the action to the Client (receptionist).

Use the knowledge base instead

For content that doesn’t change often, the knowledge base is simpler and faster than live lookups. In Notion, open the page’s ••• menu, choose More → Export, and pick PDF, HTML, or Markdown & CSV. HTML and Markdown exports download as a zip file, so unzip it first. Then upload the file. Databases export to CSV, which the knowledge base doesn’t accept, so export databases as PDF. Export and upload again when the content changes.

Limitations

  • Notion’s search matches page and database titles, not the text inside pages. Give pages clear titles, such as “Cancellation policy”.
  • read_notion_table returns the first 100 rows and only their properties, not the content inside each row’s page. Keep tables your receptionist reads small.
  • Notion’s hosted MCP server needs a browser sign-in, except on Business and Enterprise plans, where a workspace owner can create an MCP token. The webhook tools above work on every plan.
  • add_notion_entry can’t fill title or text properties. Put names and notes in the heading and content instead.
  • If you add entries through Zapier, each Zapier action your receptionist runs uses tasks from your Zapier plan. Zapier currently counts two tasks per successful call.

Troubleshooting

ProblemWhat to check
401 from NotionThe Authorization header must be Bearer followed by the connection’s token.
400 about the versionSet Notion-Version to 2026-03-11.
404 or object_not_foundShare the page or database with the connection, and use the data source ID, not the database ID.
403 on read_notion_pageThe connection needs permission to read content.
403 on add_notion_entryThe entries connection needs permission to insert content, and access to the database.
400 validation_error on add_notion_entryEach key in properties must match a property name exactly, and its field must match the property’s type.
New entries show as UntitledNotion didn’t take the # heading as the title for your database. The heading is still at the top of each entry’s page, and you can find entries by their phone or status. To get a title, use the Zapier option.
Search finds nothingSearch only matches titles, and only of pages shared with the connection.
The receptionist is slow on a large tableLarge tables return a lot of data. Split the table, or move the content to the knowledge base.