Skip to Content
New FeaturesNew Feature: White-Label & Client Portal

New Feature: White-Label & Client Portal

Priority: 🟢 Post-MVP
Area: Product / Multi-Tenancy
Competitive Reference: Agency-focused platforms (SEMrush Agency, Jasper for Teams), Predis.ai (multi-brand management)


Why This Matters

Digital marketing agencies want to present AI-generated deliverables under their own brand to clients, not under “Leadmetrics.” A white-label client portal lets agencies:

  • Share deliverables with clients for review/approval under the agency’s brand
  • Give clients read-only dashboards showing their marketing performance
  • Maintain the agency’s professional image

What Leadmetrics Has Today

  • Multi-tenant architecture — each agency tenant is separate
  • Client context page — stores client business info
  • DM portal (apps/dm/) — internal reviewer portal for agency staff
  • Approval workflow — content flows through DM review → client review stages
  • No client-facing portal — clients cannot log in to view their own content
  • No white-label — all apps show Leadmetrics branding
  • No custom domain — all tenants use {subdomain}.leadmetrics.app

Proposed Implementation

Phase 1 — Client Portal Access

  1. Add clientUser role to the auth system
  2. Client users can log in and see:
    • Approved deliverables pending their review
    • Published content
    • Performance reports
    • AI chat (client-facing, limited tools)
  3. Client users CANNOT see:
    • Draft content, agent runs, costs, strategy internals
    • Other tenants or agency-level settings

Phase 2 — White-Label Branding

Add to Tenant model:

model TenantBranding { id String @id @default(cuid()) tenantId String @unique agencyName String // "Acme Digital Agency" agencyLogo String? // URL to uploaded logo primaryColor String // Hex color secondaryColor String? // Hex color faviconUrl String? customDomain String? // "portal.acmedigital.com" emailFromName String? // "Acme Digital" emailFromDomain String? // "acmedigital.com" tenant Tenant @relation(fields: [tenantId], references: [id]) }

Dashboard applies branding dynamically:

  • Logo in navbar
  • Primary/secondary colors via CSS variables
  • Agency name in page titles and emails
  • Favicon override

Phase 3 — Custom Domain

  • Tenant sets customDomain (e.g., portal.acmedigital.com)
  • DNS CNAME → proxy.leadmetrics.app
  • Nginx/Caddy auto-provisions SSL via Let’s Encrypt
  • Dashboard renders with the custom domain and agency branding

Phase 4 — Branded Reports & Emails

  • Report PDFs generated with agency logo and colors
  • All notification emails sent from agency’s email domain (via SendGrid/SES domain verification)
  • Approval request emails show agency branding

© 2026 Leadmetrics — Internal use only