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

# Custom domains

> Serve verification links on your own subdomain, such as verify.example.com.

By default a verification link opens on `idv.proofage.net`. With a custom domain it opens on a subdomain of yours, for example `https://verify.example.com/q/AB12cd34Ef`, so the person sees your name in the address bar. You add one DNS record; ProofAge issues and renews the certificate.

## Add a domain

1. In **Settings**, open **Custom domains**.

2. Type the subdomain, such as `verify.example.com`, and choose **Add domain**.

3. At your DNS provider, add the record the console shows:

   ```text theme={null}
   CNAME  verify.example.com  verify.proofage.net
   ```

4. Wait. The status changes to **Active** once DNS has propagated and the certificate is issued, usually within minutes. **Check now** looks again at once; the console also checks on its own every few minutes.

If the certificate is still pending after about half an hour, the console shows a second record. Add it too, and keep it: the certificate renews through it.

```text theme={null}
CNAME  _acme-challenge.verify.example.com  verify.example.com.<id>.dcv.cloudflare.com
```

Only an administrator can add or remove domains.

## Which names work

* A **subdomain** only: `verify.example.com` works, `example.com` does not. A domain's own apex cannot hold a CNAME.
* No wildcards (`*.example.com`) and no IP addresses.
* Up to **5** domains per company. A hostname can belong to one company only.
* If your domain has **CAA records**, they must allow the certificate authorities Cloudflare issues from, or the certificate is never issued and the domain stays pending. The errors shown under the domain name the CAA problem.

## Statuses

| Status | What it means | New links | Links already sent |
| - | - | - | - |
| **Waiting for DNS** | The record is not visible yet, or the certificate is still being issued. | Use your fallback. | Not applicable. |
| **Active** | Ready. | Use this domain. | Work. |
| **Not serving new links** | The CNAME no longer points at ProofAge. | Use your fallback. | Keep working while the host still answers. |
| **Failed** | It could not be validated, the hostname was dropped, or ProofAge or Cloudflare refused it. | Use your fallback. | Stop working. |

A domain that stays **Waiting for DNS** for 72 hours is removed and shows **Failed**. Fix the record and choose **Retry** to start again; the same applies to a hostname that was dropped. A domain that failed this way does not hold the name: another company can add it. If the status says Cloudflare blocked the hostname, contact support.

Your fallback is `idv.proofage.net`.

## Choose the domain for new links

* Your first domain becomes the company default. **Make default** moves it to another domain, **Unset default** clears it. Every workspace follows the default unless you choose otherwise.
* On a workspace, **Link domain** offers the company default, the ProofAge domain, or one specific custom domain. Administrators and developers can change it.

Only an active domain goes into a new link. While a chosen domain is not active, new links use `idv.proofage.net`, and the console says so. Switching the domain never breaks a link you already sent: any active domain of your company opens any of your workspaces' links.

## Remove a domain

Removal stops new links from using the domain at once, and a removed company default is no longer the default. An active domain keeps answering for **7 days**, so links already sent keep working; the console shows the date it stops. A domain that is waiting or failed is deleted immediately.

## Embedded mode

If you open the verification in a frame on your site, add the custom domain to `frame-src` in your Content Security Policy, next to `idv.proofage.net`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.