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

# Custom domains

> Putting your shop on your own address, and the DNS records that actually work.

**Storefront → Domains.** Connect a domain you own. HTTPS gets sorted out
automatically once the DNS checks out.

## A root domain and a subdomain need different records

This is far and away the most common reason a domain connection sits there
never working.

| Your domain        | Record type  |
| ------------------ | ------------ |
| `shop.example.com` | **CNAME**    |
| `example.com`      | **A record** |

A root domain can't have a CNAME. That's a rule of DNS, not something we've
chosen, and it's why one set of instructions copied for both never works.

<Warning>
  Use the records shown on the domains page for **your** domain. The CNAME target
  is specific to this setup — it isn't the generic one you'll find in most hosting
  guides.
</Warning>

## Setting it up

<Steps>
  <Step title="Add the domain">
    Type it in and you'll get the exact records to create.
  </Step>

  <Step title="Create them at your registrar">
    Wherever you bought the domain. Plus any verification record shown.
  </Step>

  <Step title="Wait">
    Usually minutes. Can be much longer depending on your registrar's settings.
  </Step>

  <Step title="HTTPS">
    Issued for you once the records verify.
  </Step>
</Steps>

## If your domain has been used elsewhere before

If it was previously attached to another account on the same hosting platform,
you'll see an extra TXT record to add at `_vercel.yourdomain.com`.

It appears in the same table as the others. Miss it and the domain never
finishes verifying, with nothing obvious to explain why.

## What you get on your own domain

<CardGroup cols={2}>
  <Card title="Custom code runs" icon="code">
    Your own CSS and JavaScript only work here, never on a stashed.one address.
    → [Custom code](/stashed/storefront/custom-code)
  </Card>

  <Card title="Apple Pay works" icon="apple">
    It needs a verification file we serve for you at `/.well-known/`.
  </Card>

  <Card title="Your own sitemap and robots" icon="magnifying-glass">
    Served for your shop specifically.
  </Card>

  <Card title="Sign-in still happens on our domain" icon="right-to-bracket">
    It hands back to you afterwards. Running logins on arbitrary domains isn't
    something we'll do.
  </Card>
</CardGroup>

## Keeping an eye on it

We check your records daily. If a domain loses them, it gets stood down rather
than left half-broken, and you'll hear about it.

## When it isn't working

<AccordionGroup>
  <Accordion title="It never finishes verifying">
    Check the record type first — root needs A, subdomain needs CNAME. Then check
    for the extra `_vercel` record if the domain has a history.
  </Accordion>

  <Accordion title="Everything verified but the site doesn't load">
    The domain may need adding to the hosting project by hand at our end. Get in
    touch — the domains page will say so if that's the situation.
  </Accordion>

  <Accordion title="Apple Pay doesn't appear">
    The verification file isn't loading. Try opening
    `yourdomain.com/.well-known/apple-developer-merchantid-domain-association`
    directly.
  </Accordion>

  <Accordion title="Your sitemap or robots.txt 404s">
    Pages work but those two don't? That's ours to fix, not yours — let us know.
  </Accordion>
</AccordionGroup>
