Using a specific provider? We have dedicated guides for Cloudflare, Vercel, Namecheap, Porkbun, and more.
Why Use a Custom Domain?
- Better deliverability: Email providers trust authenticated domains
- Brand consistency: Send from
[email protected]instead of a shared domain - Full control: Manage your sender reputation independently
Prerequisites
- Access to your domain’s DNS settings (usually through your registrar or hosting provider)
- An Ark account with API access
Step 1: Add Your Domain
- Dashboard
- Python
- Node.js
- cURL
- Go to Domains in your Ark dashboard
- Click Add Domain
- Enter your domain name (e.g.,
mail.yourdomain.com) - Copy the DNS records shown
Step 2: Configure DNS Records
Add the following records to your DNS provider. Most providers auto-append your domain name, so use thename field (not fullName).
SPF Record
SPF tells receiving servers which IPs are authorized to send email for your domain.| Field | Value |
|---|---|
| Type | TXT |
| Name | Use the name from the API (e.g., mail for subdomains, @ for root) |
| Value | v=spf1 a mx include:spf.arkhq.io ~all |
| TTL | 3600 (or Auto/Default) |
DKIM Record
DKIM cryptographically signs your emails to prove they came from your domain.| Field | Value |
|---|---|
| Type | TXT |
| Name | Use the name from the API (e.g., ark-abc123._domainkey.mail) |
| Value | The DKIM value from the API response (starts with k=rsa;t=s;p=...) |
| TTL | 3600 (or Auto/Default) |
Return Path (CNAME)
The return path handles bounce messages and improves deliverability.| Field | Value |
|---|---|
| Type | CNAME |
| Name | Use the name from the API (e.g., psrp.mail) |
| Value | rp.arkhq.io |
| TTL | 3600 (or Auto/Default) |
Step 3: Verify Your Domain
After adding DNS records, wait for propagation (usually a few minutes, can take up to 48 hours) and verify:- Dashboard
- Python
- Node.js
- cURL
Go to Domains and click Verify DNS records on your domain.
Success! Once all three records show status
OK, you can send emails from any address at your domain (e.g., [email protected], [email protected]).Optional: DMARC Configuration
DMARC adds another layer of authentication and tells receiving servers how to handle emails that fail authentication. Add this TXT record:| Field | Value |
|---|---|
| Type | TXT |
| Name | _dmarc.mail (or _dmarc for root domain) |
| Value | v=DMARC1; p=none; rua=mailto:[email protected] |
p=none to monitor, then move to p=quarantine or p=reject once you’re confident in your configuration.
Troubleshooting
Verification failing
Verification failing
- Check DNS propagation: Use dnschecker.org to verify records are visible globally
- Check record values: Ensure you copied the exact values from the API response
- Check record names: Use the
namefield, notfullName- most DNS providers auto-append your domain - Wait and retry: DNS can take up to 48 hours to propagate fully
SPF issues
SPF issues
- You can only have one SPF record per domain
- If you have multiple email services, combine them:
v=spf1 include:spf.arkhq.io include:_spf.google.com ~all - SPF has a 10 DNS lookup limit. Use SPF checker tools to verify
Subdomain vs root domain
Subdomain vs root domain
For subdomains like
mail.yourdomain.com:- SPF
name:mail(not@) - DKIM
name:ark-xyz._domainkey.mail - Return Path
name:psrp.mail
yourdomain.com:- SPF
name:@ - DKIM
name:ark-xyz._domainkey - Return Path
name:psrp
