A customer portal sounds simple until you think about what it must never do: show one customer another customer's information, or open a window into your internal CRM. The design question is less "what can customers see" and more "what is guaranteed hidden".
Their own sign-in, tied to a real account
Each portal login is tied to a real account on your side. The customer's dashboard is about their own account only: their open balance, unread messages, and the latest announcement you have posted. Depending on how you use it, that can include family members, which is how class registration works for schools and studios.
Invoices, notices, and one running conversation
Customers see their own invoices, read the notices you post, and message your staff directly. Replies stay in one running thread rather than scattering across inboxes, which makes it easier for the next person on your team to pick up where the last one left off.
Controls on your side
Staff can give any existing contact portal access, read and reply to their messages, and, for support, sign in as the customer to see exactly what they see. That last one saves a lot of "can you describe what is on your screen" back-and-forth.
When the portal is also a catalog
For businesses that run classes, any product can be marked registerable with a schedule, instructor, and price, and it appears in the portal's catalog with a Register button. Age limits are checked against each family member's date of birth on the server, so the rule is enforced, not just suggested on a form.
The test worth applying
Whatever portal you choose, sign in as a customer and ask what else they could reach. The right answer is nothing beyond their own account.