What exists and what must not be inferred

The portal module requires customer_accounts. Current pages cover entry, login, signup, verification, password reset, dashboard, and profile. Modules can extend navigation and widgets.

Permission names for catalog, quotes, orders, and invoices, plus promotional landing cards, are not evidence of a complete process. Review the page, API, authorization, integration, and end to end journey before classifying it.

Customer access needs an explicit identity model

Staff and customer authentication are separate systems. Tenant, organization, CRM company, contact person, customer user, role, and feature are also distinct boundaries. Design the relationship and test denial for the wrong organization and another company.

Evidence for this section:

A custom domain is a separate operating workstream

Current source covers domain registration, DNS and TLS checks, routing resolution, and retry jobs. A project still needs owners for the domain and DNS, certificate policy, environments, routing secrets, email links, monitoring, incident response, rollback, and decommissioning.

Evidence for this section:

One journey is the unit of scope

For one persona and one outcome, record the system of record, identifiers, reads and writes, freshness, idempotency, retries, reconciliation, outages, retention, exceptions, evidence, and owners. Only then is the journey estimable and testable.

Supplier positioning is not deployment evidence

Public material uses terms such as self service, ordering, invoices, and fully branded portals. Here they provide search expectation context only. Capability state comes from current code, routes, APIs, tests, and evidence from the actual application.

Evidence boundary

Release, current source, and review date

Latest verified public tag
v0.6.5
Current source revision
01911d00e28f44cf484d0b1d04860dcfef5370bf
Reviewed

Customer Accounts and Portal entered public release history in v0.4.8. Custom portal domains were announced in v0.6.1. The inventory below was checked against later current source at the exact revision shown, not inferred back into either release.

Portal foundation inventory

State describes the evidence boundary, not a promised outcome. Every row needs a fresh check for the actual application and enabled modules.

Open: Portal foundation inventory18 items
Portal foundation inventory
MechanismStateExact evidenceRelease or current sourceSafe inferenceBoundaryPrerequisiteAccountable ownerReviewed
Landingavailable foundationportal/frontend/[orgSlug]/portal/page.tsxCurrent source at the reviewed revision; release history is stated separatelyPublic portal entry with sign in and signup linksPromotional cards do not prove an order or invoice journeyEnabled modules, configured application, and project acceptancePortal product and delivery owner2026-07-14
Customer loginavailable foundationportal/login/page.tsxCurrent source at the reviewed revision; release history is stated separatelySeparate customer authentication entryProduction policy, email delivery, rate limits, and recovery still need deployment evidenceEnabled modules, configured application, and project acceptanceIdentity and security owner2026-07-14
Signupconfigurableportal/signup/page.tsxCurrent source at the reviewed revision; release history is stated separatelyA first party enrollment route existsInvite only versus open signup is a project policyApproved policy, configuration, server enforcement, and testsIdentity and security owner2026-07-14
Email verificationavailable foundationportal/verify/page.tsxCurrent source at the reviewed revision; release history is stated separatelyVerification route and token flow existDelivery, expiry, abuse handling, and support must be accepted locallyEnabled modules, configured application, and project acceptanceIdentity and security owner2026-07-14
Password resetavailable foundationportal/reset-password/page.tsxCurrent source at the reviewed revision; release history is stated separatelyReset route exists in current sourceThe configured email and recovery journey still need an end to end testEnabled modules, configured application, and project acceptanceIdentity and security owner2026-07-14
Dashboardavailable foundationportal/dashboard/page.tsxCurrent source at the reviewed revision; release history is stated separatelyDashboard shell accepts injected widgetsIt can be empty and does not prove any business widgetEnabled modules, configured application, and project acceptancePortal product and delivery owner2026-07-14
Profileavailable foundationportal/profile/page.tsxCurrent source at the reviewed revision; release history is stated separatelyCurrent profile, roles, and resolved features are visibleA profile is not complete company account administrationEnabled modules, configured application, and project acceptancePortal product and delivery owner2026-07-14
Navigationconfigurablecustomer_accounts/api/portal/nav.tsCurrent source at the reviewed revision; release history is stated separatelyRoute manifests and feature grants shape navigationA visible item is not server authorization or a completed journeyApproved policy, configuration, server enforcement, and testsPortal product and delivery owner2026-07-14
Notificationsavailable foundationcustomer_accounts/api/portal/notifications.tsCurrent source at the reviewed revision; release history is stated separatelyCustomer notification APIs existBusiness notification coverage and delivery reliability are project evidenceEnabled modules, configured application, and project acceptancePortal product and delivery owner2026-07-14
Invitationsavailable foundationcustomer_accounts/api/post/invitations/accept.tsCurrent source at the reviewed revision; release history is stated separatelyInvitation and acceptance mechanisms existWho may invite, which role is assigned, and recovery remain policy decisionsEnabled modules, configured application, and project acceptancePortal product and delivery owner2026-07-14
Customer roles and featuresconfigurablecustomer_accounts/setup.tsCurrent source at the reviewed revision; release history is stated separatelySeeded roles and wildcard aware feature checks existFeature names are access vocabulary, not page or workflow proofApproved policy, configuration, server enforcement, and testsIdentity and security owner2026-07-14
Session managementavailable foundationcustomer_accounts/api/portal/sessions.tsCurrent source at the reviewed revision; release history is stated separatelyUsers can inspect active sessions and current source supports revocationCookie policy, duration, support, and incident response remain deployment responsibilitiesEnabled modules, configured application, and project acceptanceIdentity and security owner2026-07-14
Company user administrationconfigurablecustomer_accounts/api/portal/users.tsCurrent source at the reviewed revision; release history is stated separatelySame company user listing and role administration APIs existCompany association must be correct and independently testedApproved policy, configuration, server enforcement, and testsPortal product and delivery owner2026-07-14
Injection pointscustomportal/frontend/[orgSlug]/portal/dashboard/page.tsxCurrent source at the reviewed revision; release history is stated separatelyModules can inject widgets and page contentEach injected journey needs implementation, authorization, and acceptanceDesign, implementation, authorization, and acceptancePortal product and delivery owner2026-07-14
CRM linksconfigurablecustomer_accounts/AGENTS.mdCurrent source at the reviewed revision; release history is stated separatelyCustomer users can link to CRM people and companiesMatching and ownership rules need project review and reconciliationApproved policy, configuration, server enforcement, and testsPortal product and delivery owner2026-07-14
Organization bound routesavailable foundationapps/mercato/src/app/(frontend)/[...slug]/page.tsxCurrent source at the reviewed revision; release history is stated separatelyProtected routes compare session organization with the URL organizationOrganization scope is distinct from CRM company scopeEnabled modules, configured application, and project acceptancePortal product and delivery owner2026-07-14
Controlled rolloutconfigurablecustomer_accounts setup and feature checksCurrent source at the reviewed revision; release history is stated separatelyRoles, features, and account activation can constrain accessA safe pilot still needs environment, monitoring, support, and rollback ownersApproved policy, configuration, server enforcement, and testsPortal product and delivery owner2026-07-14
Custom domainsconfigurablecustomer_accounts/api/admin/domain-mappings.tsCurrent source at the reviewed revision; release history is stated separatelyRegistration, DNS checks, TLS checks, routing, workers, and schedules existDomain ownership, DNS, certificates, email links, monitoring, rollback, and decommissioning remain operational workApproved policy, configuration, server enforcement, and testsDomain and operations owner2026-07-14

