Tutorials· 2 min read

Shipping White-Labeled Client Portals with $0 Seat Fees: The Agency Playbook

How agencies and consultants build custom client portals with custom domains, tenant-isolated RBAC, and 1-click client handover—keeping 100% of their retainer margin.

FrogField v2 (animated-globe): Shipping White-Labeled Client Portals with $0 Seat Fees: The Agency Playbook
2 min listen

Key takeaways

  • Stop losing agency margin to $39/seat portal tools and Retool viewer fees. Run unlimited client users on a flat $29 (Pro) or $79 (Business) per-app cost.
  • 3-line white-labeling: Customize the app icon, title suffix, theme tokens, and custom domain with zero "Powered by" watermarks.
  • Clean client isolation & handover: Group each client's apps into an isolated Dojo Project, or hand over the repository and database in one click when the engagement ends.

Why per-seat portal tools break agency economics

When an agency builds a client portal on Retool, Airtable, or a SaaS portal builder, the client inevitably asks to invite 40 stakeholders. Suddenly the software bill jumps by $600–$1,500/month—eating straight into your monthly retainer or forcing an awkward upsell conversation.

With FrogBot and Dojo, client seats cost $0. You can charge a client a $500/month hosting and maintenance retainer while your underlying Dojo cost is fixed at $29 or $79/month.

Step 1: Tenant-isolated row-level access control

Every collection in FrogBot supports declarative access control functions that filter queries automatically at the database layer:

export const Deliverables: CollectionConfig = {
  slug: 'deliverables',
  access: {
    read: ({ req }) => {
      if (req.user?.role === 'agency-admin') return true;
      return { clientOrg: { equals: req.user?.clientOrg } };
    },
  },
  fields: [
    { name: 'title', type: 'text', required: true },
    { name: 'clientOrg', type: 'text', required: true, index: true },
    { name: 'status', type: 'select', options: ['Draft', 'Needs Client Approval', 'Approved'] },
  ],
};

Step 2: White-label the Admin UI in 3 lines

Swap in your client's brand mark, favicon, and custom domain in frogbot.config.ts:

admin: {
  meta: {
    titleSuffix: '— Acme Client Portal',
    appIcon: '/acme-logo.svg',
  },
}

Step 3: Isolate client projects and hand off cleanly

On the Dojo Business plan ($79/app/mo), you can place each client's apps inside their own Project with an isolated access list so client stakeholders only ever see their own environment. And if a client ever buys out the project to run in-house, you can transfer the Dojo project to their organization—or hand them a standard git clone + pg_dump with $0 transfer fees.