Kwisple
Browse the docs

Your site repository › Going live

Domains and DNS

Add a client's domain to a website, choose where the site runs so the dashboard shows the right records, verify them with "Controleer records", pick the primary domain and handle www and Cloudflare's proxy.

A website first lives on a temporary platform address. To put it on the client's own domain you add the domain in the dashboard, set the records it shows at the client's DNS provider, and let the dashboard check them. The records depend on where the site runs, so you tell the dashboard that first.

Who can do this: the agency team (site.settings). Clients never see these settings.

Where the site runsRecords the dashboard asks for
On the platform's own server (custom code)TXT for verification + A/AAAA to the server's addresses
At a host of its own (Cloudflare Pages, Vercel, Netlify)TXT + CNAME to the host's address
Connected to Cloudflare under Hosting & deploysTXT + CNAME to the Pages address (decided for you)
A hosted block site (legacy)TXT + CNAME to the platform address
Not chosen yetTXT only

Where the site runs

  1. Open the website and go to Instellingen → Algemeen → Domein (domain). The screen starts with Je website staat nu op … (your website is now at …) and the temporary address.
  2. For a custom-code site, choose under Waar draait de website? (where does the website run?):
    • Op de server van het platform (on the platform's server): the site runs as a container on the platform's server (Hosting and deploys). This option only exists when the platform has its server addresses configured (SITE_SERVER_ADDRESSES, a comma-separated list of IPv4 and IPv6 addresses).
    • Bij een eigen host (at a host of its own): fill in Adres van de host (the host's address), "Het adres dat de host je geeft, bijvoorbeeld klant.pages.dev of klant.vercel.app." A full URL is fine; only the hostname is kept.
  3. Click Opslaan. "Opgeslagen. De records hieronder zijn bijgewerkt."

When the repository is connected to Cloudflare under Hosting & deploys, the choice is made for you (a CNAME to the Pages project's address) and the question is hidden. Until a choice is made, each domain shows "Kies eerst hierboven waar de website draait. Tot dan is alleen de controle-record bekend."

Adding a domain

  1. Under Domeinnaam (domain name) type the host, for example www.klant.be. Uppercase, https:// and a path are stripped.
  2. Click Domein toevoegen (add domain). "Domein toegevoegd."

Each hostname is its own domain: klant.be and www.klant.be are two entries, each with its own records. The first domain of a site becomes its primary domain. A hostname that another site already uses is refused ("Dit domein is al in gebruik.").

When the site is connected to Cloudflare, the platform attaches every domain you add to the Pages project as well (and removes it there when you delete it here). A failure there is shown as a warning; the domain itself is saved.

The records

Under every domain that is not connected yet, the dashboard lists the records, each value with a Code kopiëren (copy) button:

TypeNameValue
TXT_site-verify.<domain>site-verify=<code> (unique per domain)
A<domain>Each IPv4 address of the platform's server
AAAA<domain>Each IPv6 address of the platform's server
CNAME<domain>The host's address

You get either the A/AAAA rows or the CNAME row, never both. The TXT record proves the domain belongs to the client; it is always required. A bare domain (klant.be) cannot carry a CNAME at most providers: use the provider's CNAME flattening or ALIAS record, which the check accepts (below).

The help line under the records reads: "Zet deze records bij de beheerder van de domeinnaam (DNS). Op Cloudflare: proxy uit (grijze wolk, "DNS only"), anders komt het certificaat niet door."

Example: a site on the platform's server

For klant.be and www.klant.be on the platform's server, the client's zone ends up with these entries (the code and the addresses are the ones the dashboard shows; the values here are placeholders):

_site-verify.klant.be.      TXT    "site-verify=3f9c…"
_site-verify.www.klant.be.  TXT    "site-verify=a71e…"
klant.be.                   A      203.0.113.10
klant.be.                   AAAA   2001:db8::10
www.klant.be.               A      203.0.113.10
www.klant.be.               AAAA   2001:db8::10

Example: a site at its own host

For www.klant.be at a host that gave you klant.pages.dev:

_site-verify.www.klant.be.  TXT    "site-verify=a71e…"
www.klant.be.               CNAME  klant.pages.dev.

Remove any other A, AAAA or CNAME record for the same name at the same time: a name with a CNAME cannot have other records, and leftover addresses make the check report "still pointing elsewhere".

Controleer records

Click Controleer records (check records). The dashboard looks every record up from its own server and reports one outcome:

OutcomeMessageWhat to do
Connected"… is gekoppeld." with the domain. The badge turns from Wacht op instellingen (waiting for settings) to Gekoppeld (connected).Nothing.
Missing"Nog niet gevonden: …. Een DNS-wijziging kan tot een uur duren." with the missing records.Check the record at the DNS provider, wait, check again.
Still pointing elsewhere"… wijst nog (ook) naar een ander adres. Verwijder dat oude record bij je domeinbeheerder." with the records concerned.Remove the old A/AAAA record (often the previous host's or a parking page's).
Could not look up"We konden … nu niet opvragen. Probeer het zo opnieuw." with the records concerned.Try again in a moment.

How it decides:

  • TXT is the gate. The verification value must be among the TXT answers for _site-verify.<domain>.
  • A and AAAA must contain the expected address, and no other address: a stray old address next to the right one counts as "still pointing elsewhere", because some visitors would land on the old server. IPv6 addresses are compared in canonical form.
  • CNAME counts when the domain's CNAME is the host's address, or, for a bare domain with a flattened record, when the domain's IPv4 addresses overlap the host's.
  • A lookup that fails never unverifies. "No such record" is an answer; a timeout or server failure is not. When a lookup fails the dashboard keeps the domain's current state, so a DNS hiccup can never take a working domain offline. Each lookup waits 2.5 seconds and is tried twice.
  • A second click within ten seconds gets the same answer instead of new lookups.

When the state changes, the platform empties the site's caches, so canonical links and the noindex on the platform address follow at once. Once a domain is connected, its records and the check button are no longer shown.

The primary domain

A site with several domains has one Hoofdadres (primary address). Click Maak hoofdadres (make primary) on another domain to change it. Verwijderen (delete) removes a domain; the site is then no longer reachable there ("… is losgekoppeld.").

What "primary" does depends on the site:

  • Hosted block sites: the verified primary domain becomes the canonical address. The platform address and other domains are served with noindex and a canonical link to it, so search engines index one host.
  • Custom-code sites: your code takes its canonical, sitemap and Open Graph addresses from the Site-URL (Instellingen → Ontwikkeling, card Site), not from the domain list. Set the Site-URL to the primary domain (https://klant.be) yourself, and before a production build that prerenders pages (SEO, performance and security headers).

www and the bare domain

Pick one spelling as the real address and redirect the other to it, path included, with a permanent redirect. The platform does not do this for a custom-code site; where it happens depends on the hosting:

  • On the platform's own server: Caddy has an alias block per site that redirects the other spelling to the main address (redir https://<main host>{uri} permanent). Set both hostnames' DNS to the server and add both as domains so both get verified.
  • At your own host or on Cloudflare Pages: add both hostnames there and configure the redirect in the host's domain settings.

Also add the second spelling as a domain in the dashboard so its records are checked.

Cloudflare DNS: grey cloud

When the client's DNS zone is on Cloudflare, set the site's records to DNS only (grey cloud), not proxied (orange cloud):

  • the server (Caddy) or the host requests the TLS certificate for the domain itself, and the proxy gets in the way;
  • the check compares the addresses the domain resolves to; behind the proxy those are Cloudflare's, so the domain reads as "still pointing elsewhere";
  • the proxy caches HTML, and the publish webhook cannot purge Cloudflare, so published content would not show within seconds.

This is about the DNS records only; a Cloudflare Pages project behind a CNAME works as Cloudflare describes.

Moving a site to another host

The records follow Waar draait de website?. When a site moves (from your own host to the platform's server, or to another host):

  1. Get the site running at the new place first.
  2. Change Waar draait de website? (or connect or disconnect Cloudflare under Hosting & deploys). The records shown for domains that are not connected yet update at once.
  3. Change the A/AAAA or CNAME records at the DNS provider. The TXT record stays.
  4. A domain that was already Gekoppeld shows no records and no check button any more; keep it, or delete and re-add it if you want the dashboard to check the new records.

Troubleshooting

SymptomCause and fix
Only a TXT record is listedWaar draait de website? is not chosen yet (or the site is an external site, which the platform never serves).
Op de server van het platform is missingThe platform has no SITE_SERVER_ADDRESSES; the operator sets it.
"Still pointing elsewhere" right after switchingThe old record is still there next to the new one, or the zone is proxied (orange cloud).
"Could not look up" keeps coming backThe domain's name servers do not answer the platform's lookups in time. Check the zone's delegation; the domain's state stays as it was meanwhile.
Connected, but the browser shows a certificate errorThe certificate is requested once DNS points at the server or host; with a proxy in front it cannot be. Switch to DNS only and wait a few minutes.
Search results still show the temporary addressSet the Site-URL to the domain (custom code) or make the domain Hoofdadres (hosted), and make sure the site is set online (Online zetten).

Checklist before switching DNS

  1. The site runs at its final host and answers on the temporary address (or on the server with curl --resolve).
  2. Site-URL, Webhook bij publiceren and Preview-URL point at the final domain.
  3. Waar draait de website? is set; every hostname is added.
  4. The TXT record is in place for each hostname (it can go in days ahead).
  5. Switch the A/AAAA or CNAME records, DNS only.
  6. Click Controleer records until every domain is Gekoppeld; remove stray old records when asked.
  7. Set the site Online zetten (set online): robots.txt and the sitemap open up.

Staging addresses follow the same rules; the staging screen shows its own records (Staging).

Last updated 2026-10-30