Point your domain with a CNAME or A record
The exact DNS records that point a domain at CodeQR — CNAME for a subdomain, A record for a root domain, plus the TXT ownership check and TTL.

Pointing a domain at CodeQR is one DNS record, plus a second temporary one that proves the domain is yours. This page gives the exact values and what to expect after you save them.
Availability
- Plan: Starter and above, because the domain itself is.
- Where: the records go at your DNS provider — the registrar, Cloudflare, or wherever your zone is hosted. CodeQR shows them on the Domains page.
Before you start
- Add the domain in CodeQR first: Domains → Add Domain. The records shown afterward are specific to that domain.
- Have access to the DNS zone. Adding a record is not the same as owning the domain; in many companies these are different people.
- Decide whether you are pointing a subdomain (
go.acmestore.com) or a root domain (acmestore.com), because the record type differs. A subdomain is the safer choice for almost everyone.
The record for a subdomain
- Type —
CNAME - Name — the part before the first dot —
goforgo.acmestore.com - Value —
cname.codeqr.io - TTL —
86400, or the highest value available
Most providers ask for the name without the rest of the domain. If yours shows a preview like go.acmestore.com.acmestore.com, you typed the full address where only the label belongs.
The record for a root domain
- Type —
A - Name —
@ - Value —
76.76.21.21 - TTL —
86400, or the highest value available
A root domain — also called the apex — cannot use a CNAME. That is a rule of DNS itself, not a CodeQR limitation: the apex already holds records such as NS and MX, and a CNAME cannot coexist with them. This is why CodeQR hands out an A record for the apex.
The consequence is worth pausing on: pointing your root domain here means that everything at that address, including your website, now answers from CodeQR. Use a subdomain unless the domain has no site on it.
The ownership record
While the status is Pending Verification, the card also shows a TXT record:

- Type —
TXT - Name —
_vercel - Value — the
vc-domain-verify=…string shown on the card
Add it exactly as shown, at the root of the domain, and select Copy rather than retyping it. It proves the domain belongs to you, and it can be deleted once the domain is verified.
One warning that the interface intends to give you at this step: if the domain is currently in use by another website on the same infrastructure, adding this TXT record transfers ownership away from that website and breaks it. Check that the domain named inside the TXT value is the one you want on CodeQR, not your production site.
Steps
- Open your DNS provider and go to the zone for your domain.
- Add the
CNAMEorArecord above, depending on whether you are pointing a subdomain or a root domain. - Add the
TXT _vercelrecord shown on the domain card. - Save, then return to CodeQR and select Refresh on the domain.
How long it takes
Between a few minutes and a few hours. What you are waiting for is not the record traveling — it is other resolvers forgetting the answer they cached before, which lasts as long as the previous TTL you had set. If you know in advance that you will change a record, lowering its TTL a day earlier is the only thing that makes the change fast.
CodeQR re-checks on its own and also whenever you select Refresh.
Certificates
You do not request or configure an SSL certificate. Once the domain resolves correctly, the certificate is issued automatically and https:// starts working. If certificate issuance is being blocked, the cause is almost always a CAA record on the domain — see Fix a custom domain that is not working.
Verify it works
Check what the world sees, not what your provider's panel shows:
dig +short go.example.com CNAME
cname.codeqr.io.
For a root domain:
dig +short example.com A
76.76.21.21
And the ownership record:
dig +short _vercel.example.com TXT
Then request the domain over HTTPS. A link on it should answer with a 302 and your destination in location.
Troubleshooting
My provider will not let me create a CNAME at the root
No provider will — it is not allowed by DNS. Some offer ALIAS, ANAME or CNAME flattening as a workaround, but with CodeQR you do not need any of that: use the A record above. Registro.br, which does not offer ALIAS or ANAME, works with the A record.
The record is saved but CodeQR still shows Pending Verification
Give it time, then check with dig from outside your network. If dig returns something other than the values above — Cloudflare IPs, for example — the record is being intercepted before it reaches the internet.
There is already a record with that name
A hostname cannot have a CNAME alongside other records. Delete the existing A, AAAA or CNAME for that exact name, then add the new one. Records for other names in the same domain are untouched.
I do not know where my DNS is hosted
Ask for the domain's nameservers:
dig +short example.com NS
The answer names the provider that will accept the record — which is not always the company you bought the domain from.