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

# Custom domain

> Serve the verification flow from your own subdomain instead of verify.didit.me. Add the domain, create two DNS records, and verify ownership.

Serve the verification flow from your own subdomain — `verify.yourbrand.com` instead of `verify.didit.me`. Users stay on your domain for the whole journey, which removes the last visible reference to Didit in a [white-label](/console/white-label) flow.

<Note>
  Custom domain is part of White Label and must be enabled on your account. You also need **write access to Customization** — members with read-only access see the section disabled.
</Note>

***

## Requirements

| Requirement            | Detail                                                                                                    |
| ---------------------- | --------------------------------------------------------------------------------------------------------- |
| **Subdomain only**     | Use `verify.yourbrand.com`. Root domains such as `yourbrand.com` are rejected, and so is a `www.` prefix. |
| **Not already in use** | The subdomain cannot point to an existing website or application of yours.                                |
| **DNS access**         | You need to create two records at your DNS provider.                                                      |

***

## How it works

You enter your subdomain in the Business Console. Didit then generates two DNS records for you to add at your provider:

| Record                 | Purpose                                                      |
| ---------------------- | ------------------------------------------------------------ |
| **Verification CNAME** | Proves you own the domain, which issues the SSL certificate. |
| **CloudFront CNAME**   | Points your subdomain at the verification UI.                |

Both records are required. Once they resolve, you verify ownership from the console and the flow starts serving from your domain.

***

## Set up your domain

<Steps>
  <Step title="Add the domain">
    Go to **Business Console → White Label → Domain**, enter your subdomain (for example `verify.yourbrand.com`), and click **Add Domain**.

    The console generates your DNS records. This takes a few seconds.
  </Step>

  <Step title="Copy the two records">
    The console shows a card for each record — **Verification CNAME** and **CloudFront CNAME**. Each card gives you two values:

    | Card field   | Where it goes at your DNS provider |
    | ------------ | ---------------------------------- |
    | **Hostname** | The record **name** (host)         |
    | **Data/URL** | The record **value** (target)      |

    <Warning>
      Don't swap **Hostname** and **Data/URL** when you paste them into your DNS provider, and use the copy button for each value. The verification values are long and easy to mistype.
    </Warning>
  </Step>

  <Step title="Add both records at your DNS provider">
    Create both records as `CNAME`. Adding only the CloudFront record is the most common reason verification fails later.

    Set the TTL to `300` so any correction you make afterwards propagates in minutes instead of hours.
  </Step>

  <Step title="Verify ownership">
    Back in the console, click **Verify domain**. On success the panel changes to **Domain verified** and the button disappears.

    If it fails, the console shows a **Verification failed** box with the specific reason. Read it before you change anything — it names the record that is missing or incorrect.
  </Step>
</Steps>

<Note>
  DNS usually propagates within minutes, but it can take up to **24–48 hours**. If the console reports **DNS changes detected**, your records are correct and propagation is still finishing — no action needed.
</Note>

***

## Change or remove your domain

To move the flow to a different subdomain, enter the new one and click **Update Domain**. Didit issues a new pair of records, so you have to add those at your DNS provider and verify again.

To go back to `verify.didit.me`, clear the field and click **Remove Domain**.

<Note>
  While a custom domain is configured, you cannot re-enable the Didit login screen. Remove the domain first.
</Note>

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="500 error, or a message about another CloudFront distribution">
    Your subdomain has an `A` record conflicting with the CNAME — a host cannot have both. Delete the `A` record and keep only the CNAME.

    If there is no `A` record, the CloudFront CNAME points at the wrong target. Match it character for character against the **Data/URL** value in the console.
  </Accordion>

  <Accordion title="Verification never succeeds">
    Check that **both** records exist at your provider. Adding only the CloudFront record is the most common cause, because the flow appears to load while the certificate never issues.

    The **Verification failed** box in the console names the record that is missing or wrong.
  </Accordion>

  <Accordion title="The certificate never issues (Cloudflare)">
    Set both records to **DNS only** — the grey cloud, proxy off. The orange-cloud proxy intercepts the request and breaks certificate issuance.

    Providers without a proxy toggle, such as cPanel, are not affected.
  </Accordion>

  <Accordion title="The record name gets duplicated">
    Some providers append your zone automatically, turning `verify.yourbrand.com` into `verify.yourbrand.com.yourbrand.com`.

    On those providers, enter the **relative** name rather than the full one the console shows — `verify` instead of `verify.yourbrand.com`, and `_abc123.verify` instead of `_abc123.verify.yourbrand.com`. Then re-open the saved record and check that the full name it stored matches the console **Hostname** exactly.
  </Accordion>

  <Accordion title="A correction is taking hours to apply">
    Your records are cached for the length of their TTL. Lower the TTL to `300` and wait for the previous value to expire before testing again.
  </Accordion>
</AccordionGroup>

***

## Next steps

* **Match the rest of the UI to your brand** — colors, logo, and typography live in the [White Label](/console/white-label) style editor.
* **Enable your style per workflow** — branding only applies to workflows with **Include custom style** turned on. See [White Label](/console/white-label#activate-custom-style-in-your-workflow).
* **Review your disclosure obligations** — a custom domain hides Didit's branding but not its role. See [compliance responsibilities](/console/white-label#compliance-responsibilities-in-white-label-flows).
