TL;DR
- Support portal (the successor to the legacy customer portal): ticket-only, needs Service Hub Professional or Enterprise (HubSpot KB).
- Memberships / private content on HubSpot CMS: logged-in pages driven by CRM lists. Needs Content Hub or Service Hub Professional/Enterprise (HubSpot KB).
- CMS + serverless functions: interactive portals (uploads, forms that write to deals) on HubSpot hosting. Needs Content Hub Enterprise, with strict execution limits (HubSpot Developers).
- External app (for example Next.js) using HubSpot's APIs: the most flexible, but you host it and handle authentication yourself.
- Pick the lightest option that covers what clients need to do, not just see.
Start with what clients need to do
"Client portal" means very different things:
- See their support tickets → a ticket portal is enough.
- Read private documents, guides or updates → memberships.
- Do things: upload files, approve a quote, update details, see project status from deals or custom objects → you need logic behind the page.
Write down the three to five actions a client must perform. That list decides your option and budget far more than design does.
Option 1 — HubSpot support portal
What it is. A logged-in area where customers view and follow their tickets. HubSpot's KB describes it as showing tickets only (HubSpot KB).
Plan. Service Hub Professional or Enterprise.
Good for. Support-led businesses that want clients to track requests. Not for. Project dashboards, documents tied to deals, or custom workflows.
Option 2 — Memberships (private content) on HubSpot CMS
What it is. Pages, blogs or knowledge base articles that only contacts on specific CRM lists can access. When contacts are granted access, they receive an email to register and set a password (HubSpot Developers — memberships).
Plan. Service Hub or Content Hub, Professional or Enterprise. The legacy CMS Hub Professional doesn't support memberships (HubSpot KB).
What developers can do.
request_contact.is_logged_intells your HubL template whether the visitor is signed in.request_contact.list_membershipsreturns the lists they belong to, so one page can show different content to different clients (HubSpot Developers).
CRM data on pages.
- For security, only product and marketing event objects can be retrieved on public pages.
- Other object types (contacts, deals, tickets and so on) need a page behind a password or membership login.
- Custom objects in CMS pages require Content Hub Enterprise (HubSpot Developers — CRM objects in CMS).
Good for. Read-mostly portals: onboarding guides, deliverables, account details.
Option 3 — CMS pages + serverless functions
What it is. Memberships, plus small server-side functions that run on HubSpot. They let a logged-in client write data: upload a file, update a deal, submit a request.
Plan. Content Hub Enterprise (HubSpot Developers — getting started).
Limits to design around (HubSpot Developers):
| Limit | Value |
|---|---|
| Execution time per function | 10 seconds |
| Account-wide execution | 600 execution-seconds per minute (429 when exceeded) |
| Memory | 128 MB |
| Payload per invocation | 6 MB (relevant for file uploads) |
| Endpoints per account | 100 |
| Secrets per account | 50 |
| Logging | 4 KB of log data |
What I've built this way
- Sales portal. Built with HubL and custom landing pages for company owners and sales reps who don't have direct access to HubSpot. Reps log in to create, track and update deals, and upload files, images and videos that are associated with the deal records.
- Client portal with custom cards, serverless functions and React. Each deal has a card that creates folders, uploads files and generates a secure password. The portal then displays the right files to each client on the website.
- Real-estate portal on HubSpot CMS. Custom drag-and-drop modules for no-code editing, with property information updated automatically via deals.
These projects show the pattern: HubSpot remains the system of record, and the portal is a controlled window onto specific deals.
Good for. Portals where clients or reps act on CRM data and you want everything inside HubSpot. Watch out for. The 6 MB payload limit for uploads, and the 10-second limit for anything slow.
Option 4 — External app on your own stack
What it is. A separate web app (Next.js, for example) with its own login, calling HubSpot's APIs from your server.
Plan. No specific HubSpot tier for the portal itself, but you're bound by API rate limits:
- 100 requests per 10 seconds on Free/Starter;
- 190 on Professional/Enterprise;
- daily caps by tier.
Good for. Complex UX, heavy file handling, other data sources, or teams that already run a web app. Watch out for.
- You own authentication, security, hosting and uptime.
- Cache aggressively, because every page view could become an API call.
How to choose
| You need… | Lightest option |
|---|---|
| Clients to see their tickets | Support portal (Service Hub Pro+) |
| Private pages by client or segment | Memberships (Content/Service Hub Pro+) |
| Clients to upload or update CRM data, all inside HubSpot | CMS + serverless (Content Hub Enterprise) |
| Complex UX, big files, multiple systems | External app + HubSpot API |
Costs: what actually drives them
I won't quote HubSpot list prices here; they change, so check HubSpot's pricing page for your hubs. What drives the build cost:
- Number of client actions. Each action is a form, a function and a test case.
- Data model. Deals and standard objects are simpler; custom objects add Enterprise requirements on CMS.
- File handling. Size limits and storage decisions.
- Who logs in. Clients, reps or partners, and how access is granted (lists, deal association, password).
A phased approach that keeps risk low
You don't have to pick the final architecture on day one:
- Phase 1 — read-only. Launch memberships pages showing each client's documents and status from deal properties. You'll learn which information clients actually open.
- Phase 2 — one write action. Add the single most requested action, usually a file upload or a request form, through a serverless function or your own endpoint.
- Phase 3 — expand or move out. If the action list keeps growing, or the limits above start to bite, move the heavy parts to an external app while keeping HubSpot as the system of record.
Each phase delivers something usable, and nothing is thrown away when you move to the next.
Security basics, whatever you choose
- Grant access by list membership or association, never by guessable URLs alone.
- Keep tokens in serverless secrets or server-side environment variables, never in page code.
- Log what clients change, and keep a human-readable audit trail on the deal.
Sources
- HubSpot KB — Set up a customer (support) portal: https://knowledge.hubspot.com/inbox/set-up-a-customer-portal
- HubSpot KB — Control audience access to pages: https://knowledge.hubspot.com/cms-pages-editor/control-audience-access-to-pages
- HubSpot Developers — Memberships: https://developers.hubspot.com/docs/cms/start-building/features/memberships/overview
- HubSpot Developers — CRM objects in CMS pages: https://developers.hubspot.com/docs/cms/start-building/features/data-driven-content/crm-objects
- HubSpot Developers — CMS serverless functions overview: https://developers.hubspot.com/docs/cms/start-building/features/serverless-functions/overview
- HubSpot Developers — CMS serverless getting started: https://developers.hubspot.com/docs/cms/start-building/features/serverless-functions/getting-started-with-serverless-functions
- HubSpot Developers — Usage guidelines: https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines
FAQ
Does HubSpot have a built-in client portal? Yes, the support portal, but it shows tickets only and needs Service Hub Professional or Enterprise.
Can I show deal data on a HubSpot page? Only on pages behind a password or membership login. Public pages can only retrieve products and marketing events.
What plan do I need for a portal where clients upload files? On HubSpot hosting, plan for Content Hub Enterprise (serverless functions) and memberships. Otherwise, build an external app on the API.
Is the legacy CMS Hub Professional enough for memberships? No. HubSpot states legacy CMS Hub Professional doesn't support memberships.