Namecheap trips people up in two specific ways: the Advanced DNS tab only controls your records when the domain is using Namecheap's own nameservers, and every row you add has to be individually committed with a small checkmark button before it exists. Get past those two and TXT records are straightforward.
Where is the Advanced DNS tab?
Sign in, open Domain List from the left sidebar, and click Manage next to the domain. The tabs across the top include Domain, Products, Sharing & Transfer, and Advanced DNS. The Advanced DNS tab holds the Host Records table — that is the zone. Use Add New Record and pick TXT Record from the type dropdown.
This bites hardest on domains registered at Namecheap but hosted elsewhere: the customer edits Namecheap, the record never appears, and everyone blames propagation. It is not propagation. A record added to a zone nobody is querying will never propagate, no matter how long you wait.
What goes in the Host field?
The Host field takes a label relative to your domain. Namecheap appends the domain for you and displays the result as label.example.com beside the row. Type the label only — never the fully-qualified name.
| Record needed at | Host field value | What it is for |
|---|---|---|
example.com | @ | SPF, Google Workspace or Microsoft 365 domain verification |
_dmarc.example.com | _dmarc | DMARC policy |
google._domainkey.example.com | google._domainkey | DKIM key for Google Workspace |
_acme-challenge.example.com | _acme-challenge | DNS-01 certificate validation |
*.example.com | * | Wildcard TXT (rarely what you want) |
Type _dmarc.example.com into Host and Namecheap stores a record at _dmarc.example.com.example.com. Nothing warns you. The row will display the doubled name, so read it after saving — that one glance catches the mistake before you spend twenty minutes wondering why the DMARC checker says "record not found".
Does the value need quotes?
No. Paste the raw string into the Value field. Quotation marks belong to zone-file presentation format, not to the value itself — dig prints them, dashboards do not want them. If you paste quotes, they become literal characters inside the record and every parser that reads it fails.
# Host: @ Value:
v=spf1 include:spf.efwd.registrar-servers.com include:_spf.google.com ~all
# Host: _dmarc Value:
v=DMARC1; p=none; rua=mailto:[email protected]; adkim=r; aspf=r
# Do NOT paste this — the quotes end up inside the record
"v=DMARC1; p=none; rua=mailto:[email protected]"Two Namecheap-specific value notes. First, semicolons are safe — DMARC records are mostly semicolons and need no escaping. Second, if you have Namecheap Email Forwarding switched on, Namecheap adds its own MX records and expects include:spf.efwd.registrar-servers.com in your SPF; if you replace the SPF wholesale with a provider's value you can break forwarded mail. Build the merged record with the SPF Record Generator rather than overwriting.
Why did my record disappear when I navigated away?
Because you did not commit the row. Namecheap edits rows inline: after you fill in Type, Host, Value, and TTL, a small green checkmark appears at the right of the row. Clicking it is what saves. Navigating away, pressing Enter in the wrong field, or clicking elsewhere on the page can drop the uncommitted row silently. Some Namecheap layouts also show a Save All Changes button above the table — if it is there, click it too.
The reliable test is a page refresh. Reload the Advanced DNS tab; if the record is still in Host Records after the reload, it is stored server-side. If it vanished, it was never committed.
What TTL should you pick?
The TTL dropdown offers Automatic plus a set of fixed intervals. Automatic is fine for records you are not about to change. If you are iterating — testing an SPF change, rotating a DKIM key, tightening a DMARC policy — pick the shortest interval the dropdown offers so resolvers stop caching the old answer quickly. Set it short *before* the change matters, not after: lowering a TTL only takes effect once the previously-cached record with the old, longer TTL expires. That timing is covered in Lower Your TTL Before a DNS Migration.
How long does a Namecheap TXT record take to appear?
Namecheap's own documentation describes a short lag between committing a record and their nameservers serving it — typically minutes, occasionally up to about half an hour on the free BasicDNS tier. That is a genuinely different thing from resolver caching, and it is why a dig against Google's resolver can lag your own dashboard. Query Namecheap's nameservers directly to see the authoritative truth immediately.
# Find the authoritative nameservers for the domain
dig +short NS example.com
# Ask one of them directly — no caching involved
dig @dns1.registrar-servers.com +short TXT _dmarc.example.com
# What public resolvers are currently handing out
dig +short TXT _dmarc.example.com
host -t TXT _dmarc.example.comIf the authoritative answer is correct and the public resolver is not, you are waiting on cache and there is nothing to fix. If the authoritative answer is empty, the record is not committed, is at the wrong host, or the domain is not on Namecheap's nameservers at all. Check the global picture with the DNS Propagation Checker, which queries resolvers in many networks at once.
Common Namecheap mistakes
- Custom DNS is set. The Advanced DNS tab does nothing when the domain points at third-party nameservers. This is the number one cause of "I added it and it did not work".
- The row was never committed. No green checkmark, no record. Refresh the page to confirm.
- A doubled host name.
_dmarc.example.comin the Host field becomes_dmarc.example.com.example.com. Read the row after saving. - Two SPF records at `@`. Only one TXT record beginning
v=spf1may exist per name. A second one is a permanent error at receivers and SPF fails entirely — validate with the SPF Checker. - A leftover parking or redirect record. Namecheap adds
URL Redirect Recordor CNAME entries for parked domains. They do not conflict with TXT records directly, but a leftover redirect on@explains a lot of unrelated confusion. - Trailing whitespace on paste. Copying a verification token out of a provider's UI often picks up a trailing space or newline. Paste into a plain text editor first if a token keeps failing.
Once the record is live, validate its meaning rather than just its presence: the DMARC Checker for _dmarc, the DKIM Checker for a _domainkey selector, or the Email Deliverability Test for everything at once. Doing the same job on another provider? See Add a TXT Record on Cloudflare and Add a TXT Record on GoDaddy, or the TXT record reference for the format itself.