Client Portal vs Shared Notion Page: Where Each Setup Fails
Agencies often treat “send the client a Notion link” as a client portal. It is sharing. A portal is a different product: each person authenticates as themselves, and the system is allowed to return only their rows. This post is the failure-mode map — not another setup tutorial. If you want the DIY build path, start with How to Build a Client Portal in Notion. If you want the product landing, see Share Notion with clients.
Four setups people call a portal
Almost every Notion-for-clients experiment is one of these four. They look similar in a screenshot. They fail at different layers.
- Public page or Notion Site — anyone with the URL, no login.
- Guest share — invited person uses a Notion account and page permissions.
- Shared database with a filtered view — one page, filter set to “this client.”
- Authenticated portal layer — identity checked on the server; rows scoped before render.
Failure-mode table
Read this left to right as “what breaks first.” Guest-seat math lives in the guest-limit guide. Filter-vs-identity scoping is unpacked in How to scope Notion data per client.
| Failure mode | Public page | Guest share | Filtered shared view | Portal (identity scoping) |
|---|---|---|---|---|
| Who can open it | Anyone with the URL | Invited guest with a Notion account | Anyone with access to that page or database | Authenticated client only |
| Forwardable to another company | Yes — the URL is the access key | If they can add guests or share onward | If they can share the page or copy a link | No — access is bound to the logged-in identity |
| Row isolation | None (one public document) | Page-level only | Filter is UX, not authorization | Server returns only that client’s rows |
| Client can reach sibling clients | If the page includes them | If parent pages or linked DBs are reachable | Often yes if they clear the filter or open the source DB | No, if scoping is enforced before the browser |
| Uses a Notion guest seat | No | Yes | Usually yes | No |
| Client needs a Notion account | No | Yes | Yes | No (magic-link portal login) |
| Branded, non-Notion UI | Notion or Sites chrome | Notion UI | Notion UI | Your portal chrome |
How public pages actually fail
A published Notion page or Site has no client identity. The URL is a capability. Screenshots, Slack forwards, and “can you just send me that link?” all clone access. Notion’s own Sites documentation is explicit that published sites are not a private, per-user login product. Fine for a public process doc. Not fine for invoices, drafts, or another brand’s campaign.
How guest shares actually fail
Guests solve “someone specific can open this page.” They do not solve “this person may only see their rows in a shared database.” Permissions inherit down the page tree. Linked databases and relations are easy to mis-share. On Free, you also hit a workspace-wide guest cap. Buying more Notion seats fixes collaboration with contractors. It does not invent row-level security for twenty concurrent clients.
Guest vs member vs portal client is a different question — access, billing, and UI.
Notion guest vs memberHow filtered views actually fail
A filter labeled “Client is Acme” is a convenience for you. It is not an authorization check. Depending on how the database is shared, a viewer can often change the filter, open the source database, or follow a relation into another client’s record. Treat filters as layout. Treat identity scoping as security.
What a portal has to get right
Three properties, together: (1) the client authenticates as themselves, (2) the server decides which rows they may see before HTML or JSON is sent, (3) they never receive a Notion guest seat or a workspace UI to wander. Portalize is built for that trio on top of databases you already run. It is not a replacement for Notion Sites when you need a public marketing page.
Share Notion with clients through magic-link portals — scoped server-side, no guest seats.
Start freeRelated
Share a Notion page without an account covers the “no Notion login” options. Notion permissions for client work covers why page ACLs are not enough. How to scope Notion data per client is the filter-versus-API follow-up.
Need the secure sharing product page rather than the failure table?
Share Notion with clients