Custom Domain — Connect Your Domain to Netlify

Connect a custom domain to your Dax Pro site on Netlify: choose a domain, point DNS records, enable HTTPS with Let's Encrypt, and verify the site and Decap CMS work at your domain. Includes troubleshooting for DNS propagation and common misconfigurations.

Why a Custom Domain Matters

The default Netlify URL (your-site.netlify.app) works. It is free, it is HTTPS, and it is stable. But it has three limitations:

1. It is not memorable. Readers remember example.com, not amazing-name-123456.netlify.app.

2. It does not build brand trust. A real domain signals a real business. A Netlify subdomain signals a project.

3. It does not help SEO. Search engines treat your-site.netlify.app as a subdomain of Netlify, not as your own site. Your pages rank for your brand only if readers search for your-site.netlify.app directly, which they will not.

A custom domain fixes all three. It costs $10–$20 per year (depending on the TLD and registrar). It is the single highest-value upgrade you can make to a deployed Dax Pro site.

This chapter walks through connecting a custom domain to your Netlify deployment:

1. Choosing a domain — registrars, TLDs, naming tips

2. Purchasing a domain — step by step

3. Adding the domain to Netlify — one click, one input

4. Configuring DNS — the actual connection between domain and Netlify

5. Enabling HTTPS — automatic with Netlify

6. Verifying everything works — site, admin panel, emails

7. Troubleshooting — DNS propagation, misconfigured records, HTTPS failures

For sites on other hosts (Vercel, Cloudflare, VPS), the DNS concepts are the same. The specific records differ. Refer to your host's documentation for the exact records.


Part 1 — Choosing a Domain

Registrars

Popular domain registrars:

Registrar Price Range Notes
Cloudflare Registrar At-cost (~$10/year for .com) No markup. Requires Cloudflare DNS. Best for Cloudflare users
Namecheap $10–$15/year for .com Free WHOIS privacy. Good UI
Porkbun $10–$12/year for .com Free WHOIS privacy. Fast checkout
Google Domains Closed (sold to Squarespace) Do not use
GoDaddy Higher prices, aggressive upsells Avoid unless already invested
Netlify Reseller $20/year for .com Integrated with Netlify, one less step

For most users, Cloudflare Registrar or Namecheap is the best combination of price, features, and reliability.

TLD Choices

