Notion
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
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.
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.
Create the webhook tools
Create the tools below. For each one, go to Integrations, select Add integration, and choose Webhook Tool.
Tools
Every tool sends these request headers:
Set Assign to agents to Receptionist on each tool, and select Enable.
Search pages
Read a page
Read a database
Replace DATA_SOURCE_ID with the ID you copied. Create one tool per database, each with its own name and description.
Add database entries with a webhook tool (recommended)
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.
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.
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.
Create the webhook tool
Go to Integrations, select Add integration, and choose Webhook Tool.
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):v2properties: 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_tablereturns 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_entrycan’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.