B2B journey matrix

Open: B2B journey matrix18 items
B2B journey matrix
Business journeyReviewed stateWhat must be decided or proven
Account accessavailable foundationChoose invitation or signup, verification, recovery, and session policy
Profileavailable foundationDefine allowed changes, evidence, and support
Company user managementconfigurableRequire company association, delegated roles, and negative scope tests
Catalog visibilitynot evidencedA seeded permission name does not establish a first party catalog page
Customer specific assortmentcustomDefine entitlement source, price and product ownership, and denial behavior
Price listscustomDefine source of truth, effective dates, currency, and reconciliation
Quote requestscustomThe permission vocabulary is not an accepted quote journey
Cartnot evidencedNo complete first party cart route was found in the reviewed portal tree
Order creationcustomRequires product, price, validation, approval, idempotency, and fulfillment contracts
Order history and statusintegration requiredRequires a system of record, identifier mapping, freshness, and outage behavior
Invoice accessintegration requiredRequires document authority, authorization, retention, and failure handling
DocumentscustomDefine storage, classification, visibility, retention, and missing document behavior
ReturnscustomDefine eligibility, approval, inventory, payment, and exception paths
Delivery trackingintegration requiredCarrier or order system acknowledgement and reconciliation are required
Support requestscustomDefine case ownership, routing, service policy, escalation, and evidence
NotificationsconfigurableThe foundation exists, but each trigger, channel, preference, and failure path is project scope
Paymentsintegration requiredRequires gateway, checkout, idempotency, webhook, reconciliation, and refund evidence
Approvals and partner journeyscustomDefine roles, separation of duties, state transitions, and accountable owners

Identity and authority boundaries

Open: Identity and authority boundaries8 items
Identity and authority boundaries
BoundaryMeaningManager check
Staff authenticationInternal operator identityDo not reuse it as customer identity evidence
Customer authenticationSeparate customer user, credentials, sessions, roles, and featuresMust be tied to the intended tenant and organization
TenantTop data partition in the reviewed application modelDoes not define the commercial customer account by itself
OrganizationOperational scope used by routes and authorization contextIs not automatically the CRM company or account
CRM company or accountBusiness customer relationship recordMust be linked and reconciled with customer users deliberately
CRM personBusiness contact recordIs not the same object as a login account
Customer userPortal login identity that may link to person and companyLifecycle and recovery need an owner
Role and featureAccess vocabulary used by server checks and navigationUI visibility never replaces server enforcement

