---
title: Custom Domains
description: Send emails from your own domain
---

## Why use custom domains

Sending from your own domain (e.g., `hello@yourdomain.com`) instead of a shared domain:

- **Better deliverability** — Email providers trust emails from verified domains
- **Brand consistency** — Recipients see your brand, not Plunk
- **Higher trust** — Your domain builds its own sender reputation
- **Professional appearance** — Custom addresses look more legitimate

## Requirements

- **Domain ownership** — You own or control the domain
- **DNS access** — Ability to add DNS records
- **Verification** — Add DKIM records to prove ownership

## Adding a domain

1. Go to **Settings > Domains**
2. Click **Add Domain**
3. Enter your domain (e.g., `yourdomain.com`)
4. Copy the provided DNS records

## DNS configuration

After adding your domain, you'll receive 3 DKIM tokens. Add them as CNAME records to your DNS.

### Common DNS providers

#### Cloudflare

1. Log into Cloudflare
2. Select your domain
3. Go to **DNS > Records**
4. Click **Add record**
5. Select **CNAME** type
6. Paste name and value from Plunk
7. Click **Save**
8. Repeat for all 3 records

#### Namecheap

1. Log into Namecheap
2. Go to **Domain List**
3. Click **Manage** next to your domain
4. Select **Advanced DNS**
5. Click **Add New Record**
6. Choose **CNAME Record**
7. Enter host and value
8. Repeat for all 3 records

#### GoDaddy

1. Log into GoDaddy
2. Go to **My Products**
3. Click **DNS** next to your domain
4. Click **Add** under Records
5. Select **CNAME** type
6. Enter name and value
7. Repeat for all 3 records

#### Route 53 (AWS)

1. Open Route 53 console
2. Select your hosted zone
3. Click **Create record**
4. Enter record name
5. Select **CNAME** type
6. Paste value
7. Create record
8. Repeat for all 3 records

## Verification

### Automatic verification

Plunk checks DNS records every 5 minutes automatically. Verification typically completes within 10-30 minutes after adding DNS records.

**Note:** DNS propagation can take up to 48 hours, though it's usually much faster.

Check verification status in your dashboard at **Settings > Domains**.

## Using your domain

Once verified, specify your domain in the `from` field:

### In transactional emails

```bash
curl -X POST {{API_URL}}/v1/send \
  -H "Authorization: Bearer sk_your_secret_key" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "customer@example.com",
    "from": "orders@yourdomain.com",
    "fromName": "Your Company",
    "subject": "Order confirmed",
    "body": "<p>Your order has been confirmed.</p>"
  }'
```

### In templates

Set default from address in template:

```bash
curl -X POST {{API_URL}}/templates \
  -H "Authorization: Bearer sk_your_secret_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Order Confirmation",
    "subject": "Order #{{orderNumber}} confirmed",
    "body": "...",
    "from": "orders@yourdomain.com",
    "fromName": "Your Company",
    "type": "TRANSACTIONAL"
  }'
```

### In campaigns

Campaigns use the template's from address, or you can override:

```bash
curl -X POST {{API_URL}}/campaigns \
  -H "Authorization: Bearer sk_your_secret_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Newsletter",
    "templateId": "template_id",
    "from": "newsletter@yourdomain.com",
    "audienceType": "ALL"
  }'
```

## Managing domains

### Remove domain

Go to **Settings > Domains**, select the domain, and click **Remove**.

**Warning:** Emails using this domain will fail to send after removal.

## Troubleshooting

### Domain won't verify

**1. Check DNS records are correct**

Verify records are added exactly as provided

**2. Wait for propagation**

DNS changes can take up to 48 hours to propagate globally. Check periodically.

**3. Remove conflicting records**

If you previously used another email service, remove their DKIM records to avoid conflicts.

**4. Check for typos**

Ensure record names and values match exactly. Common issues:
- Extra spaces in values
- Missing dots in record names
- Wrong subdomain

### Emails not sending from domain

**1. Verify domain is verified** - Check status in **Settings > Domains**.

**2. Use correct email format**

Must be `username@yourdomain.com`, not `@subdomain.yourdomain.com`.

**3. Check sender reputation**

New domains have no reputation. Start with small volumes and gradually increase.

### Emails going to spam

After adding custom domain:

**1. Warm up your domain** — See [Scaling Email](/guides/scaling-email)

**2. Monitor deliverability** — Check [Analytics](/guides/analytics) for bounce/complaint rates

**3. Clean your list** — Remove bounced addresses immediately

## Best practices

**Start small** — Send to engaged users first to build reputation.

**Monitor metrics** — Watch bounce and complaint rates closely.

**Use subdomains** — Consider `mail.yourdomain.com` for email to separate from main domain reputation.

**Keep DNS records** — Don't remove DKIM records even if verification is complete.

**Test thoroughly** — Send test emails to various providers (Gmail, Outlook, Yahoo).

## Next Steps

- [Scale email delivery](/guides/scaling-email) with your custom domain
- [Monitor analytics](/guides/analytics) for domain performance
- [Troubleshoot issues](/guides/troubleshooting) if problems arise
