Client Portal

A dedicated spacefor your clients

Project visibility, approval workflows, job requests, invoices, and your team — all behind a secure, client-scoped login.

Separate, secure auth

Clients authenticate through their own cookie-based session system, completely isolated from your internal staff login. No JWTs, no shared tokens.

Every API query is automatically scoped to the authenticated client's data. There is no parameter to override, no way to see another client's projects.

Staff access portal management through the agency dashboard using JWT auth. Clients use cookie auth at /portal. Two systems, zero overlap.

Dedicated login

Clients sign in at /portal/login with their own credentials. Completely separate from staff auth.

Cookie sessions

HttpOnly cookie-based authentication. No tokens in localStorage, no XSS attack surface.

Permission gating

Every page and API endpoint checks permissions like canViewInvoices, canApproveWork, and canSubmitRequests before rendering.

Auto-scoped queries

All database queries filter by the authenticated client ID. No clientId parameter needed — it is implicit.

13 pages, purpose-built

Every page is designed for a specific client need — no feature bloat, no confusion.

Dashboard

The client's home base — active projects, pending approvals, recent notifications, and their assigned team members.

Active
5
Pending
3
Approved
12
Projects
Projects List
Project Detail
Approvals
Approvals List
Approval Detail
Approval Respond
Requests
Requests List
Request Detail
Invoices
Invoice List & Detail
Gallery
Notifications
Settings
Accept Invite

Approval workflows

Upload deliverables for client review — creative assets, copy decks, campaign strategies. Clients can approve, request revisions, or leave comments directly in the portal.

Every action is tracked with timestamps and user attribution. No more email chains, no lost feedback, no ambiguous sign-offs.

Campaign Creative v2
Approved
Approve
Request Changes

Upload deliverables

Attach files, creative assets, or documents to an approval step for client review.

Approve or revise

Clients can approve the work, request revisions with specific feedback, or leave inline comments.

Full audit trail

Every approval, revision, and comment is timestamped and attributed. Complete accountability.

Status tracking

See which approvals are pending, in review, approved, or need changes — at a glance.

Job requests & support

Clients can submit job requests for new work or support tickets for issues — directly from the portal. No more email threads or lost Slack messages.

Each request has a built-in message thread where clients and staff can exchange updates. Internal notes stay hidden from clients, visible only to your team.

Staff manage all requests from the agency dashboard — assign team members, link to projects, set priorities, and track resolution times.

New Request
Job Request
Support
Category
Title
Description
Priority
Low
Normal
High
Urgent
Submit Request

Two request types

Job requests for new work (projects, revisions, strategy) and support tickets for issues (billing, access, bugs).

Category-based routing

Each type has its own categories — design, development, content for jobs; billing, access, feedback for support.

Conversation threads

Built-in message thread per request. Clients and staff exchange updates without leaving the portal.

Internal notes

Staff can leave internal notes that are invisible to the client — perfect for handoff context and team coordination.

Your team, visible

Dashboard team widget

Clients see their assigned project managers on the dashboard with email and phone contact buttons.

Project team members

The project detail page shows all team members assigned to tasks — controlled by the show_team_members setting.

Invoice detail view

Line item breakdown

Click any invoice to see the full line-by-line breakdown — descriptions, quantities, prices, and amounts.

Aging badges

Overdue invoices show exact days overdue with color-coded badges — 30d, 60d, and 90+ day aging buckets.

Slideover detail view

Full invoice detail opens in a slideover — subtotals, tax, discounts, payments, and outstanding balance at a glance.

Fine-grained permissions

Control exactly what each client can see and do. Permissions are checked on every API call and enforced at the UI level — nav items are hidden when access is denied.

canViewInvoices

Controls whether the client can see their billing history and download invoices.

canApproveWork

Determines if the client can submit approval responses — approve, revise, or comment.

canAddComments

Allows the client to leave comments on projects and deliverables.

canSubmitRequests

Controls whether the client can submit job requests and support tickets.

13
Portal pages
4
Permission gates
15
API endpoints
0
Shared tokens

Give your clients apremium experience

A branded portal that makes your agency look polished — and keeps clients in the loop without the email back-and-forth.

Get Started