Skip to content

Client portal

One SPA. Operators on one side, clients on the other.

The client portal isn't a separate app. It's the same SPA, role-shaped for the client view, branded per organisation. Tickets, billing, knowledge base, document downloads.

  • Same SPA

    No separate frontend to maintain. Branded per organisation. Role-shaped for the client view.

  • Invite-based login

    Email a one-time invite link; the contact sets a password on first use, then signs in with email + password. Passwordless magic-link login is in design.

  • Tenant-isolated

    Row-level security at the database layer. A bug in the SPA cannot return cross-tenant rows because the database refuses.

Branded portal — tickets, billing, KB, invite-based login.

What clients see

Their world, no operator clutter.

  • Tickets — submit, view, comment, attach files, see status
  • Billing — invoice history, outstanding balance, PDF download
  • Knowledge base — published articles, search
  • Documents — assets, runbooks, policies (post-GA via the docs pillar)
  • Profile — contact details, notification preferences

Branding

Per-organisation chrome.

  • Logo upload
  • Primary / accent colours
  • Custom domain (post-GA — currently subdomain of opsmerge.cloud)
  • Email-template branding for outbound notifications

Auth

Invite-based login + VIP contact priority.

  • Invite-based login — email a one-time invite link; the contact sets a password on first use, then signs in with email + password. Passwordless magic-link login is in design.
  • CIPP integration — Entra contact import for client matching, no direct Microsoft Graph wiring per MSP.
  • VIP contact toggle — flag specific contacts as VIP. Future: priority tickets, SLA rules, escalation paths automatically tied to VIP status.

Privacy

Clients see only their stuff. Row-level security at the database layer enforces tenant boundaries. A bug in the client-portal SPA cannot return cross-tenant rows because the database refuses.

Common questions

  • Can clients submit tickets without an account?
    First touch is an invite link: the client gets a one-time link emailed, sets a password, and signs in from then on. Passwordless magic-link login is in design.
  • Can I customise the portal per client?
    Branding is per-organisation (i.e., per-MSP), not per-client of the MSP. We are explicit about that scope.
  • What about white-labelling on a custom domain?
    Custom domain support post-GA. Today, every portal lives on a sub-domain of opsmerge.cloud.
  • Can clients see other clients?
    No. Row-level security enforces tenant isolation at the database layer.
  • What is a VIP contact?
    A contact flagged for priority handling. Future-state: VIPs get priority queue placement, distinct SLA rules, and escalation paths.

Hand clients a portal that doesn't feel bolted on

OpsMerge is a product of Brindleford Technologies Ltd, company number 16871436, registered in England and Wales.