Introduction & Features
Relevant source files
The following files were used as context for generating this wiki page:
Send Again is an open-source email campaign platform designed to simplify the process of composing, managing, and sending HTML emails. It leverages Amazon Simple Email Service (SES) for high deliverability and provides both a user-friendly dashboard and a robust REST API for automation and integration with AI agents.
The system is built to handle the end-to-end email lifecycle, including contact management with automatic unsubscribe handling, real-time event tracking via SNS webhooks, and automated DNS configuration for domain verification. It supports multi-domain workspaces, allowing users to manage distinct sending identities within a single platform.
Sources: README.md:1-10, src/app/page.tsx:71-90
Core Platform Features
Send Again provides a comprehensive suite of tools for digital marketers and developers to execute email strategies effectively.
Primary Capabilities
| Feature | Description |
|---|---|
| High Deliverability | Powered by Amazon SES with automatic bounce and complaint handling; includes built-in SPF, DKIM, and domain verification. |
| REST API | Full programmatic access to send emails, manage contacts, and track delivery status, optimized for developers and AI agents. |
| AI Compose | Uses AI to generate raw HTML email fragments based on natural language descriptions. |
| Campaign Management | Organizes sends into campaigns with per-campaign analytics and visual performance tracking. |
| Event Tracking | Real-time monitoring of opens, clicks, bounces, and complaints via Amazon SNS webhooks. |
| Contact Management | Support for CSV/API imports with automatic handling of unsubscribes and suppression lists. |
| DNS Automation | Integrated setup for Namecheap, Cloudflare, and Route53 to configure verification records. |
Sources: README.md:13-24, src/app/page.tsx:3-68
Architectural Overview
The application architecture is designed around Workspaces, which serve as the primary organizational unit. Each workspace represents a sending domain and maintains its own set of contacts, API keys, and campaign history.
System Data Flow
The following diagram illustrates the flow from campaign composition to delivery and event feedback.
The system utilizes Supabase for authentication and database services, while the core sending logic is decoupled into jobs processed by a worker.
Sources: README.md:65-80, src/app/app/page.tsx:455-480, src/app/api/vibe/route.ts:108-140
Key Modules
AI-Powered Content Generation (AI Compose)
The "AI Compose" feature, internally referred to as "Vibe," allows users to generate email body or footer fragments. It interfaces with OpenAI's API to transform user instructions into production-ready HTML with inline styles.
- Targeting: Can generate
emailbodies orfooterfragments. - Contextual Awareness: The prompt includes workspace-specific details like the "From" address and website URL to ensure brand consistency.
- Output: Raw HTML fragments (excluding
<html>or<body>tags) for modular insertion.
Sources: src/app/api/vibe/route.ts:5-100, src/app/app/page.tsx:43-55
Contact & Audience Management
Contacts are managed within workspaces and can include arbitrary metadata stored as key-value pairs in the fields object.
- Import Methods: Manual entry, CSV upload with column mapping, or REST API.
- Dynamic Audiences: The platform supports "Recipient Conditions," allowing users to target contacts based on field values (e.g.,
verified=true) or historical behavior (e.g., "opened previous email"). - Compliance: Automatic integration with unsubscribe links and suppression lists to ensure legal compliance.
Sources: src/app/app/page.tsx:188-255, src/lib/openapi.ts:25-35
Campaign Analytics & Visualization
The platform provides a Sankey diagram to visualize the flow of a campaign from initial send to final click.
The analytics engine tracks metrics such as:
- Delivery Rate: (Delivered / Total Sends).
- Open Rate: Calculated from delivered sends.
- Click Rate (CTR): Unique clickers relative to delivered sends.
Sources: src/app/app/page.tsx:325-420, src/lib/openapi.ts:135-150
API & Integration
Send Again provides a first-class REST API documented via OpenAPI. It supports two primary authentication methods:
- Supabase JWT: Standard user authentication for the dashboard.
- API Keys (
sk_...): Scoped keys for programmatic access.
API Scopes
| Scope | Description |
|---|---|
contacts.read | Read access to workspace contacts. |
contacts.write | Create, update, or delete contacts. |
send.read | View send history and job status. |
send.write | Initiate new email send jobs. |
Sources: src/lib/openapi.ts:5-20, src/app/app/page.tsx:85-95
Summary
Send Again functions as a bridge between complex cloud infrastructure (AWS SES) and user-centric campaign management. By providing tools like AI-assisted composition, dynamic audience filtering based on historical data, and automated DNS setup, it reduces the technical overhead required to maintain high-deliverability email operations. Its dual-nature as a GUI and an API-first platform makes it suitable for both manual marketing workflows and automated system notifications.