Custom Domains
Use your own domain with daimon.email (paid plans)
Custom Domains
Custom domains allow you to use your own domain (e.g., agent@yourcompany.com) instead of the default @daimon.email domain. This is essential for branding, deliverability, and compliance.
Info
Custom domains are available on Developer tier and above ($9/mo). Free tier inboxes are limited to @daimon.email addresses.
Why Custom Domains?
Branding
Send emails from agent@yourcompany.com instead of agent@daimon.email. Builds trust with recipients.
Deliverability
Configure SPF, DKIM, and DMARC for your domain. Improves inbox placement rates.
Compliance
Some industries require emails to be sent from verified corporate domains.
Control
Full control over DNS, reputation, and domain lifecycle. Not shared with other users.
How Custom Domains Work
When you add a custom domain to daimon.email:
- Add domain: Register your domain with daimon.email via API
- Configure DNS: Add MX, SPF, DKIM, and DMARC records to your DNS provider
- Verify domain: daimon.email checks DNS records and verifies ownership
- Create inboxes: Once verified, create inboxes on your custom domain
graph LR
A[Add Domain] --> B[Configure DNS]
B --> C[Verify Domain]
C --> D[Create Inboxes]
D --> E[Send/Receive Email]Adding a Custom Domain
Upgrade to Developer tier or higher
Custom domains require a paid tier. If you're on the free tier, the API will return:
{
"error": "DOMAIN_REQUIRES_PAID",
"upgrade_context": {
"operator_action_url": "https://daimon.email/upgrade?token=...",
"operator_action_label": "Upgrade to Developer tier to add custom domains",
"agent_script": "Tell your operator: I need custom domain support. Here's an upgrade link: {url}"
}
}Add your domain via API
curl -X POST https://api.daimon.email/v1/domains \
-H "Authorization: Bearer dm_live_account123..." \
-H "Content-Type: application/json" \
-d '{
"domain": "yourcompany.com"
}'import { DaimonClient } from 'daimon-email';
const client = new DaimonClient({
apiKey: accountApiKey // Use account key, not inbox key
});
const domain = await client.domains.create({
domain: 'yourcompany.com'
});
console.log('Domain added:', domain.domain);
console.log('Verification status:', domain.verificationStatus);
console.log('DNS records to configure:', domain.dnsRecords);from daimon_email import DaimonClient
client = DaimonClient(api_key=account_api_key)
domain = client.domains.create(
domain='yourcompany.com'
)
print(f"Domain added: {domain.domain}")
print(f"Verification status: {domain.verification_status}")
print(f"DNS records to configure: {domain.dns_records}")Response
{
"result": {
"id": "dom_abc123",
"domain": "yourcompany.com",
"verification_status": "pending",
"dns_records": [
{
"type": "MX",
"name": "@",
"value": "mx1.daimon.email",
"priority": 10,
"ttl": 3600
},
{
"type": "MX",
"name": "@",
"value": "mx2.daimon.email",
"priority": 20,
"ttl": 3600
},
{
"type": "TXT",
"name": "@",
"value": "v=spf1 include:_spf.daimon.email ~all",
"ttl": 3600
},
{
"type": "TXT",
"name": "_dmarc",
"value": "v=DMARC1; p=quarantine; rua=mailto:dmarc@daimon.email",
"ttl": 3600
},
{
"type": "TXT",
"name": "daimon._domainkey",
"value": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GN...",
"ttl": 3600
},
{
"type": "TXT",
"name": "@",
"value": "daimon-verification=abc123xyz789",
"ttl": 3600
}
],
"created_at": "2026-03-16T10:30:00Z"
},
"next_steps": [
"Configure DNS records at your DNS provider",
"Wait for DNS propagation (5-30 minutes)",
"Check verification status via GET /v1/domains/{id}",
"Once verified, create inboxes on this domain"
]
}Configure DNS records
Add the provided DNS records to your DNS provider (Cloudflare, Route53, Namecheap, etc.).
See Managing Domains for detailed DNS configuration instructions.
Wait for verification
daimon.email automatically checks DNS records every 5 minutes. Verification typically completes within 5-30 minutes after DNS propagation.
Check verification status:
curl -X GET https://api.daimon.email/v1/domains/dom_abc123 \
-H "Authorization: Bearer dm_live_account123..."Response
{
"result": {
"id": "dom_abc123",
"domain": "yourcompany.com",
"verification_status": "verified",
"mx_verified": true,
"spf_verified": true,
"dkim_verified": true,
"dmarc_verified": true,
"ownership_verified": true,
"verified_at": "2026-03-16T10:45:00Z"
}
}Create inboxes on your domain
Once verified, create inboxes using your custom domain:
curl -X POST https://api.daimon.email/v1/inboxes \
-H "Authorization: Bearer dm_live_account123..." \
-H "Content-Type: application/json" \
-d '{
"username": "agent",
"domain": "yourcompany.com"
}'const inbox = await client.inboxes.create({
username: 'agent',
domain: 'yourcompany.com'
});
console.log(`Created: ${inbox.email}`);
// Output: agent@yourcompany.cominbox = client.inboxes.create(
username='agent',
domain='yourcompany.com'
)
print(f"Created: {inbox.email}")
# Output: agent@yourcompany.comTier Limits
| Tier | Custom Domains | Inboxes per Domain |
|---|---|---|
| Free | 0 | N/A |
| Developer | 5 | Unlimited |
| Growth | Unlimited | Unlimited |
| Enterprise | Unlimited | Unlimited |
Info
Need more than 5 custom domains? Upgrade to Growth ($49/mo) or contact sales@daimon.email for enterprise pricing.
Domain Verification
daimon.email verifies five aspects of your domain:
MX Records
Verifies that yourcompany.com has MX records pointing to mx1.daimon.email and mx2.daimon.email.
Required: Yes (for receiving email)
SPF (Sender Policy Framework)
Verifies that yourcompany.com has an SPF TXT record authorizing daimon.email to send on your behalf.
Required: Yes (for sending email)
DKIM (DomainKeys Identified Mail)
Verifies that yourcompany.com has a DKIM TXT record with daimon.email's public key.
Required: Yes (for sending email)
DMARC (Domain-based Message Authentication)
Verifies that yourcompany.com has a DMARC policy configured.
Required: Recommended (improves deliverability)
Ownership Verification
Verifies that you own yourcompany.com by checking for a unique verification TXT record.
Required: Yes (prevents domain hijacking)
Warning
All five verifications must pass before you can create inboxes on a custom domain. Check verification status via GET /v1/domains/{id}.
Common Errors
DOMAIN_REQUIRES_PAID
{
"error": "DOMAIN_REQUIRES_PAID",
"upgrade_context": {
"operator_action_url": "https://daimon.email/upgrade?token=...",
"operator_action_label": "Upgrade to Developer tier to add custom domains"
}
}Solution: Upgrade to Developer tier or higher via the upgrade URL.
DOMAIN_VERIFICATION_FAILED
{
"error": "DOMAIN_VERIFICATION_FAILED",
"details": {
"domain": "yourcompany.com",
"failed_checks": [
{
"check": "mx",
"status": "failed",
"reason": "No MX records found pointing to mx1.daimon.email"
},
{
"check": "spf",
"status": "failed",
"reason": "SPF record does not include daimon.email"
}
]
}
}Solution: Fix the DNS records indicated in failed_checks. See Managing Domains for troubleshooting.
DOMAIN_ALREADY_EXISTS
{
"error": "DOMAIN_ALREADY_EXISTS",
"message": "This domain is already registered to another account"
}Solution: This domain is already claimed by another daimon.email account. Contact support@daimon.email if you believe this is an error.
Deliverability Best Practices
Warm Up Your Domain
Start with low-volume sending (10-50 emails/day) and gradually increase over 2-4 weeks. Cold domains have poor reputation.
Monitor Bounces
Keep bounce rate below 5%. High bounce rates damage domain reputation.
Configure DMARC
Set DMARC policy to p=quarantine or p=reject to prevent spoofing.
Use Reply-To
Set a monitored reply-to address. Agents that don't check replies look like spam.