---
title: "Serve the portal on your own domain"
description: "Put the client portal on a name you own, such as portal.example.com, for every client or for one, with DNS records and a certificate Outpost provides."
url: "https://support.outpostplatform.com/client-portal/custom-domains/"
product: "depot"
type: "how-to"
status: "draft"
ai_summary: "MSP plan. Settings > Client portal > Custom domains: add a hostname (not the domain root) for every client or one, then create the CNAME and TXT records shown. Statuses Waiting for DNS, Verifying, Issuing certificate, Active, Failed. Checks every 2 minutes for 24 hours, then hourly; fails after 72 hours. Once active, portal links use it and passkeys must be added again."
availability:
  plans: ["msp"]
  permission: "clientportal:domains"
  preview: false
source: "https://gitlab.com/outpostplatform/docs/-/edit/main/src/content/docs/client-portal/custom-domains.md"
license: "CC BY 4.0"
---

# Serve the portal on your own domain

A custom domain serves the client portal on a name you own instead of your
Outpost address. Clients see your name in the address bar, in portal and
payment email links, and on the pay page. This page shows how to add a domain, what each
status means, and what changes once it is active.

## Before you begin

- You need `clientportal:domains`.
- You can create DNS records for the domain.
- Use a name under your domain, such as `portal.example.com`, not the root of
  the domain itself.
- Decide whether the domain is for every client or for one. A domain for one
  client serves only that client, and its sign-in page carries that client's
  branding.

## Add the domain

1. Select **Settings** > **Client portal**, then **Custom domains**.
2. In **Hostname**, enter the name, such as `portal.example.com`.
3. In **For**, choose **Every client**, or one client.
4. Select **Add domain**.

The domain's card shows **Waiting for DNS** and, under **Create these records
at your DNS provider**, two records, each with a copy button:

| Type | Name | Value |
| --- | --- | --- |
| `CNAME` | Your hostname | The target the card shows |
| `TXT` | `_outpost-verify.` followed by your hostname | A verification token |

## Create the records

1. At your DNS provider, create the `CNAME` and `TXT` records exactly as the
   card shows them.
2. Wait. Outpost checks every 2 minutes for the first 24 hours, then hourly.
   **Next check** on the card says when. To check at once, select **Re-check
   now**.

The certificate is issued and renewed for you. The card's **Certificate** row
says how.

## What each status means

| Status | Meaning |
| --- | --- |
| **Waiting for DNS** | Create both records at your DNS provider. Outpost checks every few minutes. |
| **Verifying** | The records match. Outpost is confirming them. |
| **Issuing certificate** | The records match. A certificate is being issued for this name. |
| **Active** | Clients can sign in at this address. |
| **Failed** | Outpost stopped checking. Fix the records, then re-check. **Last error** says what was wrong. |

A domain whose records still do not match after 72 hours moves to **Failed**.
Selecting **Re-check now** on a failed domain starts checking again.

## What changes when a domain is active

- Invitations, pay links, ticket emails, portal emails, the Teams app, and
  the support link in the Outpost tray app use the new address. A domain for one client wins over a domain for every
  client, which wins over your Outpost address.
- On the custom domain, only the portal and the public pages, such as the pay
  page, are served. The console stays at your Outpost address.
- Passkeys are tied to the address they were created on. People who sign in
  at the new address with a password are asked to add a passkey for it.

## Remove a domain

Select **Remove** on the domain's card and confirm. Links go back to the next
address in line. The name is freed, so you can add it again later.

## Verify

The card shows **Active** with **Active since**, and opening
`https://<your-hostname>/portal` shows your portal's sign-in page.

## Next steps

- [Brand the client portal](/client-portal/branding/)
- [Add the portal to Microsoft Teams](/client-portal/teams/)
