Self-hosted email campaign management, powered by AWS SES.
⚠️ Sesy is still in beta and not yet recommended for production use.
👋 Beta testers are welcomed!
Sesy is an open-source, self-hosted email campaign platform built on top of AWS Simple Email Service (SES). It gives you a clean web interface to manage your entire email operation: From configuring AWS credentials and verifying domains, to building audiences and sending campaigns, with minimal AWS configuration.
| Sesy | Brevo | Mailchimp | Loops | Sendy | |
|---|---|---|---|---|---|
| Self-hosted | ✅ | ❌ | ❌ | ❌ | ✅ |
| Open source | ✅ | ❌ | ❌ | ❌ | ❌ |
| Your data, your servers | ✅ | ❌ | ❌ | ❌ | ✅ |
| No per-email fees | ✅ | ❌ | ❌ | ❌ | ✅ |
| No monthly subscriber limits | ✅ | ❌ | ❌ | ❌ | ✅ |
| Modern UI | ✅ | 🤷♂️ | 🤷♂️ | ✅ | ❌ |
| REST API | ✅ | ✅ | ✅ | ✅ | ❌ |
| Docker one-command deploy | ✅ | ❌ | ❌ | ❌ | ❌ |
Other tools charge based on the number of contacts or emails sent, and you hand your audience data over to a third party.
Sesy is free, open-source, and deploys in minutes with Docker. Your data lives on your own infrastructure, and your only sending cost is AWS SES ($1 per 10,000 emails).
Compare that to Mailchimp at ~$350/month for 50,000 contacts, or Brevo at ~$65/month for 100,000 emails. A list of 50,000 subscribers receiving a weekly newsletter would cost around $20/month on AWS SES versus hundreds on a SaaS platform.
- AWS SES management - Sesy configures everything in AWS for you, because we all hate AWS console. Just set your AWS credentials and region
- Domain verification - Guided DNS record setup so you can send emails from your domain
- Audience management - Import contacts via CSV, organize with tags, track subscription status
- Campaign editor - Simple HTML email editor with per-subscriber personalization (i.e.
first_name) and automatic unsubscribe footers - Async sending - Campaigns send in the background, respecting your SES rate limits
- API - Full API with docs and API key authentication, so you can manage audience members programatically
- Campaign statistics - [In the works] See how many opens and clicks your campaign had.
- Transactional emails - [In the works] Send transactional emails (login codes, password resets, etc.)
- One-click unsubscribe commpliant - All campaign emails are automatically sent with a mandatory "Unsubscribe here" footer. Sesy provides a one-click unsubscribe workflow for audience members.
- One-command deployment - Complete stack (app, worker, scheduler, DB, cache, proxy) via Docker Compose
⚠️ You will need an AWS account with SES out of sandbox (production) mode. Click here for a quick guide on how to do it.
- Copy
docker-compose.ymlfrom this repo - Update the environment variables in the compose file to match your domain
- Run
docker compose up -d - Open
http://localhost:8080 - Log in with username
admin/ passwordadmin - The app will guide you trough all the steps.
Sesy is easily updateable with docker.
⚠️ Always read the release notes before updating!
docker compose pulldocker compose up -d
- Configure AWS SES fully from the app
- Adding audience members via API
- Domain verification
- Onboarding flow on first deployment
- SES configuration alerts (i.e. prevent sending campaigns if SES is not properly configured)
- Campaign statistics via SES event webhooks
- Batch audience member edits
- Transactional emails
Contributions are welcome! Whether it's bug reports, feature requests, or pull requests, all input is appreciated.
- Bug reports & feature requests — Open an issue on GitHub describing the problem or idea
- Pull requests — Fork the repo, create a branch, make your changes, and open a PR against
main. - Roadmap items — If you want to work on something from the roadmap, open an issue first so we can coordinate
Please keep PRs focused — one feature or fix per PR makes review much easier.
- Backend - [Python] - Django REST API + celery workers
- Frontned - [Typescript] - React + tailwindcss + shadcnUI
- Deployment - Docker
