> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thunderphone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Client portals: branded read-only call reporting

> Create a ThunderPhone client portal, choose visible agents, add viewers, brand the experience, connect a custom domain, and share read-only call history.

**Client portals** give each client a branded, read-only view of calls handled
for them. A portal can include selected agents, its own viewers, a logo and
accent color, and an optional custom domain.

Organization admins manage portals at **Client portals**
(`/dashboard/client-portals`). Viewers use the hosted portal URL and never gain
access to the ThunderPhone dashboard.

## Create a portal

<Steps>
  <Step title="Choose New portal">
    Enter the client-facing name. ThunderPhone creates a unique URL slug from
    it; you can edit the slug later.
  </Step>

  <Step title="Assign agents">
    Add the agents whose calls the client should see. A portal with no assigned
    agents has no visible calls.
  </Step>

  <Step title="Add viewers">
    Add each approved viewer's email address. Viewers request their own login
    code from the portal sign-in page.
  </Step>

  <Step title="Share the URL">
    Copy the portal URL or choose **Open** to test it. The list page also shows
    each portal's active status, agent count, and viewer count.
  </Step>
</Steps>

## Portal details and availability

The **Portal details** card controls:

* **Name** — displayed on the portal login and header; maximum 255 characters.
* **Slug** — the hosted URL segment; maximum 100 characters. Use lowercase
  letters, numbers, and single hyphens. Slugs must be unique and cannot use a
  reserved platform route.
* **Agents** — the exact set of agent call histories visible in the portal.
* **Portal active** — turn this off to prevent every viewer from opening it
  without deleting configuration.

Only calls belonging to an assigned agent are in scope. Viewers cannot edit
agents, place calls, manage billing, or see other organization data.

## Branding

Upload a **PNG**, **JPEG**, or **WebP** logo up to **2 MB**. Choose a full
six-digit hexadecimal accent color such as `#2e8fff`; it controls the primary
buttons and highlights. Reset either value to return to the default branding.

Branding appears on both the sign-in page and authenticated portal header.

## Viewer access

Add viewers by email. On the portal login page, an active viewer can:

* Request a six-digit code by email. A code is valid for 10 minutes.
* Sign in with a password if they have created one.
* Create a password of at least 8 characters after signing in.

You can deactivate a viewer without removing their row, or delete them to
remove access. Portal sessions are separate from dashboard sessions.

## What viewers can see

The portal call-history table shows the calls in the assigned-agent scope.
Viewers can open a call to inspect:

* Date, direction, from/to party, status, and duration.
* Assigned agent and successful or failed outcome when graded.
* Transcript.
* Recording playback when a recording is available.

The interface is read-only. It does not expose agent prompts, organization
settings, keys, billing, tools, or internal issue workflows.

## Connect a custom domain

<Steps>
  <Step title="Add the hostname">
    Under **Custom domains**, enter a full hostname such as
    `calls.client.com`. A hostname can belong to only one portal.
  </Step>

  <Step title="Point traffic to the portal">
    Add the displayed **CNAME** record at the DNS provider.
  </Step>

  <Step title="Prove domain ownership">
    Add the displayed **TXT** record at
    `_tp-portal-verify.<hostname>` with the generated verification value.
  </Step>

  <Step title="Verify">
    Choose **Verify now**. DNS can take time to propagate; the setup screen can
    check again every 20 seconds. After verification succeeds, the TXT record
    can be removed while the CNAME must remain.
  </Step>
</Steps>

Remove a domain from the portal before reusing that hostname elsewhere.

## Delete a portal

Deleting a portal permanently removes its viewer access and custom-domain
configuration. It does not delete the organization's agents or calls, but the
portal cannot be recovered. Use the **Portal active** switch for a reversible
pause.

For admin automation, see the
[Client Portals API](/api-reference/client-portals).
