Wraps Logo
Infrastructure / Email

What Gets Deployed: Email

Every AWS resource Wraps creates when you run wraps email init, organized by configuration preset.

Architecture Overview

Wraps deploys a serverless event processing pipeline to your AWS account. The architecture scales automatically and you only pay for what you use.

architecture.txt
# Email Event Processing Pipeline## SES --> EventBridge --> SQS + DLQ --> Lambda --> DynamoDB## 1. SES sends email and emits event notifications# 2. EventBridge captures configured event types# 3. SQS buffers events with dead-letter queue for failures# 4. Lambda processes events and writes to DynamoDB# 5. DynamoDB stores email history with configurable TTL

Core Resources (All Presets)

These resources are created regardless of which preset you choose. They form the foundation of your email infrastructure.

IAM Rolewraps-email-role
  • OIDC trust policy for Vercel (or IAM trust for AWS-native providers)
  • Base SES permissions: ses:SendEmail, ses:SendRawEmail, ses:SendTemplatedEmail, ses:SendBulkTemplatedEmail
  • Metrics access: ses:GetSendStatistics, ses:GetAccount
  • CloudWatch read access for monitoring
  • Unique external ID generated per deployment for security
SES Configuration Setwraps-email-tracking
  • Engagement tracking (open and click tracking)
  • Suppression list for bounces and complaints
  • Event destinations configured based on preset (EventBridge for Production+)
SES Email Identity
  • Domain identity with DKIM signing (RSA 2048-bit)
  • 3 CNAME records generated for DKIM verification
  • Auto-verification when DNS records are configured
  • SPF and DMARC record guidance provided after deployment

Starter Preset~$0.05/mo

The Starter preset deploys only the core resources listed above. It provides the essentials for sending emails with basic tracking.

Included Features
  • Open and click tracking via SES configuration set
  • Automatic bounce and complaint suppression
  • Domain verification with DKIM
  • Send statistics and account metrics

Best for

MVPs, side projects, and low-volume senders who need reliable email delivery without event history or real-time analytics.

Production Preset~$2-5/mo

The Production preset includes everything in Starter plus a full event processing pipeline for real-time tracking and email history.

EventBridge Rule
  • Captures 6 SES event types: SEND, DELIVERY, OPEN, CLICK, BOUNCE, COMPLAINT
  • Routes events to SQS for buffered processing
  • Managed rule with automatic scaling
SQS Queue + Dead Letter Queue

Main Queue: wraps-email-events

  • Buffers events between EventBridge and Lambda
  • 3 retry attempts before sending to DLQ

Dead Letter Queue: wraps-email-events-dlq

  • Captures failed messages for inspection
  • 14-day message retention
Lambda Functionwraps-email-processor
  • Runtime: Node.js 20
  • Memory: 128 MB
  • Timeout: 30 seconds
  • Triggered by SQS, writes processed events to DynamoDB
  • Bundled with esbuild during deployment
DynamoDB Tablewraps-email-history
  • Partition key: messageId
  • Sort key: timestamp
  • TTL: 90-day automatic expiration
  • Billing: On-demand (pay per request)
  • Stores delivery status, opens, clicks, bounces, and complaints

Recommended for most applications

The Production preset gives you full visibility into email delivery with real-time event tracking, a 90-day email history, and reputation metrics through the dashboard.

Enterprise Preset~$50-100/mo

The Enterprise preset includes everything in Production plus dedicated IP, extended history retention, and full event type coverage.

Dedicated IP Address
  • SES dedicated IP pool assigned to your account
  • Full control over sender reputation
  • Requires IP warming: ramp up sending volume gradually over 2-4 weeks
  • ~$24.95/mo per dedicated IP (billed by AWS)
Extended History
  • 365-day TTL on DynamoDB (vs 90 days in Production)
  • Full year of email delivery history
  • Useful for compliance and audit requirements
All 10 SES Event Types

Production tracks 6 event types. Enterprise adds 4 more:

SEND
DELIVERY
OPEN
CLICK
BOUNCE
COMPLAINT
REJECT
RENDERING_FAILURE
DELIVERY_DELAY
SUBSCRIPTION

Cost Breakdown

Estimated monthly costs by email volume. All costs are billed directly by AWS to your account.

VolumeStarterProductionEnterprise
1K/mo~$0.15~$2.15~$52
10K/mo~$1.05~$3.05~$53
100K/mo~$10.05~$14~$64
1M/mo~$100~$110~$175

AWS SES pricing

SES charges $0.10 per 1,000 emails sent. Infrastructure costs (DynamoDB, Lambda, SQS) are additional but minimal at most volumes. Enterprise costs include ~$24.95/mo for a dedicated IP address.

Resource Tags

All resources created by Wraps are tagged for easy identification and cost tracking in the AWS Console.

Tag KeyTag ValueDescription
ManagedBywraps-cliIdentifies resources managed by Wraps

You can filter resources in the AWS Console by this tag to see everything Wraps has deployed. This makes it easy to audit, track costs, and manage your infrastructure.

IAM Policy Details

Wraps follows the principle of least privilege. Each preset grants only the permissions required for its features.

Next Steps

CLI Reference

All available email CLI commands and options.

View CLI Docs
Email SDK

Send emails with the TypeScript SDK after deploying.

View SDK Docs
Configuration Presets

Compare presets and customize your configuration.

View Guide

Need Help?

If you run into any issues, check our GitHub discussions or open an issue.

Get Help