daimon.email
Domains

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:

  1. Add domain: Register your domain with daimon.email via API
  2. Configure DNS: Add MX, SPF, DKIM, and DMARC records to your DNS provider
  3. Verify domain: daimon.email checks DNS records and verifies ownership
  4. 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.com
inbox = client.inboxes.create(
    username='agent',
    domain='yourcompany.com'
)

print(f"Created: {inbox.email}")
# Output: agent@yourcompany.com

Tier Limits

TierCustom DomainsInboxes per Domain
Free0N/A
Developer5Unlimited
GrowthUnlimitedUnlimited
EnterpriseUnlimitedUnlimited

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.

Next Steps