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

# Custom domains

> Set up and verify a custom domain for your QR codes.

Custom domains let your QR codes and short links resolve through your own sub-domain (for example `offer.yourbrand.com`) instead of the default `scnv.io` short URL.

<Note>
  Two routes exist in the app for this feature: `/settings/domains` and `/account/domains`. Live testing confirmed `/account/domains` is a redirect shim straight to `/settings/domains` (it renders nothing of its own), and the app's own sidebar link — labeled **Custom Domain** under **Settings** — also points to `/settings/domains`. That's the canonical, documented route below.
</Note>

Open **Settings > Custom Domain** in the sidebar, or go directly to `/settings/domains`.

<Frame caption="Custom Domains page with no domains added yet">
  <img src="https://mintcdn.com/scanova-api/q8t3kzcRTgAP7jV0/images/v2/qr-codes/manage/custom-domains/00-domains-list.png?fit=max&auto=format&n=q8t3kzcRTgAP7jV0&q=85&s=5bbb388795466a47527aaab7e8a4b69c" alt="Custom Domains settings page showing an empty state with a globe icon, 'No custom domains added yet', and an Add Domain button" width="1440" height="900" data-path="images/v2/qr-codes/manage/custom-domains/00-domains-list.png" />
</Frame>

<Note>
  Custom domains are a Pro-and-above feature. On a plan without domain access, this page shows an upgrade prompt instead of the setup flow below.
</Note>

## Adding and verifying a domain

<Steps>
  <Step title="Start the setup">
    Click **Add Domain**. A drawer opens asking for the sub-domain name you want to use — the full name including the sub-domain, for example `offer.myweb.com`.

    <Frame caption="Step 1: entering the sub-domain name">
      <img src="https://mintcdn.com/scanova-api/q8t3kzcRTgAP7jV0/images/v2/qr-codes/manage/custom-domains/01-add-domain-step1.png?fit=max&auto=format&n=q8t3kzcRTgAP7jV0&q=85&s=2f1d9971dc4f7ef172f90908af5fea00" alt="Setup Custom Domain drawer, step 1, showing an https:// prefixed input for the sub-domain name and a collapsed Advanced Settings section" width="1440" height="900" data-path="images/v2/qr-codes/manage/custom-domains/01-add-domain-step1.png" />
    </Frame>

    An **Advanced Settings** section lets you disable case-sensitivity on this domain's URL slugs before you continue — this can't be changed later, so decide up front if you need it.
  </Step>

  <Step title="Add the DNS records">
    Once you continue, the domain is created and the drawer shows the exact DNS records to add at your registrar: a **CNAME** record pointing your sub-domain at Scanova's target, and a **TXT** record (on `@`, the root) proving ownership.

    <Frame caption="The DNS records this domain needs, from the read-only details view">
      <img src="https://mintcdn.com/scanova-api/q8t3kzcRTgAP7jV0/images/v2/qr-codes/manage/custom-domains/05-dns-details-readonly.png?fit=max&auto=format&n=q8t3kzcRTgAP7jV0&q=85&s=994b4e02f9ef2e92825f5f361d2d2462" alt="DNS Details drawer showing a CNAME record and a TXT record, both marked 'Not found yet', with their Type, Name, and Content/Target fields and copy-to-clipboard buttons" width="1440" height="900" data-path="images/v2/qr-codes/manage/custom-domains/05-dns-details-readonly.png" />
    </Frame>

    Every value has a copy-to-clipboard button next to it. If you'd rather not do this yourself, see [Sending DNS instructions to your IT team](#sending-dns-instructions-to-your-it-team), below.
  </Step>

  <Step title="Verify">
    Click **Verify**. If both records resolve, the domain is marked verified immediately. If not — which is expected right after adding new DNS records — you'll see a **"could not verify yet"** message:

    > Unable to verify your custom domain right now. Please note that sometimes it will take up to 24 hours before our system can recognise the changes on your subdomain. You can try and re-verify the domain after some time.

    <Note>
      DNS propagation can take up to **48 hours** in the worst case, even though the in-app copy says up to 24 hours for this specific message — both figures appear in the product depending on where you look, so treat "up to 48 hours" as the safe upper bound before assuming something is actually wrong.
    </Note>
  </Step>
