---
slug: "email-best-practices"
source_type: "skill_md"
source_url: "https://cdn.jsdelivr.net/gh/resend/email-best-practices@main/SKILL.md"
repo: "https://github.com/resend/email-best-practices"
source_file: "SKILL.md"
branch: "main"
---
---
name: email-best-practices
description: Use when building email features, emails going to spam, high bounce rates, setting up SPF/DKIM/DMARC authentication, implementing email capture, ensuring compliance (CAN-SPAM, GDPR, CASL), handling webhooks, retry logic, making emails accessible (alt text, headings, contrast, screen readers), or deciding transactional vs marketing.
license: MIT
metadata:
  author: Resend
  version: "1.0.2"
  homepage: https://resend.com/agent-skills
  source: https://github.com/resend/email-best-practices
  openclaw:
    links:
      repository: https://github.com/resend/email-best-practices
      documentation: https://resend.com/docs/email-best-practices-skill
---

# Email Best Practices

Guidance for building deliverable, compliant, user-friendly emails.

## Architecture Overview

```
[User] → [Email Form] → [Validation] → [Double Opt-In]
                                              ↓
                                    [Consent Recorded]
                                              ↓
[Suppression Check] ←──────────────[Ready to Send]
        ↓
[Idempotent Send + Retry] ──────→ [Email API]
                                       ↓
                              [Webhook Events]
                                       ↓
              ┌────────┬────────┬─────────────┐
              ↓        ↓        ↓             ↓
         Delivered  Bounced  Complained  Opened/Clicked
                       ↓        ↓
              [Suppression List Updated]
                       ↓
              [List Hygiene Jobs]
```

## Quick Reference

| Need to... | See |
|------------|-----|
| Set up SPF/DKIM/DMARC, fix spam issues | [Deliverability](https://github.com/resend/email-best-practices/blob/HEAD/references/deliverability.md) |
| Build password reset, OTP, confirmations | [Transactional Emails](https://github.com/resend/email-best-practices/blob/HEAD/references/transactional-emails.md) |
| Plan which emails your app needs | [Transactional Email Catalog](https://github.com/resend/email-best-practices/blob/HEAD/references/transactional-email-catalog.md) |
| Build newsletter signup, validate emails | [Email Capture](https://github.com/resend/email-best-practices/blob/HEAD/references/email-capture.md) |
| Send newsletters, promotions | [Marketing Emails](https://github.com/resend/email-best-practices/blob/HEAD/references/marketing-emails.md) |
| Ensure CAN-SPAM/GDPR/CASL compliance | [Compliance](https://github.com/resend/email-best-practices/blob/HEAD/references/compliance.md) |
| Decide transactional vs marketing | [Email Types](https://github.com/resend/email-best-practices/blob/HEAD/references/email-types.md) |
| Handle retries, idempotency, errors | [Sending Reliability](https://github.com/resend/email-best-practices/blob/HEAD/references/sending-reliability.md) |
| Process delivery events, set up webhooks | [Webhooks & Events](https://github.com/resend/email-best-practices/blob/HEAD/references/webhooks-events.md) |
| Manage bounces, complaints, suppression | [List Management](https://github.com/resend/email-best-practices/blob/HEAD/references/list-management.md) |
| Make emails accessible (screen readers, alt text, contrast) | [Accessibility](https://github.com/resend/email-best-practices/blob/HEAD/references/accessibility.md) |

## Start Here

**New app?**
Start with the [Catalog](https://github.com/resend/email-best-practices/blob/HEAD/references/transactional-email-catalog.md) to plan which emails your app needs (password reset, verification, etc.), then set up [Deliverability](https://github.com/resend/email-best-practices/blob/HEAD/references/deliverability.md) (DNS authentication) before sending your first email.

**Spam issues?**
Check [Deliverability](https://github.com/resend/email-best-practices/blob/HEAD/references/deliverability.md) first—authentication problems are the most common cause. Gmail/Yahoo reject unauthenticated emails.

**Marketing emails?**
Follow this path: [Email Capture](https://github.com/resend/email-best-practices/blob/HEAD/references/email-capture.md) (collect consent) → [Compliance](https://github.com/resend/email-best-practices/blob/HEAD/references/compliance.md) (legal requirements) → [Marketing Emails](https://github.com/resend/email-best-practices/blob/HEAD/references/marketing-emails.md) (best practices).

**Production-ready sending?**
Add reliability: [Sending Reliability](https://github.com/resend/email-best-practices/blob/HEAD/references/sending-reliability.md) (retry + idempotency) → [Webhooks & Events](https://github.com/resend/email-best-practices/blob/HEAD/references/webhooks-events.md) (track delivery) → [List Management](https://github.com/resend/email-best-practices/blob/HEAD/references/list-management.md) (handle bounces).

**Accessibility?**
Most emails fail basic accessibility checks. See [Accessibility](https://github.com/resend/email-best-practices/blob/HEAD/references/accessibility.md) for `lang`/`dir`, presentational tables, headings, alt text, `<title>`, and contrast.
