Plunk is licensed under AGPL-3.0. If you self-host, consider supporting the project via GitHub Sponsors.
How Plunk compares to alternatives
Plunk is a self-hosted, open-source alternative to managed email services:| Plunk | SendGrid | Resend | Mailgun | |
|---|---|---|---|---|
| Open source | Yes | No | No | No |
| Self-hostable | Yes | No | No | No |
| Built on AWS SES | Yes | No | No | No |
| Transactional emails | Yes | Yes | Yes | Yes |
| Campaigns | Yes | Yes | No | No |
| Workflow automation | Yes | Yes | No | No |
| Contact management | Yes | Yes | No | Yes |
Core capabilities
Transactional emails
Send one-to-one emails via the REST API — password resets, order confirmations, notifications. Supports HTML bodies, template variable substitution, attachments, and custom headers.
Email campaigns
Send newsletters and product updates to your full contact list or targeted audience segments. Schedule campaigns in advance or send immediately.
Workflow automation
Build automated email sequences triggered by contact events. Add delays, conditional branches, and webhook steps to create sophisticated lifecycle campaigns.
Contact management
Store and organize contacts with custom data fields. Import via CSV. Create dynamic segments based on contact properties or behavior.
Email templates
Define reusable templates for both transactional and marketing emails. Templates support
{{variable}} substitution and can be referenced by ID at send time.Analytics
Track opens, clicks, bounces, and custom events in real time. Use event data to trigger workflows and build audience segments.
Deployment options
Self-hosted
Run Plunk on your own infrastructure using Docker. You supply an AWS SES account for email delivery and configure the rest via environment variables. What you need to self-host:- AWS account with SES enabled (and out of sandbox mode for production sending)
- A server or container platform (Docker, Kubernetes, Railway, Render, etc.)
- PostgreSQL database and Redis instance
- S3-compatible object storage (or AWS S3)
Hosted service
If you don’t want to manage infrastructure, useplunk.com offers a hosted version. Sign up, create a project, and start sending — no servers to maintain.Architecture overview
Plunk is a monorepo with three main runtime processes:| Component | Role |
|---|---|
| API server | Handles all REST requests. Validates input, writes to Postgres, enqueues jobs via BullMQ. |
| Worker process | Consumes jobs from Redis queues. Calls AWS SES, runs workflow logic, processes campaigns. Runs separately so it can scale independently. |
| Dashboard (web) | Next.js UI for managing contacts, templates, campaigns, workflows, domains, and settings. |
| PostgreSQL | Persistent storage for contacts, events, emails, templates, campaigns, and settings. |
| Redis | Job queue backing store (BullMQ) and general caching. |
| AWS SES | Email delivery backend. Plunk uses SES send APIs and ingests bounce/complaint events via SES configuration sets. |
API requests that trigger email sending are non-blocking. The API returns a response immediately after enqueueing the job. The worker delivers the email asynchronously. This design keeps API response times fast even under load.
API keys
Each Plunk project has two API keys:- Secret key (
sk_*) — Full API access. Required for/v1/sendand all dashboard endpoints. Keep this server-side only. - Public key (
pk_*) — Limited to/v1/trackonly. Safe to use in client-side JavaScript.
Next steps
Quick Start
Get your API key and send your first email in minutes.
Self-Hosting
Deploy Plunk on your own infrastructure with Docker and AWS SES.
API Reference
Browse the full REST API documentation.
Verify your domain
Configure DNS records to send from your own domain.