build, send, and manage newsletters with an API you'll actually enjoy
penna is the newsletter platform built for developers. send emails from your code. manage subscribers without leaving your terminal. scale without fighting the tool.
everything you need to send newsletters
no bloat, no busywork — just the tools that matter.
dashboard
subscriber growth, open rates, and send history — at a glance, no digging.
subscribers
2,481
+12.4% this month
open rate
58%
above average
markdown editor
write in markdown, see the rendered preview update as you type. no wysiwyg fighting.
# weekly digest
hey **friends**,
- shipped custom domains
- fixed webhook retries
- new api endpoints
weekly digest
hey friends,
- shipped custom domains
- fixed webhook retries
- new api endpoints
subscriber management
segment, tag, and manage your list without ever leaving the dashboard.
built for developers
manage subscribers and send newsletters via a simple REST API.
const response = await fetch(
'https://api.penna.dev/api/v1/external/projects/subscribers',
{
headers: {
'x-penna-public-key': 'penn_your_public_key',
'x-penna-private-key': 'pk_your_private_key',
},
}
);
const subscribers = await response.json();
await fetch(
'https://api.penna.dev/api/v1/external/projects/newsletters/send',
{
method: 'POST',
headers: {
'x-penna-public-key': 'penn_your_public_key',
'x-penna-private-key': 'pk_your_private_key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
subject: 'Weekly Update',
content: '# Hello subscribers',
recipientEmails: ['user@example.com'],
}),
}
);full api reference in the docs.
why switch to penna?
built for developers. by developers.
| feature | penna | buttondown | mailchimp |
|---|---|---|---|
| open source | |||
| self-hostable | |||
| API-first design | |||
| transparent pricing | |||
| markdown editor | |||
| subscriber management | |||
| segmentation | |||
| webhooks | |||
| custom domain |
comparison last updated july 2026. features vary by plan.
simple, transparent pricing
enter your subscriber count to see your pricing
includes up to 2,500 subscribers
pass that and we'll ask you to upgrade — no surprise overage charges.