Skill 02 · Email Best Practices
Subchapter 2.3
references/deliverability.mdMarkdown3 KBView on GitHub
Maximizing the chances that your emails are delivered successfully to the recipients.
Required by Gmail/Yahoo/Microsoft - unauthenticated emails will be rejected or spam-filtered.
Specifies which servers can send email for your domain.
v=spf1 include:amazonses.com ~all~all (soft fail)Cryptographic signature proving email authenticity.
Policy for handling SPF/DKIM failures + reporting.
v=DMARC1; p=none; rua=mailto:dmarc@example.comRollout: p=none (monitor) → p=quarantine; pct=25 → p=reject
Check DNS records directly:
# SPF record
dig TXT example.com +short
# DKIM record (replace 'resend' with your selector)
dig TXT resend._domainkey.example.com +short
# DMARC record
dig TXT _dmarc.example.com +shortExpected output: Each command should return your configured record. No output = record missing.
New IP/domain? Gradually increase volume:
| Week | Daily Volume |
|---|---|
| 1 | 50-100 |
| 2 | 200-500 |
| 3 | 1,000-2,000 |
| 4 | 5,000-10,000 |
Start with engaged users. Send consistently. Don’t rush.
Do: Send to engaged users, keep bounce <4%, complaints <0.1%, remove inactive subscribers.
Don’t: Send to purchased lists, ignore bounces/complaints, send inconsistent volumes
| Type | Cause | Action |
|---|---|---|
| Hard bounce | Permanent failure to deliver | Remove immediately |
| Soft bounce | Transient failure to deliver | Retry: 1h → 4h → 24h, remove after 3-5 failures |
Targets: <1% good, 1-3% acceptable, 3-4% concerning, >4% critical
Targets: <0.01% excellent, 0.01-0.05% good, >0.05% critical
Reduce complaints:
Feedback loops: Set up with Gmail (Postmaster Tools), Yahoo, Microsoft SNDS. Remove complainers immediately.
Dedicated sending domain: Use different subdomains for different sending purposes (e.g., t.example.com for transactional emails and m.example.com for marketing emails).
DNS TTL: Low (300s) during setup, high (3600s+) after stable.
Emails going to spam? Check in order:
Diagnostic tools: