Portal Adoption Funnel
Per PortalSite: total invited, activated, active-30-day, active-7-day, with invite-to-activate and activate-to-engaged conversion rates. The Portal Manager's adoption KPI.
Create a recognizable client workspace with explicit access to each shared project.
When a client engagement winds down or a ClientUser leaves the customer side, Portal Manager flips ClientUsers.Status: Active → Suspended (temporary) or Deactivated (permanent).
| Portal Code | Name | Account | Subdomain Slug | Custom Domain | OAuth Provider |
|---|---|---|---|---|---|
| PC-539 | Site 281 | ACC-549 | SS-294 | CD-543 | None |
| PC-803 | Site 504 | ACC-389 | SS-446 | CD-382 | |
| PC-628 | Site 498 | ACC-775 | SS-270 | CD-689 | Microsoft |
| PC-341 | Site 146 | ACC-163 | SS-796 | CD-264 | Okta |
| PC-352 | Site 528 | ACC-598 | SS-591 | CD-439 | OneLogin |
| PC-886 | Site 577 | ACC-840 | SS-422 | CD-345 | None |
Admin configures the foundation: BrandThemes (color palette, logo, typography defaults — one per customer brand or per delivery-team brand), EmailTemplates (per-event branded templates for invitation, document notification, approval request, decision callback, status update, comment notification, weekly digest, and inactive-user reminder), and the PortalSites master (one row per Account tenant — PortalCode, Account, BrandTheme, SubdomainSlug, optional CustomDomain, OAuthProvider if SSO, MagicLinkEnabled, DefaultEmailTemplate, Owner Portal Manager). Brand changes that affect a live PortalSite flow through the MDM approval workflow with Admin sign-off; email templates preview-render against a fixture row before publish.
Portal Manager picks which internal Projects (read from Project Management) to expose on each PortalSite via the PortalProjects line items: snapshots the ProjectName, sets DisplayOrder, marks Status: Active. A Project hidden mid-engagement flips to Status: Hidden rather than being deleted, so historical DocumentShares, ApprovalRequests, and ClientActivities keep their referential anchor for audit.
Portal Manager creates a ClientUsers row (FullName, Email, PortalSite, Account, ClientRole: Approver / Collaborator / Viewer) and grants per-project access via PortalUserAccess rows (one per PortalProject with AccessLevel: View / Comment / Approve). On Status: Invited set, the client-user-invite workflow fires via the configured record event. A configured workflow service provisions the OAuth / SSO entry when PortalSite.OAuthProvider is set, generates a MagicLinks row with Purpose: InviteSetup and ExpiresAt: now + 7 days, and notification service delivers the branded invitation using the PortalSite’s themed EmailTemplates row. The client clicks the link, completes setup (password or SSO bind), and the magic-link auth handler flips ClientUsers.Status: Invited → Active and stamps ActivatedAt.
An active client role does not grant every project. Check the site, user and project grant together. Suspending a user or hiding a project must also close access through existing links. PortalSites, PortalProjects and ClientUsers establish separate tenant and project boundaries. Bind each external login to ClientUsers.PrincipalID; shared email addresses and Account text do not grant membership. Effective access is the intersection of active site, active ClientUser, active PortalProject and active PortalUserAccess. The role and grant must both permit the action. Every list, export, attachment, notification and direct API request rechecks this scope; hiding a card is insufficient. MagicLinks.Token stores only a one-way hash of a high-entropy token. Tokens are purpose, recipient, project, target and expiry bound, redeemed atomically once, and revoked on access removal. Opening an email link displays a confirmation page; link previews and GET requests cannot approve a decision. ApprovalAction requires a verified session and an explicit confirmation POST with expected request revision. Tokens and signatures never appear in analytics, application logs or audit exports.
Create a recognizable client workspace with explicit access to each shared project.
Publish the right version of a document and see whether its intended recipients have acknowledged it.
Ask a named client approver for a decision with the relevant evidence and a traceable outcome.
Share a consistent project update with exactly the audience that should receive it.
Keep feedback attached to the document, request or update the conversation is about.
Find stalled approvals and inactive client accounts while preserving a useful decision trail.
Per PortalSite: total invited, activated, active-30-day, active-7-day, with invite-to-activate and activate-to-engaged conversion rates. The Portal Manager's adoption KPI.
| Portal Code | Name | Account | Subdomain Slug | Custom Domain |
|---|---|---|---|---|
| PC-539 | Site 281 | ACC-549 | SS-294 | CD-543 |
| PC-803 | Site 504 | ACC-389 | SS-446 | CD-382 |
| PC-628 | Site 498 | ACC-775 | SS-270 | CD-689 |
| PC-341 | Site 146 | ACC-163 | SS-796 | CD-264 |
| PC-352 | Site 528 | ACC-598 | SS-591 | CD-439 |
| PC-886 | Site 577 | ACC-840 | SS-422 | CD-345 |
Per EmailTemplate per PortalSite per week: sends, opens (via DigestOpen MagicLinks redemption), bounces (via integration callback). Surfaces template fatigue and deliverability issues.
Owns the ClientUsers list and access grants for one or more PortalSites. The day-to-day operator of the external user lifecycle — invitations, role changes, suspensions, access reviews.
CRUD on ClientUsers, PortalUserAccess, PortalProjects (add / hide / archive), and MagicLinks (reissue)Read on PortalSites, BrandThemes, EmailTemplates, DocumentShares, ApprovalRequests, StatusUpdates, Comments, ActivityFeed, ClientActivities for owned PortalSitesView ClientUsers.Email and ApprovalDecisions.SignatureBlobTrigger the client-user-invite workflow and issue ad-hoc magic-linksInternal Project owner. Publishes DocumentShares, ApprovalRequests, and StatusUpdates for own projects; reads ClientUser engagement on own projects.
CRUD on DocumentShares, ApprovalRequests, StatusUpdates, and Comments where the PortalProject.Project is one this user owns or is assigned to in Project ManagementRead on ClientUsers and ClientActivities scoped to own projectsRead on DocumentDownloads and ApprovalDecisions for own projectsCannot CRUD PortalSites, BrandThemes, EmailTemplates, or PortalUserAccess (Admin / Portal Manager own those)Customer-success operator. Watches client engagement across an account portfolio, follows up on inactive clients, escalates disengagement risk to Project Managers and Portal Manager.
Read on ClientUsers, ClientActivities, DocumentDownloads, ApprovalRequests, ApprovalDecisions, StatusUpdates, and ActivityFeed for ClientUsers within owned accountsReceive the client-activity-digest weekly email and the inactive-user-reminder ccCRUD on Comments and CommentReplies on own-account threadsCannot modify ClientUsers (Portal Manager owns), cannot publish documents or status updates (Project Manager owns)Limited internal contributor — a designer, engineer, analyst, or specialist who needs to participate in client conversations on own projects but not publish artifacts.
Read on DocumentShares, ApprovalRequests, StatusUpdates, and ActivityFeed for own projectsCRUD on Comments and CommentReplies on own-project threadsCannot publish DocumentShares, StatusUpdates, or ApprovalRequests (Project Manager owns)Cannot view ClientUsers.Email or ClientActivities| Posted At | Parent Type | Portal Project | Author Client User | Author Internal User |
|---|---|---|---|---|
| DocumentShare | PP-2886 | GK | AIU-378 | |
| ApprovalRequest | PP-4603 | LR | AIU-370 | |
| StatusUpdate | PP-1143 | WZ | AIU-379 | |
| DocumentShare | PP-5825 | NN | AIU-639 | |
| ApprovalRequest | PP-5299 | UD | AIU-496 | |
| StatusUpdate | PP-1444 | EC | AIU-571 |
External client user with approval authority. Acts on ApprovalRequests routed to self; reads own portal content; participates in comment threads.
Read on own PortalSite's exposed PortalProjects (via PortalUserAccess), DocumentShares, StatusUpdates, ApprovalRequests where RequestedFromClient = self, and ActivityFeed scoped to accessible projectsCRUD on ApprovalDecisions for own pending requests, Comments, CommentReplies, and DocumentDownloads (write on download)View MagicLinks issued to self via the inbound URL handler onlyCannot view other ClientUsers' email, cannot view ClientActivities, cannot access projects not granted via PortalUserAccessExternal client user with comment + read access. Same scope as Viewer but can post Comments and CommentReplies.
Read on own PortalSite's exposed PortalProjects, DocumentShares, StatusUpdates, ApprovalRequests, and ActivityFeed scoped to accessible projectsCRUD on Comments, CommentReplies, and DocumentDownloads (write on download)Cannot decide on ApprovalRequests (Approver only)Cannot view other ClientUsers' email or ClientActivitiesExternal client user with read-only access. The default tier for client stakeholders who need visibility but no contribution rights.
Read on own PortalSite's exposed PortalProjects, DocumentShares, StatusUpdates, ApprovalRequests, and ActivityFeed scoped to accessible projectsWrite only on DocumentDownloads (system-recorded on download)Cannot post Comments, cannot decide on ApprovalRequests, cannot view other ClientUsers' email or ClientActivitiesGive clients a branded entry point and the specific project access their work requires.
3 stages · 1 approval
Make a protected project document available to the intended client audience and record explicit acknowledgment.
3 stages · 0 approvals
Keep project communications relevant and follow up using permitted engagement evidence.
4 stages · 0 approvals
Create your ERP.AI account and get started with Proto.
We use essential cookies to run the site and optional cookies for features, analytics, and relevant content. See Cookie policy
We use cookies to enhance your experience, analyze site traffic, and serve relevant content. By clicking "Accept All," you agree to our use of cookies. You can customize your preferences at any time.
Learn more about how we use cookiesThese cookies are required for the website to function properly. They ensure security, enable basic features like page navigation, and store user session data. You cannot disable these cookies.
These cookies enable additional features that enhance your experience, such as live chat, video playback, personalized content recommendations, and remembering user preferences.
These cookies help us understand how visitors interact with our site by collecting anonymous usage data. This allows us to measure performance, detect issues, and continuously improve the user experience.
These cookies allow us and advertising partners, including X, to deliver ads tailored to your interests. They track browsing habits across sites to provide relevant advertising and measure ad effectiveness.