# Connect your domain (/docs/omnirelay/connect-your-domain)

> Point a custom domain at your white-label platform, with per-provider DNS steps and a troubleshooting guide.

Your platform runs on your own domain. The setup flow under **Reseller → White Label**
shows you the exact DNS record to create (its type, host, and value). This page covers
the details: subdomain vs root domain, per-provider steps, and what to do when the check
does not pass.

## Subdomain or root domain? [#subdomain-or-root-domain]

The record type depends on the domain you use.

* **Subdomain** (`app.yourbrand.com`): add a **CNAME** pointing to the hostname the setup
  shows. This is the recommended path, it works on every provider and keeps our origin
  hidden.
* **Root / apex** (`yourbrand.com`): a CNAME is not valid at a root domain, so add an
  **A record** to the IP the setup shows. If your provider supports **ALIAS / ANAME**
  (or CNAME flattening), you can point the root at our hostname instead, which keeps the
  IP hidden.

In your provider's **Host** (or **Name**) field, enter just the subdomain label, for
example `app` for `app.yourbrand.com`. Some providers want the full hostname
(`app.yourbrand.com`) instead. Either works. For a root domain the host is usually `@`.

  When in doubt, use a subdomain like `app.yourbrand.com`. It is the simplest, most
  portable option.

## Per-provider steps [#per-provider-steps]

The setup flow always shows the exact record (type, host, value). Below is where to add it
on the most common providers, and which ones offer a root-domain record that keeps our IP
hidden. For a subdomain the answer is always a **CNAME** to the setup hostname; the
provider differences are really about the **root domain**.

### Cloudflare [#cloudflare]

1. Open **DNS → Records → Add record**.
2. Subdomain: a **CNAME** with the name set to your subdomain and the target set to the
   setup hostname. Root domain: add a **CNAME at the root** (name `@`), Cloudflare flattens
   it automatically.
3. **Set the proxy status to "DNS only" (grey cloud), not "Proxied" (orange cloud).** A
   proxied record stops us from issuing your HTTPS certificate, this is the single most
   common reason setup fails.

### GoDaddy [#godaddy]

1. **My Products → your domain → DNS → Add**.
2. Subdomain: **CNAME**, Name = your subdomain, Value = the setup hostname.
3. Root domain: GoDaddy has no ALIAS option, so add an **A record** (Name = `@`) to the IP
   the setup shows.

### Namecheap [#namecheap]

1. **Domain List → Manage → Advanced DNS → Add New Record**.
2. Subdomain: **CNAME Record**, Host = your subdomain, Value = the setup hostname.
3. Root domain: Namecheap supports an **ALIAS Record** (Host = `@`) to the setup hostname,
   which keeps our IP hidden. If you prefer, an **A Record** to the IP also works.

### AWS Route 53 [#aws-route-53]

1. **Hosted zones → your domain → Create record**.
2. Subdomain: a **CNAME** to the setup hostname.
3. Root domain: an **A record** with **Alias** turned on, routing to the setup hostname.

### Squarespace (and former Google Domains) [#squarespace-and-former-google-domains]

1. **Settings → Domains → your domain → DNS settings**.
2. Subdomain: a **CNAME** to the setup hostname.
3. Root domain: add an **A record** (Host = `@`) to the IP the setup shows.

### Hostinger [#hostinger]

1. **Domains → your domain → DNS / Nameservers → Manage DNS records**.
2. Subdomain: **CNAME**, Name = your subdomain, Target = the setup hostname.
3. Root domain: an **A record** (Name = `@`) to the IP the setup shows.

### Porkbun [#porkbun]

1. **Domain Management → your domain → DNS Records**.
2. Subdomain: a **CNAME** to the setup hostname.
3. Root domain: Porkbun supports an **ALIAS** record to the setup hostname (keeps the IP
   hidden), or an **A record** to the IP.

### IONOS [#ionos]

1. **Domains & SSL → your domain → DNS**.
2. Subdomain: a **CNAME** to the setup hostname.
3. Root domain: an **A record** (Host = `@`) to the IP the setup shows.

### Any other provider [#any-other-provider]

Use the type the setup shows: a **CNAME** for a subdomain, or for a root domain an
**A record** (always works) or an **ALIAS / ANAME** record if your provider offers one.
Host is your domain; value is what the setup displays.

## HTTPS is automatic [#https-is-automatic]

You do not manage certificates. Once your record is live and pointing at us, we issue and
renew the SSL certificate for you, usually within a few minutes, and your platform serves
over HTTPS on your domain.

  On Cloudflare, keep the record &#x2A;*DNS only (grey cloud)**, not proxied. Proxying
  terminates HTTPS at Cloudflare and blocks our certificate from being issued. This is the
  most common reason a domain does not go live.

## Troubleshooting [#troubleshooting]

### "Verify and launch" says my domain is not pointed yet [#verify-and-launch-says-my-domain-is-not-pointed-yet]

DNS changes take a few minutes (sometimes longer) to spread across the internet. Confirm
the record type, host, and value match exactly what the setup shows, wait a few minutes,
and try again.

### It has been a while and it still does not verify [#it-has-been-a-while-and-it-still-does-not-verify]

Check that the record is actually live with a lookup tool such as
[dnschecker.org](https://dnschecker.org), or run `dig yourdomain.com` in a terminal. It
should resolve to the value the setup shows. If you are on Cloudflare, make sure the
record is &#x2A;*DNS only (grey cloud)**, not proxied.

### My root domain has no CNAME option [#my-root-domain-has-no-cname-option]

A root domain (`yourbrand.com`) cannot use a CNAME. Use an **A record** to the IP the
setup shows, or an **ALIAS / ANAME** record if your provider supports one. Using a
subdomain (`app.yourbrand.com`) avoids this entirely.

### The page loads but the certificate looks wrong [#the-page-loads-but-the-certificate-looks-wrong]

The certificate is issued after your domain points at us. Give it a few minutes after the
record goes live, then re-run **Verify and launch**.

## Next [#next]

Back in the dashboard, click **Verify and launch** once the record is saved. See
[Set up your platform](/docs/omnirelay/set-up-your-platform) for the full setup flow.