</Steps>

Live-tested with a domain that has no real DNS records pointing at it: the domain was created successfully and immediately showed **Unverified** status, exactly as expected, since there was nothing for it to find.

## After adding a domain

Once a domain exists in your list, its row shows its verification status, whether it's your **Default** domain, and a **···** menu:

<Frame caption="A domain row with Unverified status, Reverify, Setup Again, and the row menu open">
  <img src="https://mintcdn.com/scanova-api/q8t3kzcRTgAP7jV0/images/v2/qr-codes/manage/custom-domains/03c-domain-row-menu.png?fit=max&auto=format&n=q8t3kzcRTgAP7jV0&q=85&s=ec4e2bce8c27ef38148c84f164f8675f" alt="Custom domain row showing Unverified status, a Reverify button, a Setup Again link, and an open dropdown menu with Send setup instructions, Root domain settings, and Delete options" width="1440" height="900" data-path="images/v2/qr-codes/manage/custom-domains/03c-domain-row-menu.png" />
</Frame>

* **Reverify** — re-checks DNS without restarting setup. Use this after you've actually added the records and given DNS time to propagate.
* **Setup Again** — restarts the setup drawer at step 1 with the current host prefilled, in case you need to correct a typo. Since a domain name can't be edited after creation, changing it here deletes the old entry and creates a new one — only after the replacement is confirmed and successfully created, so you're never left with no domain at all.
* **Send setup instructions** — emails the exact DNS records to whoever manages your DNS.
* **Root domain settings** — choose what happens when someone visits the bare domain directly, without a QR code path: show a generic page, redirect to a URL, or show a custom landing page.
* **Delete** — removes the domain; any QR codes using it fall back to the default Scanova short URL.

### Sending DNS instructions to your IT team

If you'd rather hand the DNS records to whoever manages your domain, use **Send setup instructions** from the row menu instead of copying each value yourself:

<Frame caption="Emailing DNS setup instructions to another team">
  <img src="https://mintcdn.com/scanova-api/q8t3kzcRTgAP7jV0/images/v2/qr-codes/manage/custom-domains/07-send-instructions-dialog.png?fit=max&auto=format&n=q8t3kzcRTgAP7jV0&q=85&s=b41463d7c9280335d2af53902f49a610" alt="Send setup instructions dialog with a recipient email field, an optional note textarea, and Cancel/Send buttons" width="1440" height="900" data-path="images/v2/qr-codes/manage/custom-domains/07-send-instructions-dialog.png" />
</Frame>

Enter a recipient email (for example, your IT team's address) and an optional note, then send. The email includes the exact CNAME and TXT records for that domain — the same values shown in the DNS records step above.

## Custom SSL

A **Custom SSL certificate** option becomes available in the row's **···** menu only after a domain is fully verified (both CNAME and TXT) — it wasn't reachable during this testing pass since no verified domain was available in the test environment. From the source, the flow is: generate a CSR (certificate signing request) for the domain, submit it to your own certificate authority, then paste the signed certificate back in to activate it. On plans without this add-on, the dialog instead shows a "request access" form that reaches out to Scanova's team directly, since Custom SSL has no self-serve upgrade path.

<Warning>
  This is documented from source, not confirmed live — verify the exact CSR/upload flow against the running app before treating the details above as final.
</Warning>

## Related

* [Upgrading](/billing/upgrading) — custom domains are a Pro-and-above feature; upgrade here if your plan doesn't include them.
* [Subscription & billing](/billing/subscription-and-billing) — manage the plan that gates domain access.
* [QR Health Center](/qr-codes/manage/qr-health-center) — flags domains stuck in an unverified state as an open issue.
