> For the complete documentation index, see [llms.txt](https://docs.notionapps.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.notionapps.com/use-cases/client-portal.md).

# Client Portal

End-to-end story. It **reuses** canonical pages. It does not re-teach screens. For a live workflow + messaging example, start from the template [Client Approval Hub](https://www.notionapps.com/live-apps/client-approval-hub) and [Start from a template](https://docs.notionapps.com/get-started/start-from-a-template).

## What this is / when to use it

A client portal is a **private** app where each client sees their own requests, files, and status, and staff see everyone (or their queue).

When **not** to: a public catalogue with no login. Use a public list + Content landing page.

## Before you start

Notion databases: Clients (or Companies), Requests (or Deliveries), Users, optional Files/Versions. Connect Notion. Decide roles: Client, Staff, Approver.

## Build it (story, not a second manual)

1. [Create an app](https://docs.notionapps.com/get-started/create-an-app) or clone Client Approval Hub.
2. [Private apps](https://docs.notionapps.com/users/private-apps) + [Sign up](https://docs.notionapps.com/users/sign-up) with default Role = Client.
3. [Identity](https://docs.notionapps.com/users/identity-admin): map Role and Active.
4. [Data restriction](https://docs.notionapps.com/databases/data-restriction-and-filters) on Requests by Client/Company. Disable restriction on the staff list.
5. Screens (canonical guides, do not fork):
   * Client: [Home](https://docs.notionapps.com/screens-and-components/types-of-screens/everyday-chrome-screens/home), list of their requests, [Form (Add Item)](https://docs.notionapps.com/screens-and-components/types-of-screens/add-new-item-form), [Details](https://docs.notionapps.com/screens-and-components/types-of-screens/details-view-one-item), [Profile](https://docs.notionapps.com/screens-and-components/types-of-screens/everyday-chrome-screens/profile).
   * Staff: [Work Queue](https://docs.notionapps.com/screens-and-components/types-of-screens/native-automation-and-operational-screen-guides/work-queue-screen) or an update list, [Decision](https://docs.notionapps.com/screens-and-components/types-of-screens/native-automation-and-operational-screen-guides/decision-screen) if you approve.
   * Shared: [Content](https://docs.notionapps.com/screens-and-components/types-of-screens/content) welcome (optional public), [Conversation](https://docs.notionapps.com/screens-and-components/types-of-screens/native-automation-and-operational-screen-guides/conversation-screen) for questions.
6. [App Navigation](https://docs.notionapps.com/screens-and-components/app-navigation): different tabs per role. Hide Select Items and thank-you forms.
7. First automation: [wizard notify or approval](https://docs.notionapps.com/automation/start-from-a-wizard).
8. [Publish & share](https://docs.notionapps.com/publish-and-share). Test with View as Client and View as Staff.

## Every control

None that are unique to “client portal.” If you need a control, open the canonical page in the step above.

## What users see

Clients: home, their rows, submit, status, messages. Staff: queue and all rows. Approvers: Decision inbox.

## Limits and plans

Same as [Plans](https://docs.notionapps.com/plans-and-entitlements). Approvals and messaging need entitlements. File versions consume upload meters — rebind files after sync ([save failed](https://docs.notionapps.com/troubleshooting/save-failed-field-missing-after-sync)).

## Example

A delivery portal: clients sign up, submit a delivery against contracted scopes ([Select Items](https://docs.notionapps.com/screens-and-components/types-of-screens/select-items)), upload files, see status. Staff use an update list + bulk received. Approvers use Decision. That is Client Approval Hub’s shape, not a new screen type.

## Fix problems

Client sees everyone’s rows → restriction. Staff sees nothing → disable restriction on their list. Save failed after adding a files property → rebind. Empty approval inbox → role + published automation, or the publish used the wrong **topic** / item type. Reviews use `client.review.requested` (`decision`); intake uses `client.intake.submitted` (`task`); Wait lists `client.decision.approve` / `changes_requested` / `reject`. See [Topics that perform work](https://docs.notionapps.com/automation/messaging-and-notifications#topics-that-perform-work).

## Related

[Client Review Hub in 15 Minutes](https://docs.notionapps.com/how-to-guides/client-review-hub-in-15-minutes) (short). [Topics that perform work](https://docs.notionapps.com/automation/messaging-and-notifications#topics-that-perform-work). [Mixed public–private](https://docs.notionapps.com/how-to-guides/build-a-mixed-public-private-portal). Other use cases stay stories that link the same pages.