Account and journey decision path

  1. Name one measurable customer outcome and one persona. Stop if the portal is still one undifferentiated estimate.

  2. Choose invitation only or open signup. Record who approves activation and what verification evidence is retained.

  3. Choose password, magic link, or both. Define reset, session revocation, inactive account, and recovery paths.

  4. Define tenant, organization, customer company, person, and customer user relationships. Test wrong organization and cross company denial.

  5. Assign the default role, delegated portal administrator, allowed features, and server side enforcement point.

  6. Choose the organization URL or a custom domain. Assign domain, DNS, TLS, email link, monitoring, incident, rollback, and decommission owners.

  7. Define deactivation, role removal, session revocation, password reset, account recovery, and retained evidence before onboarding users.

  8. For the chosen object and action, name the system of record, identifiers, read and write direction, freshness, and retention.

  9. Classify the journey as foundation, configurable, custom, integration required, or not evidenced. Do not promote it from UI text.

  10. Define retry, idempotency, reconciliation, outage, stale data, duplicate submission, and missing document behavior.

  11. Assign business, delivery, security, privacy, integration, support, domain, and exit owners.

  12. Accept one thin end to end journey in a controlled environment before expanding the portal.

Staged delivery and acceptance

Open: Staged delivery and acceptance7 items
Staged delivery and acceptance
StageEntry evidenceOwnerPassStopContainmentEvidence retained
Foundation verificationIdentity and route inventoryDelivery ownerExact route and API evidence reviewedMissing account model or environmentContain scope and keep access closedInventory and decision log
Thin journeyOne persona and outcomeBusiness ownerNormal and denied paths passUnknown system of record or authorityDisable the journeyTest trace and reconciliation sample
Controlled pilotNamed pilot group and supportOperations ownerExceptions are handled within policyScope leak, unresolved incident, or no supportRevoke pilot accessPilot log and incident notes
Business reconciliationSource and portal recordsData ownerCounts, states, and exceptions reconcileUnexplained differencePause writes and investigateSigned reconciliation report
Operational rehearsalMonitoring, domain, email, backup, recoveryService ownerAlert, recovery, and support paths workNo owner or failed recoveryReturn to test environmentRehearsal evidence
Go or no goAll blockers and residual risksAuthorized sponsorEvery blocker closed or explicitly rejectedAny critical criterion openNo launchDated approval record
Incremental expansionOne additional journey at a timeProduct ownerNew journey passes the same gatesPrior journey unstable or unownedDo not expandUpdated inventory and acceptance pack
Open: Portal scope worksheet

Local planning tool

Portal scope worksheet

Use abstract role labels and evidence references only. Do not enter credentials, personal data, customer or company names, commercial secrets, record identifiers, tokenized URLs, infrastructure addresses, or production configuration. Data stays in this browser and is never submitted by this page.

Privacy: this page does not submit worksheet content, place it in the URL, or store it in cookies.

Required-field progress: Not started (0/19). This is not a fit score or readiness decision.
Planning row 1

Hypothetical examples

Open: Synthetic examples2 items

Synthetic example

Hypothetical distributor order status

Persona or role label
Buyer role A
Customer account boundary
One fictional distributor account
Measurable outcome
See accepted order state without calling support
Entry and authentication method
Invitation only and verified email
Object and action
Read order status
Data shown or changed
Synthetic order state only
System of record
Order system A

Synthetic example

Hypothetical service document request

Persona or role label
Service customer role B
Customer account boundary
One fictional service account
Measurable outcome
Request a missing document and track ownership
Entry and authentication method
Password plus recovery policy
Object and action
Create support request
Data shown or changed
Abstract document category and message
System of record
Case system B

Project acceptance evidence

Open: Project acceptance evidence15 items
  • normal journey
  • denied action
  • cross company access
  • wrong organization
  • expired or revoked session
  • unverified or inactive account
  • integration outage
  • duplicate submission
  • stale data
  • missing document
  • inaccessible widget
  • mobile at 360 px
  • keyboard only
  • reduced motion
  • JavaScript disabled

Poor fit and stop conditions

  • A turnkey storefront is required without product development.
  • The customer account, company, person, user, tenant, or organization model is undefined.
  • No owner exists for the system of record, personal data, integration, reconciliation, support, domain, testing, or rollback.
  • Permissions exist only as UI labels or navigation hiding.
  • An external system, exception path, test environment, or containment plan is missing.

Selected verification sources

Links are contextual evidence. They do not replace review of the actual application.

Open: Source ledger6 items

Method, assumptions and limitations

Reviewed 14 July 2026. Product facts were checked against both the public code at the cited repository revision and official documentation. Where documentation and code differ, this guide describes behavior supported by code. Interpretations and recommendations concern implementation work, not product guarantees.

This material is not a quote, audit, certification, or legal, tax, or accounting advice. Edition, enabled modules, configuration, custom code, infrastructure, data, third-party providers, and operating practices affect the outcome.