For a business or personal brand:

  • .com — most trusted, most expensive, mostly taken
  • .dev — developer-focused, requires HTTPS (which Netlify provides)
  • .io — startup and tech community, expensive
  • .co — alternative to .com, moderate pricing
  • .net — acceptable but second choice to .com
  • For a niche site:

  • .tech, .studio, .agency, .design — descriptive, usually available
  • Avoid:

  • .xyz, .top, .click, .loan — associated with spam
  • .tk, .ml, .ga, .cf, .gq — free TLDs, often blocked by email providers and browsers
  • Naming Tips

  • Keep it short. Under 15 characters if possible. Long domains are hard to type and remember
  • Avoid hyphens. my-company-name.com reads awkwardly on phone calls. mycompanyname.com is better
  • Avoid numbers unless they are part of your brand (e.g., web3.dev)
  • Avoid trademarked words. Do not use wordpress, google, netlify, or other brand names — this is trademark infringement
  • Check social handles first. If mycompany is available as a domain but taken on Twitter and GitHub, consider whether the mismatch matters
  • Say it out loud. If people cannot spell it after hearing it once, pick something else

  • Part 2 — Purchasing a Domain

    The steps below assume Cloudflare Registrar, which is the cheapest option for Cloudflare users. Namecheap and Porkbun are similar.

    Step 1: Create a Cloudflare Account

    1. Open cloudflare.com and click Sign up

    2. Enter your email and password

    3. Confirm your email

    4. You land on the Cloudflare dashboard

    Step 2: Search for a Domain

    1. In the Cloudflare dashboard, find Domain Registration → Register Domains

    2. Enter your desired domain name

    3. Cloudflare shows availability and pricing

    4. If the domain is available, click Purchase

    5. If the domain is taken, try variations: .dev, .co, add a word, add a hyphen

    Step 3: Complete the Purchase

    1. Enter payment details

    2. Enable WHOIS Privacy — this hides your personal contact info from public WHOIS lookup. Cloudflare includes it free

    3. Auto-renew — recommended for production domains. If the domain expires, your site goes down

    4. Confirm and pay

    5. The domain is now yours for one year

    Step 4: Cloudflare Activates the Domain

    New domains on Cloudflare take a few minutes to become active. The dashboard shows status changes:

  • Pending → Active → Ready
  • Wait until the status is Active. This usually takes 5–10 minutes.

    Step 5: Note the Nameservers

    Cloudflare assigns two nameservers to your domain, like:

  • ada.ns.cloudflare.com
  • bob.ns.cloudflare.com
  • Since Cloudflare is both your registrar and your DNS provider, you do not need to update nameservers manually — Cloudflare already points the domain at its own nameservers. If you purchased through Namecheap or Porkbun, you would need to update nameservers to Cloudflare's.


    Part 3 — Add the Domain to Netlify

    Once you own the domain, tell Netlify that it should serve your site at that domain.

    Step 1: Open Netlify Domain Management

    1. Open app.netlify.com and log in

    2. Click your site from the list

    3. Click Site configuration in the left sidebar

    4. Click Domain management

    Step 2: Add a Custom Domain

    1. Click Add a domain

    2. Enter your domain — example.com (no www, no https://, no trailing slash)

    3. Click Verify

    4. Netlify checks whether the domain points to Netlify. It does not yet, so Netlify offers two paths:

    - Option A: set up a Netlify DNS zone (recommended if you use Cloudflare Registrar)

    - Option B: configure DNS records manually at your DNS provider

    5. Choose based on your DNS setup

    Option A — Netlify DNS (Recommended for Cloudflare Users)

    Netlify DNS means Netlify manages your DNS records. This is the easiest path.

    1. Click Set up Netlify DNS

    2. Netlify shows four nameservers, like:

    - dns1.p01.nsone.net

    - dns2.p01.nsone.net

    - dns3.p01.nsone.net

    - dns4.p01.nsone.net

    3. Copy these nameservers

    4. Go to Cloudflare dashboard → DNS → Records for your domain

    5. Update the nameservers to Netlify's four nameservers

    - Note: Cloudflare Registrar does not allow changing nameservers away from Cloudflare. If you used Cloudflare Registrar, use Option B instead

    6. Return to Netlify and click Verify

    If you used Cloudflare Registrar, use Option B. Cloudflare Registrar is locked to Cloudflare DNS. Netlify DNS is not compatible.

    Option B — Manual DNS Records

    If you cannot use Netlify DNS (e.g., Cloudflare Registrar), add the records manually.

    Netlify shows two records to add:

    Record 1 — Apex domain:

  • Type: A
  • Name: @ (or the apex domain)
  • Value: 75.2.60.5 (Netlify's load balancer IP)
  • TTL: Auto
  • Record 2 — WWW subdomain:

  • Type: CNAME
  • Name: www
  • Value: your-site.netlify.app
  • TTL: Auto
  • Steps:

    1. In Netlify, note both records

    2. Open Cloudflare dashboard → DNS → Records

    3. Click Add record for the A record

    4. Fill in:

    - Type: A

    - Name: @

    - Content: 75.2.60.5

    - Proxy status: DNS only (gray cloud, not orange)

    5. Click Save

    6. Click Add record for the CNAME

    7. Fill in:

    - Type: CNAME

    - Name: www

    - Content: your-site.netlify.app

    - Proxy status: DNS only (gray cloud)

    8. Click Save

    9. Return to Netlify and click Verify

    Important: set Cloudflare proxy status to DNS only (gray cloud), not Proxied (orange cloud). Netlify provides its own CDN and SSL. Cloudflare's proxy would break the SSL handshake between Netlify and the browser. If you want Cloudflare's proxy, use Cloudflare Pages instead of Netlify.

    Step 3: Wait for Verification

    Netlify checks DNS records periodically. When the records propagate (5 minutes to 1 hour, sometimes up to 24 hours), Netlify marks the domain as Verified.

    You will receive an email when verification completes. You can also check by refreshing the Domain management page in Netlify.


    Part 4 — HTTPS Setup

    Netlify provisions HTTPS certificates automatically via Let's Encrypt. The process begins after the domain is verified.

    Step 1: Watch for HTTPS Certificate

    1. In Netlify, Site configuration → Domain management

    2. Find your domain in the list

    3. Watch for the HTTPS column to show Let's Encrypt certificate

    4. This takes 5–30 minutes after DNS verification

    Step 2: Enable Force HTTPS

    After the certificate is issued:

    1. Scroll to HTTPS

    2. Click Force HTTPS

    3. Netlify redirects all HTTP traffic to HTTPS

    This step is optional but recommended. Without it, visitors can access your site over unencrypted HTTP. With it, all traffic is encrypted.

    Step 3: Verify HTTPS

    1. Open https://yourdomain.com in a browser

    2. Confirm the padlock icon in the address bar

    3. Click the padlock, verify the certificate is issued to your domain

    4. Visit http://yourdomain.com — should redirect to https://yourdomain.com


    Part 5 — Verifying Everything Works

    After DNS verifies and HTTPS is active, verify the full setup.

    Site Verification

    1. Open https://yourdomain.com — homepage loads

    2. Navigate to /about/, /posts/, /services/, /contact/ — all pages load

    3. Click navigation links — no 404s

    4. Check the console (F12) for errors — should be none

    5. Test on mobile (resize browser or actual phone) — layout responsive

    Decap CMS Verification

    1. Open https://yourdomain.com/admin/

    2. Log in with your Identity credentials

    3. Navigate the collections — all appear

    4. Edit a field, click Publish

    5. Wait 30–60 seconds

    6. Open https://yourdomain.com in a new tab — the change appears

    7. Check the Netlify Deploys tab — a new build ran

    Email Verification

    If you use Formspree for the contact form:

    1. Navigate to /contact/

    2. Submit a test submission

    3. Check the recipient inbox — the email arrives

    4. Check the Formspree dashboard — submission appears

    5. If Formspree requires domain verification, verify your custom domain in Formspree

    SEO Verification

    1. Open opengraph.xyz

    2. Enter https://yourdomain.com

    3. Confirm the preview shows your title, description, and image

    4. Check the social preview for a post URL — the post image, title, and description appear

    WWW and Non-WWW

    1. Open https://www.yourdomain.com — should redirect to https://yourdomain.com (or vice versa, depending on your primary domain setting)

    2. Open https://yourdomain.com — loads without redirect

    Netlify sets one as the primary domain. The other redirects. Both work; one is canonical.

    To change which is primary:

    1. In Netlify → Domain management

    2. Find both example.com and www.example.com in the list

    3. Click the three-dot menu on the one you want as primary

    4. Choose Set as primary domain


    Part 6 — Update Site Metadata

    After the custom domain is live, update _data/metadata.yaml so canonical URLs and social previews use the new domain.

    Before

    url: "https://your-site.netlify.app"
    

    After

    url: "https://yourdomain.com"
    

    1. Open Decap CMS at https://yourdomain.com/admin/

    2. Click ⚙ Settings → Site Metadata

    3. Change URL to https://yourdomain.com

    4. Click Publish

    5. Wait for the rebuild

    6. Verify the canonical URL: view source on any page, confirm uses the new domain

    Why this matters: the canonical URL tells search engines which domain to index. If it says netlify.app while the site is at yourdomain.com, search engines may index the wrong domain or see duplicate content.

    Update Formspree

    If you use Formspree, update the verified domain:

    1. Open formspree.io and log in

    2. Open your form

    3. Go to Settings → Domains

    4. Add yourdomain.com as a verified domain

    5. Follow the DNS verification steps (TXT record or HTML)

    6. Once verified, remove your-site.netlify.app if it was added

    Without this step, submissions from the custom domain may be marked unverified or rejected.

    Update Social Links

    If your metadata.yaml has a social section with your old URL, update those too:

    social:
    

    - name: "GitHub"

    url: "https://github.com/your-username"

    - name: "Gumroad"

    url: "https://creativitaz.gumroad.com/l/dax-pro"

    # add your new domain if applicable


    Part 7 — Troubleshooting DNS and HTTPS

    DNS Does Not Verify

    Symptom: Netlify shows "Awaiting external DNS" for hours.

    Causes and fixes:

  • DNS records are wrong — verify the A record points to 75.2.60.5 and the CNAME points to your-site.netlify.app. No typos
  • Cloudflare proxy is enabled — set proxy status to DNS only (gray cloud). Netlify cannot verify through Cloudflare's proxy
  • TTL is too high — if TTL is 24 hours, DNS propagation takes up to 24 hours. Set to Auto or 300 seconds
  • Registrar changes pending — some registrars take 24–48 hours to propagate nameserver changes
  • The domain is brand new — some TLDs (e.g., .dev, .app) require DNS to be set up before they resolve. Add basic records first, then Netlify's records
  • Check propagation:

    1. Open dnschecker.org

    2. Enter your domain

    3. Select A record

    4. Confirm the record resolves to 75.2.60.5 from multiple global locations

    If dnschecker shows the correct IP worldwide but Netlify still says "Awaiting," wait 10 more minutes. Netlify checks every few minutes.

    HTTPS Certificate Fails

    Symptom: HTTPS column shows "Certificate provisioning failed."

    Causes and fixes:

  • DNS not fully propagated — wait until DNS verification is complete
  • CAA records block Let's Encrypt — if your DNS has CAA records, they must include letsencrypt.org. Check with your registrar. Cloudflare lets you add CAA records in the DNS tab
  • Domain is proxied — disable Cloudflare proxy (gray cloud)
  • Domain uses a different SSL provider — if you provisioned an SSL certificate elsewhere, remove it. Netlify manages SSL
  • To retry:

    1. In Netlify → Domain management

    2. Click the three-dot menu on the domain

    3. Choose Renew certificate

    If the certificate still fails after 30 minutes, contact Netlify support with the domain name and DNS setup details.

    Site Loads but Admin Fails

    Symptom: https://yourdomain.com/ loads, but https://yourdomain.com/admin/ shows an error or blank page.

    Causes and fixes:

  • Git Gateway not enabled — go to Netlify → Identity → enable Git Gateway
  • Identity not enabled — go to Netlify → Identity → enable Identity
  • The login redirects to the wrong URL — check public/admin/config.yml for a base_url that points to the old Netlify domain. If you set it earlier for the subdomain strategy, update it to the new custom domain
  • Editor is not invited — check Identity → Users. The editor must be invited and confirmed
  • To fix:

    1. Open public/admin/config.yml

    2. Confirm backend.name is git-gateway and backend.branch is main

    3. If base_url or site_domain are present, update them to the custom domain or remove them

    4. Rebuild and redeploy

    WWW Does Not Redirect

    Symptom: www.yourdomain.com loads a broken page or the Netlify default, not your site.

    Causes and fixes:

  • WWW CNAME is missing — add a CNAME record www → your-site.netlify.app
  • WWW is set as primary but no certificate — Netlify provisions a separate certificate for www.yourdomain.com. Wait for it, or set yourdomain.com as primary (which redirects www to apex)
  • Email Not Arriving

    Symptom: contact form submissions succeed but no email arrives.

    Causes and fixes:

  • Formspree domain verification is outdated — verify the custom domain in Formspree
  • Email recipient is wrong — check Formspree → Email settings
  • Spam folder — check your spam folder
  • Formspree submission rejected — check the Formspree dashboard for errors

  • Part 8 — What to Do After the Domain Is Live

    Once the custom domain is verified, HTTPS is active, and the site works, do these five tasks:

    1. Update Bookmarks

    Replace all bookmarks from your-site.netlify.app with yourdomain.com. If you bookmarked the admin panel, update that too.

    2. Update Social Profiles

    If you have social profiles with a URL field, update them:

  • Twitter/X profile
  • LinkedIn company page
  • GitHub repository description
  • Gumroad product page
  • Email signature
  • 3. Submit to Search Engines

    1. Google Search Console — verify ownership, submit sitemap https://yourdomain.com/sitemap.xml

    2. Bing Webmaster Tools — same

    3. Yandex Webmaster — optional for CIS/Russia audiences

    Verification methods:

  • DNS TXT record
  • HTML file upload
  • Meta tag in (add via a template edit — developer task)
  • The sitemap is generated automatically by Dax Pro. It lists every page and post.

    4. Set Up Analytics (Optional)

    Dax Pro does not include analytics by default. If you want to track visitors:

  • Plausible — privacy-focused, no cookies, paid (~$9/month)
  • Umami — open-source, self-hostable, free
  • Google Analytics — free, but sets cookies and requires a consent banner in the EU
  • For most small sites, analytics is optional. If you add it, place the script in templates/layouts/base.dax (developer task).

    5. Configure Backups

    Your GitHub repository is the backup. Confirm:

  • The repository is up to date (git push any local changes)
  • The branch on GitHub matches what Netlify deploys (main)
  • You have a local clone (~/Projects/dax-pro) that you can restore from
  • Optional: download a ZIP of the repository from GitHub every few months as an extra backup. Or enable GitHub's archive-on-delete feature.


    What You Have Now

    After this chapter, you have:

  • ✅ A custom domain connected to your Dax Pro site
  • ✅ DNS records configured for the apex and www subdomains
  • ✅ HTTPS active via Let's Encrypt, with force HTTPS enabled
  • ✅ Working site at https://yourdomain.com
  • ✅ Working Decap CMS at https://yourdomain.com/admin/
  • ✅ Updated metadata.yaml so canonical URLs and social previews use the custom domain
  • ✅ Formspree domain verification updated
  • ✅ Search engines notified via sitemap submission
  • ✅ Understanding of DNS propagation, certificate provisioning, and common failures
The site is now production-ready at a custom domain. The next chapter covers the Developer Guide — templating, layouts, partials, and the DAX engine internals for developers who want to customize beyond what the theme provides.

→ Continue to Developer Guide