Connect a custom domain
DNS records, TLS issuance, and how to verify a custom domain landed cleanly. Pro plan or higher.
Once you're on the Pro plan or higher, you can point any domain you own at a Linkfor site. The flow is one DNS record per domain; certificates and renewals are automatic.
This page covers the two common shapes:
- Subdomain like
docs.acme.com— easiest, one CNAME record. - Apex (also called root or naked) like
acme.com— needs anArecord because DNS doesn't allow CNAMEs at the apex.
1. Add the mount in the dashboard
Open the site's Mounts tab, click Add a mount, and enter the
hostname you want — docs.acme.com or acme.com. Leave the mount
path at / for a top-level site.
When you submit, the mount enters the pending status and the
dashboard shows the DNS record you need to add at your registrar.
We auto-detect changes and flip the row to active once the record
lands and TLS is issued — usually 1-5 minutes after you save it.
pending state with the DNS instructions panel expanded.2a. Subdomain — set a CNAME
Add a single record at your DNS provider:
Type Name Value TTL
CNAME docs cname.linkfor.xyz 300Name is just the subdomain part (docs), not the full hostname.
TTL of 300 seconds (5 minutes) is fine — it's a one-time setup.
If you use Cloudflare, set the record to DNS only (the grey cloud, not the orange one). Proxied records strip the host header we use to route the request, and the mount won't activate.
2b. Apex — set an A record
Apex domains can't have CNAMEs (a long-standing DNS quirk). Use an
A record instead:
Type Name Value TTL
A @ 76.76.21.21 300Name is @ (or blank, depending on your registrar's UI) — that's
the apex itself. The IP 76.76.21.21 is Vercel's anycast edge,
where we issue and serve every Linkfor TLS certificate.
If your registrar supports ALIAS or ANAME records (Cloudflare,
DNSimple, easyDNS), you can use one of those pointing at
cname.linkfor.xyz instead — same effect, just CNAME-flattened by
your provider.
3. Wait for the green check
The dashboard polls DNS every five seconds. When the record
resolves and our edge issues a TLS certificate, the mount status
flips to active. Test by visiting https://<your-domain>.
If it stays pending longer than ten minutes:
- DNS propagation — some providers cache stale records.
dig docs.acme.comornslookup docs.acme.comshould return the value above. - Cloudflare proxy — if the row says
misconfigured, double-check the orange-cloud / grey-cloud setting. - HSTS preload — if the apex is on the HSTS preload list and TLS
isn't issued yet, browsers refuse the connection. Wait the full
ten minutes for our edge to finish issuance, or test from
curl.
TLS and renewals
Certificates are issued via Vercel's edge (Let's Encrypt under the hood) the first time DNS resolves cleanly. They renew automatically; there's nothing to configure or pay for.
If you ever migrate the domain off Linkfor, remove the mount in the dashboard before changing DNS — that releases the certificate slot and the SSL row at our edge.
Troubleshooting
Status stuck on pending — DNS hasn't propagated. Check at
https://www.whatsmydns.net/#A/<domain> (apex) or #CNAME/<domain>
(subdomain) — when most resolvers show our value, refresh.
Status flips to misconfigured — DNS resolved but to the wrong
target. Re-check the record exactly matches the value in the
dashboard. Cloudflare proxy is the usual culprit.
SSL_ERROR_NO_CYPHER_OVERLAP in the browser — the cert hasn't
been issued yet. Wait a minute and reload.
active mount card with the green status pill.