210 lines
5.3 KiB
Plaintext
210 lines
5.3 KiB
Plaintext
---
|
|
title: Custom Domains
|
|
description: Send emails from your own domain
|
|
---
|
|
|
|
## Why use custom domains
|
|
|
|
Sending from your own domain (e.g., `[email protected]`) 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": "[email protected]",
|
|
"from": "[email protected]",
|
|
"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": "[email protected]",
|
|
"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": "[email protected]",
|
|
"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 `[email protected]`, 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
|