Zoho CRM Client Portal: Native vs Custom-Built
When the built-in Zoho CRM portal is enough for client onboarding and milestone tracking, and when a custom portal pays off.

Compare the native Zoho CRM client portal with a custom build for client onboarding and milestone tracking, and pick the right fit. Explore your options.
When a new client signs, the first few weeks set the tone for the whole relationship. If they have to chase you by email to find out what happens next, confidence drops quickly. A client portal fixes that by giving each client a secure place to see their onboarding steps, upload documents and track milestones. If your team already runs on Zoho, the first question is whether the native Zoho CRM client portal is enough, or whether you need a custom build. This guide compares the two honestly and shows how we model onboarding and milestones in either approach.
What clients actually need from an onboarding portal
Before comparing tools, list what the portal must do for the client, not for your team. For most service businesses we work with, it comes down to:
- Seeing a clear list of onboarding steps and which ones are waiting on them
- Uploading documents and filling in forms without email back-and-forth
- Tracking project milestones with dates and status
- Viewing relevant records such as quotes, invoices or tickets
- Only ever seeing their own company's data
Anything beyond that, such as custom dashboards, branded experiences or complex approvals, is where the two options start to separate.
The native Zoho CRM client portal
Zoho CRM includes self-service portals for customers, partners and vendors. You decide which information portal users can access and which actions they can perform, then invite them. Once they set up credentials, they log in and interact with the data relevant to them. Zoho's help centre covers setting up a portal and inviting users.
Where the native portal works well
- You want clients to view and update records that already live in CRM modules
- Your onboarding process maps neatly onto modules you can expose, such as a custom Onboarding Tasks or Milestones module
- You want something live quickly, without hosting or maintaining a separate application
- Your branding and layout requirements are modest
Where it starts to feel limiting
- You need a fully branded experience on your own domain with custom page design
- Clients must combine data from several systems, such as CRM, accounting and a project tool, on one screen
- You need multi-step guided flows, conditional forms or e-signature steps in a specific order
- Different people at the same client need finely tuned permissions beyond what the portal's user types allow
Portal user allowances and features vary by Zoho CRM edition, so check the current limits for your plan before deciding.
The custom-built option
A custom portal is a separate web application that talks to Zoho CRM through its API. Zoho also offers Zoho Creator customer portals as a middle path for teams that want custom forms and workflows without building everything from scratch.
A fully custom build gives you complete control over design, flows and data sources. The trade-off is that you own the hosting, security, authentication and maintenance.
Zoho CRM client portal vs a custom build: side by side
RequirementNative Zoho CRM portalCustom-built portalTime to launchFast; configuration inside CRMLonger; design, build and testingBranding and layoutLimited to portal optionsFully customData sourcesZoho CRM modulesCRM plus any system with an APIGuided onboarding flowsBasicAny flow you designHosting and securityManaged by ZohoYour responsibilityOngoing maintenanceLowOngoing developmentBest fitStandard self-service on CRM dataDifferentiated client experience
Our rule of thumb: start with the native portal if it covers your must-haves, and only build custom when a specific requirement cannot be met. Many clients outgrow the native portal later, and a well-structured data model makes that move easy.
Modelling onboarding and milestones in Zoho CRM
Whichever front end you choose, the data model in CRM is the same. We usually create two custom modules linked to Accounts.
Illustrative data model
ModuleKey fieldsPurposeOnboarding StepsStep name, Account (lookup), Owner side (Client / Us), Status, Due date, Document (file upload)Tracks each step and who it is waiting onMilestonesMilestone name, Account (lookup), Deal (lookup), Planned date, Actual date, Status, Percent completeShows project progress to the client
When a deal moves to Closed Won, a workflow can create the standard onboarding steps for that account from a template, so every client starts with the same checklist.
Worked example: a Deluge function that creates onboarding steps
The following illustrative Deluge function runs from a workflow on Deals when the stage becomes Closed Won. It creates one Onboarding Steps record per template step, linked to the deal's account. Module and field API names will differ in your org.
// Argument: dealId (Deal ID passed from the workflow)
deal = zoho.crm.getRecordById("Deals", dealId);
accountId = deal.get("Account_Name").get("id");
steps = list();
steps.add({"name":"Signed agreement uploaded", "side":"Client", "days":2});
steps.add({"name":"Kick-off call booked", "side":"Us", "days":3});
steps.add({"name":"System access shared", "side":"Client", "days":5});
steps.add({"name":"Requirements workshop held", "side":"Us", "days":10});
for each s in steps
{
rec = Map();
rec.put("Name", s.get("name"));
rec.put("Account", accountId);
rec.put("Owner_Side", s.get("side"));
rec.put("Status", "Not started");
rec.put("Due_Date", zoho.currentdate.addDay(s.get("days")));
resp = zoho.crm.createRecord("Onboarding_Steps", rec);
info resp;
}
In the native portal, you expose the Onboarding Steps and Milestones modules to client users with view access, and edit access only on the fields clients should change, such as status and document upload.
Worked example: fetching one client's milestones in a custom portal
In a custom build, the portal's backend should call Zoho CRM on the server, never from the browser, and only ever request records for the logged-in client's account. Zoho's Get Related Records API is a clean way to do that.
import requests
ZOHO_API = "https://www.zohoapis.com/crm/v8"
def get_client_milestones(account_id, access_token):
# account_id comes from the portal session, never from the request URL
url = f"{ZOHO_API}/Accounts/{account_id}/Milestones"
params = {"fields": "Name,Planned_Date,Actual_Date,Status,Percent_Complete"}
headers = {"Authorization": f"Zoho-oauthtoken {access_token}"}
r = requests.get(url, params=params, headers=headers, timeout=30)
if r.status_code == 204: # no related records
return []
r.raise_for_status()
return r.json().get("data", [])
The important design choice is that the account ID comes from the authenticated session. If it came from a URL parameter, one client could change it and see another client's milestones.
Security checklist for any client portal
- Scope every query to the logged-in client's account on the server
- Keep Zoho OAuth tokens on the server and refresh them there
- Give portal users the minimum access they need: view by default, edit only where necessary
- Log document uploads and status changes for audit purposes
- Remove portal access promptly when a client relationship ends
For the billing and project-status side of portals, see our guide to building secure self-service client portals with real-time billing and project status. If the portal needs data from several Zoho apps or third-party systems, our article on why companies bring in Zoho CRM consultants for multi-app integrations explains what that integration work usually involves.
Frequently Asked Questions
Does Zoho CRM have a client portal?
Yes. Zoho CRM includes self-service portals for customers, partners and vendors. You choose which modules and actions portal users can access and invite them to log in. Feature limits depend on your edition.
Can clients upload documents through the Zoho CRM client portal?
They can if you expose a module with a file upload field and give portal users permission to edit it. For complex document flows, such as e-signature followed by approval, a custom build or Zoho Creator portal may fit better.
When should we build a custom portal instead?
When you need a fully branded experience, data from several systems on one screen, guided multi-step flows, or permissions the native portal cannot express. If none of those apply, start with the native portal.
Can we start native and move to custom later?
Yes. If onboarding steps and milestones live in well-structured CRM modules, a custom front end can read the same data later without re-modelling.
Explore your options with us
We design client portals on Zoho, from configuring the native portal to building custom applications on top of Zoho CRM. See our custom app development services, or talk to us about your client onboarding portal.
About the Author
Manav Sharma is the founder of Insyrge and a CRM solutions architect. He works across Zoho, Salesforce, HubSpot, Odoo and more, designing the CRM setups, integrations and automations that keep sales and operations teams working from the same data.
Need Help Implementing This in Your Business?
Our certified Zoho consultants and automation experts can help you design and deploy custom workflows tailored to your operations.
Book Free Consultation