Back to Skills
    🦞

    email-best-practices

    Use when building email features

    By @christina-de-martinez
    View on GitHub
    SKILL.md
    ---
    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, or deciding transactional vs marketing.
    ---
    
    # 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](./resources/deliverability.md) |
    | Build password reset, OTP, confirmations | [Transactional Emails](./resources/transactional-emails.md) |
    | Plan which emails your app needs | [Transactional Email Catalog](./resources/transactional-email-catalog.md) |
    | Build newsletter signup, validate emails | [Email Capture](./resources/email-capture.md) |
    | Send newsletters, promotions | [Marketing Emails](./resources/marketing-emails.md) |
    | Ensure CAN-SPAM/GDPR/CASL compliance | [Compliance](./resources/compliance.md) |
    | Decide transactional vs marketing | [Email Types](./resources/email-types.md) |
    | Handle retries, idempotency, errors | [Sending Reliability](./resources/sending-reliability.md) |
    | Process delivery events, set up webhooks | [Webhooks & Events](./resources/webhooks-events.md) |
    | Manage bounces, complaints, suppression | [List Management](./resources/list-management.md) |
    
    ## Start Here
    
    **New app?**
    Start with the [Catalog](./resources/transactional-email-catalog.md) to plan which emails your app needs (password reset, verification, etc.), then set up [Deliverability](./resources/deliverability.md) (DNS authentication) before sending your first email.
    
    **Spam issues?**
    Check [Deliverability](./resources/deliverability.md) firstβ€”authentication problems are the most common cause. Gmail/Yahoo reject unauthenticated emails.
    
    **Marketing emails?**
    Follow this path: [Email Capture](./resources/email-capture.md) (collect consent) β†’ [Compliance](./resources/compliance.md) (legal requirements) β†’ [Marketing Emails](./resources/marketing-emails.md) (best practices).
    
    **Production-ready sending?**
    Add reliability: [Sending Reliability](./resources/sending-reliability.md) (retry + idempotency) β†’ [Webhooks & Events](./resources/webhooks-events.md) (track delivery) β†’ [List Management](./resources/list-management.md) (handle bounces).