---
title: Connect a Domain to Vercel, Netlify, Cloudflare Pages or GitHub Pages
description: The DNS records Vercel, Netlify, Cloudflare Pages and GitHub Pages ask for, for the root domain and for www, how to set them on Nymwell, and how to check that HTTPS works.
updated: 2026-11-01
---

# Connect your domain to Vercel, Netlify, Cloudflare Pages or GitHub Pages

This guide is for developers who have deployed a project and want it on their own domain. It lists the records each host asks for, for the root domain (`example.com`) and for `www`, as each host documents them on 2026-11-01, then shows how to set them on Nymwell and how to check the result.

- **Add the domain on the host first.** Cloudflare Pages and GitHub Pages both say to add the custom domain in their dashboard before you create DNS records [1][2].
- **The root and www take different records.** The root gets A records (on Cloudflare Pages, the whole domain moves to Cloudflare); `www` gets a CNAME that points at the host.
- **Copy the values your host shows you.** Vercel and Netlify give each project its own target, so the dashboard is the source of truth [3][4].
- **The host issues the HTTPS certificate** once DNS points at it. Allow up to a day for DNS changes to reach everyone [2][4].

## Which records does each host ask for?

| Host | Root (example.com) and www |
| --- | --- |
| Vercel | Root: A `76.76.21.21`, or the address on your domain card. www: CNAME from your domain card. |
| Netlify | Root: A `75.2.60.5`. www: CNAME to `<site>.netlify.app`. |
| Cloudflare Pages | Root: move the domain to Cloudflare (nameservers). www: CNAME to `<project>.pages.dev`. |
| GitHub Pages | Root: four A records, `185.199.108.153` to `185.199.111.153`. www: CNAME to `<user>.github.io`. |

Checked against each host's documentation on 2026-11-01. `<site>`, `<project>` and `<user>` stand for your own names on that host.

## How do I connect a domain to Vercel?

In the project, open **Settings**, then **Domains**, and add the domain. If you add `example.com`, Vercel offers to add `www` as well and recommends using `www` with a redirect from the root. From a terminal, `vercel domains add example.com <project>` does the same [5].

Then create the records on the domain card:

```text
@    A      76.76.21.21                  # or the address your domain card shows
www  CNAME  <the target on your domain card>
```

`76.76.21.21` is the usual address for the root, but Vercel says to always use the value on your project's domain card, and newer projects can get a different one [3]. The `www` target is unique to each project, for example `d1d4fc829fe7bc7c.vercel-dns-017.com` [5]. Vercel also says to remove any AAAA records on the root [3].

Once the records have propagated, Vercel requests a Let's Encrypt certificate for the domain by itself [6].

## How do I add a custom domain to Netlify?

Add the domain to your site in Netlify first. At the end of that step Netlify shows the CNAME to create [4].

```text
@    A      75.2.60.5
www  CNAME  <site>.netlify.app            # the subdomain Netlify shows you
```

For the root, Netlify's first choice is an ALIAS, ANAME or flattened CNAME pointing at `apex-loadbalancer.netlify.com`; where the DNS provider has no such record, it asks for an A record to `75.2.60.5` [4]. Nymwell's DNS offers A, AAAA, CNAME, MX, TXT, SRV and NS records, so on Nymwell you use the A record.

Netlify provisions a Let's Encrypt certificate automatically when you add a custom domain, and renews it [7].

## How do I set a custom domain on Cloudflare Pages?

It depends on whether you use a subdomain or the root.

**A subdomain such as `www` or `app`** can stay on Nymwell's DNS. In the Pages project, add the custom domain first, then create a CNAME to `<project>.pages.dev`. If the CNAME exists before the domain is added in the dashboard, the name fails to resolve and shows a 522 error [1].

**The root domain** has to be a zone on the same Cloudflare account as the Pages project, which means pointing the domain's nameservers to Cloudflare [1]. After that, Cloudflare answers for all of the domain's DNS, so copy your other records, email included, to Cloudflare first. On Nymwell you change the nameservers on the domain's page; it's a sensitive change, so the console asks you to confirm it.

## How do I use a custom domain with GitHub Pages?

Add the domain in the repository's **Pages** settings before you touch DNS. GitHub warns that doing it the other way round could let someone else host a site on your subdomain [2].

```text
@    A      185.199.108.153
@    A      185.199.109.153
@    A      185.199.110.153
@    A      185.199.111.153
www  CNAME  <user>.github.io             # without the repository name
```

GitHub also lists four optional AAAA addresses, `2606:50c0:8000::153` to `2606:50c0:8003::153`, and strongly recommends against wildcard records such as `*.example.com` [2]. The **Enforce HTTPS** option can take up to 24 hours to become available after DNS is set [2].

## How do I set the records on Nymwell?

The quickest way is a preset. Open the domain in the console, go to **DNS**, and under **Connect a website** pick Vercel, Netlify, GitHub Pages or Cloudflare Pages. Where the host gives you an address, such as `your-site.netlify.app`, enter it. Nymwell lists the records it will add and asks you to confirm; you can take them back in one step afterwards.

This is what each preset adds:

| Preset | Records it adds |
| --- | --- |
| Vercel | A `@` `76.76.21.21`, CNAME `www` `cname.vercel-dns.com` |
| Netlify | A `@` `75.2.60.5`, CNAME `www` to the site you enter |
| GitHub Pages | Four A `@` records, CNAME `www` to the address you enter |
| Cloudflare Pages | CNAME `www` to the project you enter |

