Portal Features Guide
This guide provides a detailed walkthrough of every feature available to portal users. Each section covers what the feature does, what data is shown, and how to use it.
Dashboard
The dashboard is the portal landing page after login. It provides an at-a-glance overview of the contact's account.
What Clients See
Greeting: The contact's first and last name, job title, and company name.
Metric cards: Outstanding balance, unpaid invoices, unread messages, open conversations, upcoming appointments, and shared files count.
Alerts: Contextual warnings about past-due subscriptions, overdue invoices, expiring payment cards, or missing payment methods. Each alert includes a link to the relevant page.
Recent invoices: The three most recent invoices with invoice number, status (sent, paid, overdue, void), total amount, and due date.
Upcoming appointments: The next three scheduled appointments with title, date/time, and location.
Active subscription: The primary active subscription showing product name, status, price, billing interval, and next billing date.
Account summary: Member-since date, lifetime total paid, count of paid invoices, count of active subscriptions, and default payment method.
Alerts Detail
| Alert Type | Trigger | Message |
|---|---|---|
| Past due subscription | A subscription has status "past_due" | "Your subscription payment has failed. Please update your payment method." |
| Overdue invoices | One or more invoices are past due date | "You have N overdue invoice(s)." |
| Expired card | Default payment card has expired | "Your default payment card has expired." |
| Expiring card | Default card expires within 30 days | "Your payment card expires soon. Consider updating it." |
| No payment method | Active subscriptions exist but no default card is saved | "Add a payment method to enable automatic payments." |
Invoices
The Invoices page lists all non-draft invoices linked to the contact or their company.
Viewing Invoices
The invoice list displays:
Invoice number: The unique invoice identifier.
Status: Sent, paid, overdue, or void. Overdue is derived from invoices with "sent" status past their due date.
Total amount: The full invoice amount.
Amount paid: How much has been paid so far.
Amount outstanding: Remaining balance.
Currency: The invoice currency.
Issued date: When the invoice was created.
Due date: The payment deadline.
Paid date: When payment was received (for paid invoices).
Filtering
The invoice list can be filtered by status using the filter control at the top. Options include All, Sent, Paid, Overdue, and Void.
The total outstanding balance across all unpaid invoices is displayed prominently at the top of the page.
Invoice Detail
Click an invoice to view the full detail page:
Line items: Itemized list of products/services with quantities and prices.
Subtotal, discount, tax, and total: Breakdown of the invoice amounts.
Outstanding balance: Remaining amount to be paid.
Notes: Any notes attached to the invoice.
Payment history: List of payments made against this invoice, showing amount, method, status, and date.
Paying Online
If your tenant has Stripe configured, a Pay Online button appears on unpaid invoices. Clicking it initiates the online payment flow through Stripe.
Downloading PDFs
Each invoice has a Download PDF option. The PDF is generated server-side and streamed to the browser as a download named with the invoice number (e.g., INV-001.pdf).
Files
The Files page shows all files shared with the portal user.
Viewing Files
Files are displayed in a list with:
File name: The original filename.
Folder: The folder category (if any).
Type: The MIME type / file format.
Size: Human-readable file size.
Date: When the file was created/shared.
Uploader: Shows "You" for files the contact uploaded themselves.
Folder Navigation
Files can be organized into folders. A folder sidebar or filter lets the contact browse files by folder. The current folder is highlighted, and clicking a folder filters the list to show only files in that folder.
Which Files Are Visible
A portal contact sees files that meet any of these criteria:
The file is attached to the contact's record and has
portal_sharedset to true.The file is attached to the contact's company and has
portal_sharedset to true.The file was uploaded by the contact through the portal (in the
portal-uploadsfolder).
Downloading Files
Click a file to download it. The file is streamed from storage through the application, the contact never accesses your storage bucket directly.
Uploading Files
Portal users can upload files using the upload form. Uploads are limited to 20 MB per file. Uploaded files are:
Placed in the
portal-uploadsfolder.Attached to the contact's record.
Automatically marked as
portal_sharedso they appear in the contact's file list.
Virus Scanning
Every file uploaded through the portal (whether on a file page, a ticket reply, or anywhere else) is scanned by ClamAV before it touches storage. Infected files are rejected with a 422 error message that names the signature (e.g. "EICAR test pattern"). Clean files are persisted with virus_scanned = true; you can confirm scan status by checking the file record in the staff UI. If the AV daemon is unavailable, uploads are refused by default (fail-secure); an operator can flip FILES_VIRUS_SCAN_REQUIRED=false in env to let uploads through during a confirmed outage, which marks the affected files with virus_scanned = false for later re-scan.
Messages
The Messages feature provides threaded conversations between portal contacts and your team. See Portal Messaging for a comprehensive guide.
Quick Summary
Contacts can start new conversations with a subject and initial message.
Conversations appear in a list sorted by most recent activity.
Each conversation shows the subject, status (open/closed), last message preview, and unread count.
Clicking a conversation opens the thread with the full message history.
Contacts can reply to conversations (up to 5,000 characters per message).
Messages from your team show the tenant company name as the sender.
Vault
The Vault page provides read-only access to shared encrypted secrets. See Vault in Client Portal for the full guide.
Quick Summary
Contacts see secrets that have been individually shared with them (via token-based links) and secrets in their company's vault folders.
Each secret shows its name, type, URL, TOTP indicator, and expiry date (for shared secrets).
Clicking reveal decrypts and displays the secret value, username, notes, and TOTP seed.
All reveals are logged in the vault audit trail.
Docs
The Docs section provides read-only access to your published knowledge base articles.
What Is Available
Portal users see:
All books with portal visibility, intended specifically for portal users.
All books with public visibility, intended for public access.
Only published pages within those books. Draft pages are hidden.
Chapters that contain at least one published page. Empty chapters are hidden.
Browsing Docs
Open the Docs section from the portal navigation.
The index page shows all available books with their name, description, icon, and published page count.
Click a book to open it.
The book page shows a sidebar navigation tree with chapters and pages.
Click a page in the sidebar to read it.
The first published page in the book loads automatically when you open the book.
Reading Pages
Each page displays:
Title: The page heading.
Content: The full rich-text content (rendered from Tiptap JSON).
Last updated: The date the page was last modified.
Pages are read-only in the portal. There is no editing capability.
Subscriptions
The Subscriptions page shows all subscriptions linked to the contact or their company.
Subscription List
Each subscription displays:
Product name: The name of the subscribed product.
Status: Active, trialing, past due, cancelled, or paused.
Price and billing interval: E.g., "$49.00 / month".
Currency: The subscription currency.
Current period: The start and end dates of the current billing period.
Next billing date: When the next charge will occur.
Trial end date: For trialing subscriptions, when the trial ends.
Cancelled date: For cancelled subscriptions, when cancellation was processed.
Subscription Detail
Click a subscription to view the detail page:
All the information from the list view, plus:
Payment failures: Count of failed payment attempts.
Linked invoices: The most recent 20 invoices generated by this subscription, with invoice number, status, amounts, and dates.
Cancelling a Subscription
From the subscription detail page:
Click the Cancel Subscription button.
Optionally enter a cancellation reason (up to 500 characters) and feedback (up to 2,000 characters).
Confirm the cancellation.
The cancellation is processed by the subscription service. The subscription status updates accordingly. The reason and feedback are stored for your team to review.
Note: Pausing and resuming subscriptions is currently an admin-only action. Portal users can only cancel.
Payment Methods
The Payment Methods page lets contacts manage their saved cards and autopay preferences.
Viewing Payment Methods
The page lists all active payment methods for the contact:
Card details: Brand (Visa, Mastercard, etc.), last 4 digits, expiry month/year.
Default indicator: Which card is set as the default payment method.
Wallet: If the card was added via a digital wallet (Apple Pay, Google Pay).
Expired indicator: Whether the card has expired.
Date added: When the card was saved.
Adding a New Card
Click Add Payment Method.
A Stripe-powered card form appears (using Stripe SetupIntent for secure tokenization).
Enter the card details.
Submit. The card is saved securely through Stripe.
The new card appears in the list.
Card details are collected client-side by Stripe Elements and never touch concorbit's servers. Only a Stripe payment method ID is transmitted.
Setting a Default Card
Find the card in the list.
Click Set as Default.
The selected card becomes the default payment method. The previous default is unset.
The default card is used for automatic subscription payments and online invoice payments.
Removing a Card
Find the card in the list.
Click Remove.
Confirm the removal.
The card is deactivated. The corresponding Stripe payment method is also cleaned up.
Autopay Toggle
The autopay preference controls whether the contact's subscription invoices are charged automatically:
Toggle the Autopay switch.
When enabled, subscription invoices will be charged to the default payment method automatically.
When disabled, the contact must pay invoices manually through the portal.
Profile
The Profile page lets contacts view and update their personal information.
Viewing Profile
The profile displays:
First name, last name, email, phone, mobile, job title.
Avatar (if set).
Full address (line 1, line 2, city, county/state, postcode, country).
Company name and website (if linked to a company).
Updating Profile
Contacts can edit the following fields:
First name (required)
Last name (required)
Phone
Mobile
Job title
Address line 1
Address line 2
City
County/state
Postcode
Country
Email address cannot be changed through the portal (it is the authentication identifier). Contact your admin team to update an email address.
Company Page
If the contact belongs to a company, they can view the company detail page:
Company name, domain, industry, size, phone.
Company address.
Colleagues: A list of other portal-enabled contacts at the same company, showing name, job title, email, and phone. Up to 50 colleagues are listed.
Projects
The Projects page gives customers read-only visibility into projects their company is part of: what's being delivered, how far through it is, what's next.
Viewing the Project List
The list shows one card per project with:
Name and optional description.
Status badge: Planning, Active, On hold, Completed, or Cancelled.
Progress bar: derived from
(tasks done / total tasks) × 100%. Hidden when the project has no tasks yet.Target end date (when set) or start date as a fallback.
Last updated: relative time since the project was last changed.
Clicking a card opens the detail page.
Status Filter
A row of filter chips above the list (All, Active, Planning, On hold, Completed) narrows the list. Cancelled projects are hidden by default (they're in the "All" view if you need them).
Viewing Project Detail
The detail page shows:
Header: project name, description, status badge, and colour dot.
Meta grid: Start, Target end, Completed, and Owner (the staff member running it).
Milestones: named checkpoints with their target date or actual completion date. Completed milestones show a green tick.
Tasks: grouped by status (In progress → In review → To do → Done → Cancelled). Each task shows title, optional description, and due date.
What's Deliberately Hidden
Portal users do not see:
Internal notes or comments on tasks.
Estimated hours or actual hours (cost/operational metrics).
Task assignees (staff attribution is internal).
Projects flagged as templates.
Projects belonging to other companies (scope is
project.company_id = contact.company_id).
Gating
The Projects nav item only appears when:
The Projects module is active on the tenant.
The portal contact is linked to a company. (A contact with no company sees no projects: projects belong to companies, not to individuals.)
GDPR Data Export
Portal users can request a full export of their personal data:
Navigate to the Profile page.
Under the Your data card, click Download my data.
A JSON file is generated and downloaded immediately.
The export includes:
Contact details (name, email, phone, address, lifecycle stage, creation date).
Company details (name, industry).
Activity history (type, subject, body, dates).
Tasks (title, status, due date, dates).
Tags associated with the contact.
The export file is named gdpr-export-YYYY-MM-DD.json and contains only data for the requesting contact, no other contacts' data is included.