CRM and leads, campaign measurement, jobs, briefs, approvals, meetings, shared content, social reporting, and billing — all behind a secure, client-scoped login.
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.
Clients request a short-lived, single-use email link at /portal/login. Client and staff authentication remain completely separate.
A verified link creates an HttpOnly cookie session. Raw link credentials are never stored in localStorage or the database.
Every page and API endpoint checks permissions like canViewInvoices, canApproveWork, and canSubmitRequests before rendering.
All database queries filter by the authenticated client ID. No clientId parameter needed — it is implicit.
From relationship management and campaign outcomes to delivery, review, and billing — each view is scoped to the client and their permissions.
The client's home base — active projects, pending approvals, recent notifications, and their assigned team members.
Client-scoped contacts, companies, opportunities, lead follow-up, response status, and won outcomes.
Permission-gated campaign trends, spend, leads, outcomes, and separate browser, server, and CRM evidence.
Upcoming sessions, shared recordings, review-ready video, and feedback kept with the client relationship.
Structured brief intake plus approved social inbox, listening, reporting, and news 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.
Attach files, creative assets, or documents to an approval step for client review.
Clients can approve the work, request revisions with specific feedback, or leave inline comments.
Every approval, revision, and comment is timestamped and attributed. Complete accountability.
See which approvals are pending, in review, approved, or need changes — at a glance.
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.
Job requests for new work (projects, revisions, strategy) and support tickets for issues (billing, access, bugs).
Each type has its own categories — design, development, content for jobs; billing, access, feedback for support.
Built-in message thread per request. Clients and staff exchange updates without leaving the portal.
Staff can leave internal notes that are invisible to the client — perfect for handoff context and team coordination.
Clients see their assigned project managers on the dashboard with email and phone contact buttons.
The project detail page shows all team members assigned to tasks — controlled by the show_team_members setting.
Click any invoice to see the full line-by-line breakdown — descriptions, quantities, prices, and amounts.
Overdue invoices show exact days overdue with color-coded badges — 30d, 60d, and 90+ day aging buckets.
Full invoice detail opens in a slideover — subtotals, tax, discounts, payments, and outstanding balance at a glance.
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.
Controls whether the client can see their billing history and download invoices.
Determines if the client can submit approval responses — approve, revise, or comment.
Allows the client to leave comments on projects and deliverables.
Controls whether the client can submit job requests and support tickets.
A branded portal that makes your agency look polished — and keeps clients in the loop without the email back-and-forth.
Get Started