To build a customer portal, start with one task customers repeatedly need help with, identify the records it needs, define who can access them and test the complete customer and staff journey. A login and a dashboard are only part of the implementation.
If customers keep emailing for job updates or sending documents to different staff members, the first release should let them complete that specific task without creating another place for your team to maintain.
One customer job, different views of the same record
Do the work
See what matters
See the operation
I would define the customer task and access-removal tests before choosing screens or a platform. Those requirements reveal whether your existing software can do the job and which connections need building.
Start with one customer task, not a feature list
Review the repeated requests in your inbox. Choose a task that happens often enough to justify a portal, has a clear outcome and relies on information your business can keep accurate. “Customers can manage their account” is too broad. “An authorised customer contact can check a job’s progress and supply a requested document” is buildable.
Illustrative example: a business manages customer jobs in project software, customer contacts in a CRM and documents in a file store. Customers currently email their account manager for updates and attach requested files. The account manager then saves each attachment and tells the job coordinator it has arrived.
For this example, the first release lets a customer see their active jobs, read a customer-facing status and upload a document against a specific request. The job coordinator reviews the document and either accepts it or asks for a replacement. Payments, chat and editing job details stay outside this release.
Success means the customer can complete that journey and staff can act on the submission. An uploaded file that nobody reviews is not a completed workflow.
Write a one-page implementation brief
Use the following worksheet before commissioning development or configuring a portal product. Each answer should name an actual action, record or responsible person.
- Customer task: What repeated request will the portal handle, and what tells the customer it is complete?
- User and trigger: Who uses it, which customer organisation do they represent, and what prompts them to sign in?
- Required records: Which job, contact, status, document request and file must appear? Where does each live?
- Allowed actions: What can this contact view, upload or change? Does access cover one job or all jobs for their organisation?
- Staff responsibility: Who reviews submissions, corrects information and manages customer access?
- Failure handling: What happens if an upload fails, a record is unavailable or a staff notification does not arrive?
- Release boundaries: What is explicitly excluded, and what alternative remains available?
- Acceptance tests: What must a customer, another unrelated customer and a removed contact be able or unable to do?
For the worked example, specify that uploading creates a “received, awaiting review” state. It must not mark the document as accepted or the job as ready to proceed. Those are staff decisions.
Map each screen and action to an existing record
Decide which system holds the authoritative version of each record, sometimes called the source of truth. Avoid letting the portal become a competing customer database.
In the example, the record map would look like this:
- Customer and contacts: the CRM holds the organisation, its contacts and their active access relationships. A named administrator approves changes.
- Job and status: project software holds the job. The portal displays an agreed customer-facing status, not internal notes.
- Document request: the project record identifies what is required and whether it is awaiting submission, review or replacement.
- Uploaded file: the file store holds the document, linked to the correct customer, job and request. The portal enforces access when the file is retrieved.
- Review outcome: the coordinator records acceptance or a replacement request in the project system, which supplies the customer’s next update.
For every connection, specify whether the portal reads information, writes changes or only provides a protected link. Also define how quickly updates should appear and what customers see when the source system cannot be reached.
A delayed update should not look like a current answer. Show when information was last refreshed, and prevent actions that would be unsafe with stale records. If a submission fails, show that clearly rather than displaying a success message before it has been saved.
Define access to records and files before building pages
Signing in proves who someone is. Permission checks decide what that person may see or change. Both are necessary, and the checks must apply to the underlying records and files, not only to visible menus.
Decide whether a contact can see only their own requests, selected jobs or everything belonging to their company. This distinction exists in real portal products: HubSpot’s support portal documentation distinguishes contact-associated ticket visibility from company ticket visibility, as well as access-group membership from self-registration.
Do not assume that two people sharing an email domain should automatically share access. Specify how a contact is linked to a customer organisation, who approves that link and who can invite additional contacts.
Treat access removal as a first-release requirement, including access to linked documents. When a contact leaves, disabling their portal account must also prevent future retrieval of protected files through previously copied links. Hiding the document page is not sufficient.
Ask the implementer to demonstrate how file requests are authorised and how any temporary download links expire. If immediate revocation is required, the delivery method must support it. Access removal cannot retrieve copies someone has already downloaded, so avoid promising that it can.
Build a Customer Portal: From Brief to Launch
Choose one customer task, map its records and access, then test the full journey before inviting clients.
Choose one task
Pick a customer task and link each screen and action to a record.
Connect records
Choose where each record lives and what the portal reads or changes.
Set access and test
Check who can access records and files; test handovers and failures.
Pilot with clients
Invite a small group first; check the task works before wider launch.
Choose the delivery route against the complete workflow
First demonstrate the task in any portal feature your current software already offers. Test the customer-specific records, upload handling and access removal, rather than judging a dashboard demonstration.
A configurable portal may be sufficient if it can enforce the required access rules and update the systems staff already use. A low-code tool may fit if its connections and permission controls support the same journey. Custom software becomes relevant when the required workflow or access model cannot be supported reliably through configuration.
For the example, an existing project portal might show job progress and accept attachments. That is useful only if the attachment reaches the coordinator’s review queue and removed contacts lose file access. A missing review queue might be solved with a small integration. An access model that cannot separate unrelated customers is a reason to reject the approach.
If the delivery route is still undecided, the guide to whether to build a client portal app covers that choice in more detail. Whichever route you choose, assign responsibility for account administration, failed connections and ongoing support.
Test the whole journey with two unrelated customers
Create test organisations A and B, with separate contacts, jobs and files. Include an active contact and a contact whose access will be removed. Use dummy documents rather than live customer information.
Write acceptance tests as observable outcomes:
- Correct information: contact A sees A’s permitted jobs and customer-facing updates, without internal notes.
- Customer separation: contact A cannot retrieve B’s job or file by opening a copied URL or changing a record identifier. The underlying request is refused.
- Successful submission: A uploads a permitted file against the right request, receives confirmation and sees that review is pending. The coordinator can find the file and its associated job.
- Staff handover: the coordinator requests a replacement with a reason. A sees the request and can submit the replacement without losing the review history.
- Failed submission: an interrupted upload produces a clear failure message. Retrying does not silently create duplicate review tasks.
- Failed notification: a submission remains visible in the staff work queue even if the notification fails. A named person can identify and recover failed handovers.
- Removed contact: after access is revoked, an existing session can no longer fetch protected records. Previously copied document links also fail according to the agreed revocation requirement.
- Usable journey: a customer can accept an invitation, recover access and upload a document on a phone, with understandable validation messages.
Run these tests against the chosen implementation, not just a prototype. Record the expected result, actual result and person responsible for fixing each failure. Customer separation and access-removal failures should block invitations to live clients.
Pilot the release and check whether it replaces the email task
Invite a small group representing the roles and job types the first release supports. Give them a specific task to complete and a clear support route. Keep the existing email route available during the pilot, and tell staff how to handle documents received there so records remain consistent.
Before the pilot, note how often customers request updates or send the relevant documents by email. During it, track completed portal journeys, abandoned uploads, repeated email requests and staff corrections. Check whether staff still copy information between systems.
If customers sign in but still email for clarification, inspect the status wording and missing information before adding features. If uploads succeed but staff miss them, fix the handover. Expand the portal only once the first task works for customers, reaches the right staff and continues to respect access changes.
Scope your first customer portal release
Tell ZappFlow what customers currently ask for by email, which systems hold that information and who should have access. We can help define a first release and the connections it needs.