If your outbound emails are landing straight in spam or getting bounced with cryptic 550 errors from Gmail and Yahoo, your DNS authentication is almost certainly broken. Mailbox providers have clamped down hard—if you’re missing SPF, DKIM, or DMARC, your domain reputation tanks fast.
Here’s how I set up and verify all three TXT records directly inside Namecheap’s Advanced DNS manager without tripping over character limits or syntax errors.

Why Email Providers Reject Unauthenticated Namecheap Domains
Google and Yahoo enforce strict sender rules on custom domains. Whether you’re firing off transactional receipts, onboarding drips, or plain old support emails, receiving mail servers treat unauthenticated traffic like phishing until proven otherwise.
You need three records working in tandem:
- SPF (Sender Policy Framework): A TXT record listing the specific servers and IPs allowed to send mail on your domain’s behalf.
- DKIM (DomainKeys Identified Mail): A public key published in DNS that matches a cryptographic signature attached to every outbound email header.
- DMARC (Domain-based Message Authentication, Reporting, and Conformance): A policy record telling receiving servers what to do (monitor, quarantine, or drop) when SPF or DKIM checks fail.
If you recently migrated hosts, check our guide on pointing Namecheap DNS to Hostinger without breaking email to verify your MX records point to the right place before tackling authentication.
Step 1: Clean Up and Add Your SPF Record in Namecheap
The single most common SPF mistake I see is creating multiple SPF records. Under RFC 7208 (SPF Specification), your domain must have exactly one SPF record. If you publish two v=spf1 records, receiving mail servers throw a PermError and reject your email automatically.
Head into your Namecheap dashboard, navigate to Domain List, hit Manage next to your domain, and open the Advanced DNS tab. Scan through your records first and delete any stale TXT records starting with v=spf1.
Here’s what a basic Google Workspace SPF record looks like in Namecheap:
Type: TXT Record
Host: @
Value: v=spf1 include:_spf.google.com ~all
TTL: AutomaticIf you route mail through multiple providers—say Google Workspace for team inboxes and SendGrid or AWS SES for app notifications—merge them into a single record using multiple include: tags:
Type: TXT Record
Host: @
Value: v=spf1 include:_spf.google.com include:sendgrid.net ~all
TTL: AutomaticKeep your total DNS lookups under 10. Every include: mechanism triggers a lookup behind the scenes; cross the 10-lookup threshold, and receivers will fail the check with an SPF PermError.
Step 2: Generate and Add Your DKIM Record
DKIM relies on an asymmetric key pair. Your email provider generates the private/public keys—Namecheap just hosts the public key in a DNS record so receiving servers can look it up.
Your provider gives you two pieces of data: a Selector and the Public Key Value.
- Log in to your email provider’s admin console and generate a 2048-bit DKIM key (use 1024-bit only if your provider doesn’t support 2048-bit).
- Note down the selector (e.g.,
google,k1, ors1). - In Namecheap Advanced DNS, click Add New Record.
- Choose TXT Record (or CNAME Record if your provider uses CNAME-based DKIM like SendGrid or SES).
If you’re using Google Workspace with selector google, plug it into Namecheap like this:
Type: TXT Record
Host: google._domainkey
Value: v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0...
TTL: AutomaticIf you’re hooking up automated or transactional marketing platforms, check out our walkthrough on how to set up a dedicated email sending domain for specific selector setups.
How I Handled Namecheap’s 255-Character DKIM TXT Limit
A standard 2048-bit DKIM key runs around 400 characters. DNS protocol limits any single TXT string chunk to 255 characters.
The first time I pasted a raw 2048-bit key into Namecheap’s UI, the form saved without warning, but incoming mail checks kept failing DKIM. Namecheap had concatenated the string incorrectly behind the scenes.
Two reliable ways around this in Namecheap:
- If your email provider supports CNAME delegation (pointing
s1._domainkey.example.comto their managed host), use a CNAME Record instead. CNAMEs bypass the 255-character TXT string limit entirely. - If you have to use a TXT record, split the long public key string into two double-quoted segments inside Namecheap’s Value field, separated by a single space:
Host: google._domainkey
Value: "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy1...FIRST_HALF" "SECOND_HALF_STRING_HERE...IDAQAB"After saving, query Namecheap’s nameservers directly with dig to make sure the chunks resolve together into one continuous public key.
Step 3: Publish a Safe DMARC Policy
DMARC tells incoming mail servers what to do when a message fails SPF or DKIM. Never start with a strict reject policy on day one, or you’ll accidentally drop legitimate transactional messages from third-party tools you forgot were sending on your behalf.
Start with a passive monitoring policy (p=none) so you can collect aggregate reports and spot alignment gaps:
Type: TXT Record
Host: _dmarc
Value: v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com; sp=none; aspf=r; adkim=r
TTL: AutomaticIn Namecheap Advanced DNS:
- Host: Enter
_dmarc(do not add your domain name; Namecheap appends it automatically). - Value: Paste your DMARC string, updating
dmarc-reports@example.comto your dedicated reporting mailbox or a DMARC parser address. - TTL: Set to Automatic or 30 minutes (1800s).
Once you’ve spent a week or two monitoring reports with zero legitimate failures, ramp up to p=quarantine (routes failing mail to spam), and ultimately to p=reject (blocks spoofed senders completely).
Host: _dmarc
Value: v=DMARC1; p=reject; pct=100; rua=mailto:dmarc-reports@example.comFor more troubleshooting tips on multi-service DNS validation, check out our guide to configure and verify DNS records for GoHighLevel email.
Verify Your DNS Records via Terminal and Web Tools
Don’t just trust a third-party dashboard when it says your DNS is good. Check your live records directly from your local terminal with dig.
Here are the exact queries I run after updating records in Namecheap:
# Check SPF Record
dig TXT example.com +short # Check DKIM Record (replace 'google' with your selector)
dig TXT google._domainkey.example.com +short # Check DMARC Record
dig TXT _dmarc.example.com +shortWhat you want to see back in terminal:
"v=spf1 include:_spf.google.com ~all"
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBC..."
"v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com;"For a complete browser-based health check, plug your domain into the dmarcian DMARC Inspector to confirm syntax alignment against the Google Email Sender Guidelines.
Common Gotchas in Namecheap DNS
If your DNS records aren’t resolving after 30 minutes, you likely hit one of these Namecheap-specific quirks:
- Entering the full domain in the Host field: Typing
_dmarc.example.cominto Namecheap’s Host box creates a record at_dmarc.example.com.example.com. In Namecheap, only enter_dmarcorselector._domainkey. Use@for root domain records like SPF. - Duplicate SPF records: If your web hosting default auto-generated an SPF record and you pasted in another one for Google Workspace, delete the default and combine the
include:statements. - Trailing semicolons in SPF: Semicolons belong in DKIM and DMARC, never SPF. Putting a semicolon at the end of
v=spf1 ... ~all;breaks SPF parsing on strict mail receivers. - Custom Nameservers vs Namecheap BasicDNS: If your domain uses external nameservers (like Cloudflare, DigitalOcean, or Hostinger), editing Namecheap’s Advanced DNS tab does nothing. You have to update records at your active DNS host.
Frequently Asked Questions
How long does Namecheap DNS take to propagate TXT records?
Namecheap DNS changes generally propagate within 5 to 30 minutes when TTL is set to Automatic or 1 minute. However, local recursive resolver caches and earlier TTL limits can keep old records around for up to 24 hours.
Can I have multiple DKIM records on one domain?
Yes. Unlike SPF, you can have as many DKIM records as you need. Each email platform uses a unique selector (like google._domainkey or s1._domainkey), so they operate in completely separate DNS namespaces.
Should I use ~all or -all in my SPF record?
Start with ~all (SoftFail) while getting everything configured. Once you’re certain all sending IPs and SaaS integrations are accounted for and DKIM passes consistently, switch over to -all (HardFail) for strict enforcement.
Why does my DMARC test say alignment failed?
DMARC alignment requires the domain in your visible “From:” header to match the domain authenticated via SPF (Return-Path) or DKIM (the d= signature tag). If your email says it’s from user@example.com but your DKIM signature is signed for sendgrid.net, alignment fails.
Next Steps
Once your terminal tests return valid records, send a test email to a personal Gmail account. Click the three vertical dots in the top-right corner of the email and select Show Original. Make sure SPF, DKIM, and DMARC all show green PASS statuses.
If you’re triggering automated outbound emails via webhooks, check out our guide on sending outbound webhooks with custom headers to keep your backend pipelines organized.