A preset only adds records. It skips ones that are already there, but it doesn't remove other A, AAAA or CNAME records for the same name, so delete any leftovers in the records list. If your Vercel domain card shows values that differ from the preset's, add the card's values as records yourself instead.

Owners and admins apply a preset at once; when a domain manager or DNS operator applies one, the change goes to **Approvals**. An AI agent connected over the signed-in MCP server (`https://nymwell.com/mcp/account`) can apply the same presets or stage single records, and the workspace's setting decides whether the change applies at once or waits for you. The `nymwell` CLI reads records (`npx nymwell dns example.com`, with an agent key) but doesn't change them.

## How long does it take, and when does HTTPS work?

DNS changes can take up to 24 hours to reach everyone, according to GitHub; Netlify says it may take a full day [2][4]. Records added by a Nymwell preset have a TTL of 300 seconds.

The certificate comes after DNS. Vercel and Netlify request one from Let's Encrypt on their own [6][7]. Cloudflare issues the certificate for a Pages custom domain, and a CAA record that doesn't allow its certificate authorities stops it [1]. On GitHub Pages, turn on **Enforce HTTPS** once the option appears [2].

## How do I check that it's working?

Ask for the public records of the name you connected:

```bash
npx nymwell info www.example.com --json
```

In the answer, `dns.a` and `dns.aaaa` show the addresses the name resolves to now, and `website.https` shows whether it answers over HTTPS. Without `--json` you get a short summary. This is part of what it printed for nextjs.org on 2026-11-01, with some lines left out:

```text
$ npx nymwell info nextjs.org
nextjs.org: registered
  nameservers ns1.vercel-dns.com, ns2.vercel-dns.com
  website     answers over HTTPS
```

If you prefer `dig`, GitHub's guide lists the commands for the root and for `www` [2].

## What usually goes wrong?

**A CNAME on the root.** DNS doesn't allow a CNAME at the root name, and Nymwell refuses one. Use the host's A records, or move the zone as Cloudflare Pages asks.

**Old records for the same name.** When a domain shows an invalid configuration, Vercel's first suggestion is to look for conflicting A, AAAA or CNAME records for the same name [5].

**Records created too early.** On Cloudflare Pages a CNAME added before the domain shows a 522 error [1]; on GitHub Pages it opens the door to a takeover [2].

**A CAA record that blocks the certificate.** Vercel and Netlify use Let's Encrypt [6][7]; Cloudflare lists the authorities to allow for Pages [1]. If the domain has CAA records, make sure they include your host's.

## Can Claude Code do this for me?

Partly. In a terminal it can run the host's own CLI, such as `vercel domains add`, and check the result with `npx nymwell info`. Changing records on Nymwell goes through the console or through the signed-in MCP connection described above. [Buy a domain from Claude Code](https://nymwell.com/en/guides/buy-a-domain-from-claude-code/) covers the setup.

## Questions

**Should I use www or the root domain?**
Add both and redirect one to the other. Vercel recommends serving from `www` with a redirect from the root, and GitHub recommends setting up `www` alongside the root for HTTPS [5][2].

**Do I need to change my nameservers?**
Not for Vercel, Netlify or GitHub Pages: the A and CNAME records are enough, and Vercel notes that changing only those doesn't require moving your other DNS records [5]. Cloudflare Pages needs the nameservers on Cloudflare only for the root domain [1].

**Will connecting my site affect email?**
Not if you only change the A, AAAA and CNAME records for the root and `www`; MX records stay as they are. If you move the nameservers to another provider, copy the MX and TXT records there first [5].

**Why does my host still say the configuration is invalid?**
Usually because DNS hasn't propagated yet, an old record for the same name is still there, or the value differs from the one in the host's dashboard. Compare with `npx nymwell info` and the dashboard [5].

**Can I undo a preset?**
Yes. The console can take back the records a preset added in one step.

## Next step

Add your domain on the host, then open it in the [Nymwell console](https://nymwell.com/app/domains/), apply the matching preset under **DNS**, and check it with `npx nymwell info www.yourdomain.com` once the host shows the domain as ready.

## Sources

Checked on 2026-11-01.

1. Cloudflare Pages docs, custom domains: https://developers.cloudflare.com/pages/configuration/custom-domains/
2. GitHub Docs, managing a custom domain for your GitHub Pages site: https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site
3. Vercel Knowledge Base, can I use my domain on Vercel with A records?: https://vercel.com/kb/guide/a-record-and-caa-with-vercel
4. Netlify docs, configure external DNS for a custom domain: https://docs.netlify.com/manage/domains/configure-domains/configure-external-dns/
5. Vercel docs, adding and configuring a custom domain: https://vercel.com/docs/domains/working-with-domains/add-a-domain
6. Vercel docs, working with SSL certificates: https://vercel.com/docs/domains/working-with-ssl
7. Netlify docs, HTTPS (SSL): https://docs.netlify.com/manage/domains/secure-domains-with-https/https-ssl/

## Related

- [Buy a domain from Claude Code](https://nymwell.com/en/guides/buy-a-domain-from-claude-code/)
- [Let AI buy a domain for you (setup for Claude, ChatGPT, Codex)](https://nymwell.com/en/guides/buy-a-domain-with-ai/)
- [Who owns a domain and when it expires](https://nymwell.com/en/guides/who-owns-a-domain/)
- [DNS management for domains and AI agents](https://nymwell.com/en/dns/)
