Notion
Connect Notion and pick exactly which pages and databases your agents can touch. They search, read, write and file - inside the boundary you drew.
Questa pagina non è ancora disponibile nella tua lingua - stiamo mostrando la versione in inglese.
You draw the boundary. Notion enforces it.
Most integrations ask you to trust a scope list. Notion doesn't work that way - and neither do we. When you connect, Notion's own consent screen asks you to pick the pages and databases you want to share. Whatever you tick is the entire universe your agents can see. Everything else in your workspace is invisible to Unyo - not filtered, not hidden, not "we promise not to look." Simply not in the grant.
There is no scope parameter in our authorization request. There is nothing for us to quietly widen later. If you want an agent to work in one database, share one database.
The strongest thing on this page
Unyo cannot request more Notion access than you personally select. Our authorization URL carries response_type=code and owner=user - and no scope parameter at all, because Notion's model doesn't have one. Access is page-granular and controlled entirely on Notion's side. To widen it, you open Notion and share another page. We have no mechanism to do it for you.
What you can do once it's connected
Seven tools. Read and write, both real.
| What you say | What actually happens |
|---|---|
| "Search Notion for the Q3 launch brief" | Searches your shared pages and databases, returns titles, URLs and types |
| "Read me the onboarding doc" | Pulls the page's real block content back into the chat |
| "Write this up as a Notion page in Product Specs" | Creates a page - emoji icon, your brand logo as the cover, markdown body, real embedded images - nested inside the parent you named |
| "Add today's notes to the end of that page" | Appends new blocks to the existing page instead of making a second one |
| "Change the title and give it a 🚀" | Updates the title, icon or cover on a page that already exists |
| "Delete that table" | Removes a specific block from the page |
| "Add this to my editorial calendar" | Adds a row to a Notion database, mapping your values onto its real columns |
Pages that don't look like AI output
notion.create_page isn't a text dump. It requires an emoji icon that matches the topic, sets your brand logo as the cover when you have one in your brand kit, and it renders markdown as native Notion blocks - headings, lists, tables. Images written as  become real Notion image blocks, not links. The agent can only use image URLs it actually retrieved from your library or your brand kit; inventing a URL is explicitly forbidden in the tool's own contract.
Database rows with the columns figured out
Say "add this to my editorial calendar" and the agent finds the database by name, reads its real schema, and maps each value onto the correct column type - title, text, number, select, multi-select, date, checkbox, URL. Case-insensitive, so "status" finds Status. Anything that doesn't match a real column is reported back to you rather than silently dropped.
You never write a property mapping. You never learn Notion's API shape.
Which agent should do it?
Notion isn't owned by one agent - connect it once and every agent you talk to can reach it, within the pages you shared. In practice:
- Riley files product specs and adds rows to your roadmap database.
- Ashley drops planned posts into your content calendar.
- Lucy publishes a finished article straight into your wiki.
- Blake writes an analysis up as a page instead of leaving it in the chat.
- Sam files a recurring support issue where the team will actually find it.
Ask whoever you were already talking to. No handoff, no re-explaining.
How to connect
- Open Integrations from the sidebar. (Not Settings - Integrations is its own page.)
- Find Notion under the Productivity filter, and click Connect.
- Notion asks you to log in and select which pages and databases to share. This is the important screen - take thirty seconds on it. Pick a parent page and everything nested inside it comes along.
- Click Allow access. You land back on Integrations with Notion showing as connected.
To share more later, you don't come back here - you go to Notion: open the page → ••• menu → Connections → add Unyo.
Share a parent, not a hundred children
Notion access inherits. Share one top-level page - "Company Wiki", "Content" - and every page nested under it is shared too. Most people over-share by ticking individually, or under-share by picking one leaf page and then wondering why the agent can't find anything.
Permissions - what we ask for, and what we refuse
Notion doesn't hand out granular API scopes the way Google does. It hands out your selection. So this table reads a little differently to our other integration pages.
| What Unyo gets | What it lets an agent do |
|---|---|
| Access to the pages and databases you selected, and nothing else | Search, read, create, update, append to and delete blocks inside that selection |
A user-level grant (owner=user) | Act inside your workspace as you authorised, with no workspace-wide reach |
What we deliberately do not ask for
| Refused | Why it matters |
|---|---|
read_user_with_email | Notion offers to hand us the email address on your Notion account. We don't take it. No current feature needs it, so requesting it would be collecting data for the sake of collecting data. This refusal is written into our compliance rules, not left to discretion. |
| Anything outside your selection | Not a policy - a structural fact. It isn't in the grant. |
What Unyo does with your Notion data
- Your access token is encrypted at rest. It goes through our
pgcryptoencrypt/decrypt routines and is never written to or read from a plain column. As of 16 July 2026, all 17 populated OAuth token columns across the platform are AES-256 encrypted, verified at the cipher-byte level. Zero plaintext tokens exist. - The token is never shown to you, to the model, or to a log. It's resolved transiently to make one outbound call to Notion and then it's gone - never in a tool result, an error message, or a saved log line.
- Your row is yours. Row-level security ties the connection to your account (
auth.uid() = user_id). As of 16 July 2026 we have RLS on 109 of 109 public tables, with 291 policies. There are no unprotected tables. - Nothing is trained on. Every model Unyo runs operates under a no-training guarantee.
- Delete your account and the connection dies with it - the row cascades away automatically, along with roughly 80 other tables, atomically.
Where confirmation is real, and where it isn't
We'd rather tell you this than let you discover it. Unyo's agents are instructed to gather, propose and then execute on Notion - they show you the page before they write it. That's a behavioural rule in the agent's instructions, not a runtime lock, and Notion writes are not held behind a database confirmation gate today the way sending an email or deleting a calendar event is.
There is a hard runtime guard, and it's the one that matters: if the model garbles a tool name, our runtime refuses to run the approximate match on any notion.* tool and forces it to re-issue the exact call. A near-miss can never turn into an accidental write.
And the boundary above all of it: an agent physically cannot touch a page you didn't share.
Try it
Write up this conversation as a Notion page called "Pricing decisions - July", nested under Product Specs, with a 💰 icon.
Add this post to my editorial calendar database: title "Autumn campaign teaser", status Draft, publish date next Tuesday.
Open the onboarding doc in Notion, append a section on the new billing step, and keep the rest untouched.
Optional: file every published post automatically
If you also publish social posts through Unyo, there's a toggle worth knowing about.
Content Library → Notion turns every published post into a Notion page: the caption, the images, the platform, the timestamp - filed automatically, in your workspace, in your language. The first time it runs it creates the parent "Content Library" page for you and remembers where it put it. If you later archive or delete that page, it notices and rebuilds it rather than failing silently.
You turn it on in your automation settings. It does nothing until you do.
Disconnecting - and the honest part about revoking
To disconnect in Unyo: Integrations → Notion → Disconnect. The connection row and its encrypted token are deleted. Your agents lose Notion access immediately.
To revoke at Notion - and you should do both:
Unyo cannot revoke your Notion grant for you
Notion exposes no revocation API. There is no endpoint for us to call. Disconnecting in Unyo deletes our copy of the token - which is the part that matters, because without it we cannot reach your workspace - but the grant itself lives in Notion until you remove it there.
Finish the job at the source: https://www.notion.so/my-integrations, or from the page's ••• → Connections menu, remove Unyo.
We tell you this rather than let you assume. Deleting your Unyo account records Notion's revocation as not supported and hands you the same link, instead of quietly pretending it succeeded.
Removing individual pages is easier than disconnecting entirely: open the page in Notion, ••• → Connections → remove Unyo. The agent loses that page and keeps the rest.
Troubleshooting
"Could not find database X in Notion. Make sure it's shared with the Unyo integration." This is almost always the answer, and it's almost never a bug: the database exists, but it isn't in your selection. In Notion, open the database → ••• → Connections → add Unyo. Then ask again.
The agent can't find a page you know exists. Same cause. Notion search only ever returns what's shared. Check the page's Connections menu - and remember that sharing the parent is usually what you actually want.
"Waiting for connection" appears mid-conversation. An agent reached for Notion and there's no live connection. The run doesn't fail - it pauses and holds the exact call it was making. Connect Notion, and the run picks up from precisely where it stopped. You don't retype anything.
A row went in but one field is empty. Your value didn't match a real column name. Matching is case-insensitive but not fuzzy - "due" will not find "Due date". Unmatched fields are reported back rather than dropped in silence; ask the agent which ones it couldn't place, or ask it to read the database first.
Notion is slow or rate-limits you. Notion caps request rates per integration. We retry automatically on a 429. A large page written all at once can take a moment.
FAQ
Can Unyo see my whole Notion workspace?
No - and not because we choose not to. Notion's OAuth grants access only to the pages and databases you select at the authorization screen. Our authorization request contains no scope parameter, because Notion's model doesn't have one. Whatever you didn't tick is not in the grant, and there is no request we could make to reach it. To widen access, you share another page in Notion yourself.
Will an agent create or delete something without telling me?
Agents are instructed to show you what they're about to write and wait for your go-ahead - that's a rule in their instructions rather than a hard database lock, so we won't pretend it's an unbreakable gate. Two things genuinely are: an agent cannot touch a page outside your selection, and our runtime refuses to execute an approximate tool-name match on any Notion action, forcing the model to re-issue the exact call. If deletion worries you, share a page rather than a whole parent tree - and note that Notion moves deleted blocks to your trash, where you can restore them.
Which agents can use Notion?
All of them, once it's connected - Notion isn't fenced off to a single agent the way your inbox is fenced off to Maya. Riley files specs, Ashley fills the content calendar, Lucy publishes articles, Blake writes up analyses, Sam files support issues. Ask whichever agent you're already talking to.
Do Notion actions cost credits?
The Notion tools themselves are priced at zero - creating a page, searching, appending, adding a database row. What you pay for is the model's own work in the run, billed on real cost at Reading and filing things in Notion is not where your credits go.
Can Unyo revoke my Notion access when I disconnect?
No. Notion provides no revocation API, so there's nothing for us to call. Disconnecting deletes our encrypted copy of your token - which cuts off access in practice, since we can't reach Notion without it - but the grant remains in your Notion account until you remove it at notion.so/my-integrations. We'd rather say so plainly than let you believe a button did something it didn't.
What happens to my Notion connection if I delete my Unyo account?
The connection row and its encrypted token are purged along with everything else - account deletion clears roughly 80 tables atomically. Because Notion offers no revoke endpoint, the deletion report marks Notion as not supported for automatic revocation and gives you the link to finish it yourself, rather than claiming a success that didn't happen.