The Mailchimp alternative that doesn't charge you per send.
Bring your own SMTP, own your subscriber data, send to unlimited contacts. Self-host in 60 seconds with Docker, or use the managed cloud. Open source under AGPL-3.0 — core-team-only development.
Website · Documentation · Cloud · Roadmap · Changelog
Email marketing tools punish you for growing. Mailchimp charges $135/mo at 10k contacts. ConvertKit/Kit charges $104/mo at the same size. Both lock your subscriber list inside their UI and bill you per email or per contact, forever.
SendDock flips the model: you bring your own SMTP relay (AWS SES, Postmark, Postal, your own Postfix — anything that speaks SMTP), the app handles subscribers, templates, campaigns, tracking and analytics, and you pay $0 to the platform — no matter if you send 1 email or 1 million.
| Mailchimp | Kit (ConvertKit) | Resend | SendDock | |
|---|---|---|---|---|
| Monthly cost @ 10k subscribers | ~$135 | ~$104 | ~$35 | $0 (+ SMTP) |
| Self-hostable | — | — | — | ✓ |
| Open source | — | — | — | ✓ (AGPL-3.0) |
| Bring your own SMTP | — | — | — | ✓ |
| Per-email pricing | ✓ | — | ✓ | No |
| You own subscriber data | — | — | — | ✓ |
| Visual editor | ✓ | ✓ | — | ✓ (GrapesJS) |
| Transactional API | ✓ | — | ✓ | ✓ |
| Open & click tracking | ✓ | ✓ | ✓ | ✓ |
| One-click unsubscribe (RFC 8058) | ✓ | ✓ | ✓ | ✓ |
If you already pay AWS SES ($0.10 per 1,000 emails), sending 100k emails costs you ~$10/month total with SendDock vs ~$135/month with Mailchimp.
On Ubuntu 22.04+ or Arch Linux with sudo:
curl -fsSL https://senddock.dev/install.sh | sudo bashThe installer takes care of Docker, secrets, the compose file, and starts the stack. When it finishes, open the URL it prints and create your admin account.
On Debian, Fedora, RHEL, openSUSE, macOS, or any other OS: use the manual Docker Compose path below — it works anywhere Docker runs. Broader installer support is on the roadmap.
Manual install with Docker Compose (any Linux with Docker)
mkdir senddock && cd senddock
curl -fsSL https://raw.githubusercontent.com/arkhe-systems/senddock/main/docker-compose.image.yml -o docker-compose.yml
cat > .env <<EOF
POSTGRES_PASSWORD=$(openssl rand -base64 32)
JWT_SECRET=$(openssl rand -hex 32)
PUBLIC_URL=https://your-domain.com
EOF
docker compose up -dOpen https://your-domain.com and complete the setup screen.
For Dokploy, reverse-proxy setups, Cloudflare Tunnel, source builds, license activation, and updates, see the Self-Hosting Guide.
- Projects — separate sending domains and subscriber lists for each product, brand, or client.
- Subscribers — single add, CSV/JSON bulk import, bulk actions (update, delete), status segmentation (active / pending / unsubscribed).
- Templates — Handlebars-based with dynamic variables, visual editor (GrapesJS) and code editor (CodeMirror).
- Campaigns — broadcast to your full list, scheduled sends, send-to-segment, draft and resume.
- Transactional API —
POST /sendwith template or raw HTML, batch send, API keys per project. - Deliverability essentials — open tracking pixel, click tracking with HMAC-signed redirects, RFC 8058 one-click unsubscribe, suppressions and bounces.
- SMTP test — verify your SMTP settings before sending anything.
- Rate limiting — per-project (Redis-backed) and per-IP (global) limiters.
- Security — JWT auth via HttpOnly cookies, refresh-token rotation, encrypted SMTP credentials, bcrypt password hashing.
- One-click updates — bundled Watchtower lets you upgrade from the dashboard.
- Multi-arch images — official Docker image runs on
linux/amd64andlinux/arm64(Raspberry Pi, AWS Graviton, Apple Silicon VMs).
- Backend — Go 1.25,
net/httpstdlib, sqlc for type-safe queries, goose for migrations. - Frontend — Vue 3 + TypeScript + Vite, Tailwind CSS 4, Pinia state, GrapesJS visual editor, CodeMirror code editor.
- Storage — PostgreSQL 17, Redis 7 (rate limits + background queue).
- Deploy — single Docker image, multi-arch (amd64 + arm64), Watchtower-ready for self-updates.
Both modes use the same BYO-SMTP model — Cloud removes the infrastructure work, not the SMTP setup. Pick based on whether you want to run the app yourself or have us run it for you.
| Self-hosted (this repo) | Cloud | |
|---|---|---|
| Setup | One curl command, ~60s | Zero — just sign up |
| Cost | $0 (Core) or $9/mo (Pro license) + your SMTP + your VPS | Free up to 2,000 subs, $19/mo for 10k, scales by tier |
| Bring your own SMTP | Yes | Yes — same model |
| You upgrade the app | docker compose pull or one-click in UI |
Automatic |
| Backups, monitoring, uptime | Your responsibility | Handled |
| Data location | Your server, your jurisdiction | EU (Frankfurt) |
| Pro features (Analytics, Audit log) | Pro license required | Bundled from Starter tier upward |
| Team features (multi-user, roles) | Team license required | Bundled from Growth tier upward |
SendDock is built for:
- Engineers and indie hackers who already have SMTP figured out (AWS SES, Postmark, Postal, your own Postfix) and want a clean dashboard + API instead of building one themselves.
- Newsletter publishers and agencies who refuse to pay $135/mo to Mailchimp for the privilege of managing a subscriber list.
- Privacy-conscious teams who need subscriber data to live on their own infrastructure (EU strict residency, healthcare, government, white-label client work).
- Self-hosting enthusiasts looking for a modern alternative to Listmonk with Pro analytics, A/B testing, and a polished UI.
SendDock is not for:
- People who want zero-config deliverability bundled in. Both self-host and Cloud are BYO-SMTP — you are responsible for sender reputation, dedicated IPs, blocklist monitoring. If you want that handled for you, use Mailchimp, Resend, or Postmark instead.
- Marketers who need drag-and-drop landing pages, forms, and visual automation workflows today. These are on the roadmap but not yet shipped. Today SendDock excels at transactional email, broadcasts, and templates — not full marketing automation.
| Getting Started | First-time walkthrough |
| Self-Hosting Installation | Docker, Dokploy, reverse proxy, Cloudflare Tunnel |
| Configuration | All environment variables explained |
| Updating | One-click and manual updates |
| Troubleshooting & FAQ | SMTP issues, common errors |
| API Reference | All endpoints, auth, examples |
SendDock is open-core. The free Core binary in this repo is a complete, production-ready email platform on its own. A license key unlocks an extra management surface for teams that want it.
Core (AGPL-3.0, free, in this repo)
- Projects, subscribers, templates, API keys, campaigns, SMTP management
- Transactional sends, broadcasts, batch sends, scheduled campaigns
- Custom fields, tags, and segments for subscriber targeting
- Open & click tracking, one-click unsubscribe (RFC 8058)
- Webhooks — full management UI and REST API (CRUD, pause/resume, delivery history) with HMAC signing and retries
- Per-project rate limits, encrypted SMTP credentials, JWT auth
- One-click updates via bundled Watchtower
Pro (license-gated, included in cloud)
- Analytics dashboard — funnel, opens-over-time, top templates, top clicked links, trend pills, segment filter
- Audit log — who did what, when, from where
- Roadmap: team members & roles, SMTP failover, SSO/LDAP, white-label
A license key (Lemon Squeezy) is available at senddock.dev/pricing. An empty SENDDOCK_LICENSE_KEY keeps the deployment on Core — fully functional, free forever.
See ROADMAP.md for milestones and GitHub Issues for what's actively being worked on. Comments, +1s, and well-described feature requests on existing issues help us prioritize.
For auditing, forking, or running a modified copy on your own infrastructure.
# Backend
cd backend && cp .env.example .env && make dev # http://localhost:8080
# Frontend
cd frontend && npm install && npm run dev # http://localhost:5173Prerequisites: Go 1.25+, Node 20+, Docker, goose, sqlc.
| Make target | What it does |
|---|---|
make dev |
DB + migrations + server |
make run |
Server only |
make test |
Unit tests |
make sqlc |
Regenerate sqlc code |
make migrate |
Apply pending migrations |
make build |
Production binary |
make db-up / make db-down |
Start/stop Postgres + Redis |
Bug reports, feature requests, and security disclosures: very welcome — these are the most useful way to contribute. Open an issue with reproduction steps, expected vs actual behavior, and your environment.
Pull requests with code: not accepted on the official repository. The reason is straightforward — SendDock has a paid Pro tier, and we are not comfortable monetizing volunteer code. The AGPL gives you full freedom to fork, modify, and run your own version with whatever changes you need.
Questions, ideas, or want to show what you've built with SendDock? Open a GitHub Discussion or email hello@senddock.dev.
If SendDock saves you money or pain, a star helps other people find the project.
AGPL-3.0 — see LICENSE.
In short: use it internally, fork it, modify it. The AGPL's copyleft clause only triggers if you offer SendDock as a hosted service to third parties — in that case, you must release your modifications under the same license.
For a commercial license that exempts you from the AGPL copyleft clause, contact hello@senddock.dev.
Part of Arkhe Systems



