Compare
Choosing an email platform means comparing pricing pages, sending setups and API docs that never line up. We did that for five popular options and put the results side by side: what you pay, who sends your email, whether sequences and transactional email are built in, and how much code it takes to add a subscriber. Where we could not confirm something, we say so.
Listmonk is a fast, self-hosted newsletter and mailing list manager: one Go binary and PostgreSQL, around since 2018. It is excellent at broadcasting to big lists. What it doesn’t have is automation: there are no autoresponders, so a welcome series or drip needs code of your own. SendLit adds sequences, transactional email and a team per customer.
Read the full SendLit vs Listmonk comparison| Feature | SendLit | Listmonk |
|---|---|---|
| Open source | Yes: Yes. AGPL-3.0; the SDK and email editor are MIT | Yes: Yes, AGPL-3.0 |
| Hosted option | Yes: Yes, at app.sendlit.app | Partly: No official cloud; listmonk.app lists third-party one-click hosts |
| Free plan | Yes: Free to self-host; sign up free at app.sendlit.app | Yes: Free (self-hosted) |
| Pricing model | Self-hosted: no per-subscriber fee. You pay your provider per email, e.g. $0.10–$0.16 per 1,000 on Amazon SES | Free software. You pay for your server and your SMTP provider |
| Sends through | Yes: Your own provider: Amazon SES, SMTP, Postmark, Resend, SendGrid or Mailgun | Yes: Any SMTP server, with multiple SMTP queues and rate limits |
| Multi-step sequences | Yes: Yes. Start on signup, or when a tag is added or removed | No: No autoresponders; the request (issue #206) is still open |
| Transactional email API | Yes: Yes, emails.send in the SDK | Yes: Yes, /api/tx |
| Teams for your customers | Yes: Yes. One team per customer through the provisioning API | No: Out of scope, per the maintainer in 2021: run one instance per tenant |
| API and SDK | Yes: REST API and a typed TypeScript SDK (npm i sendlit) | Yes: REST API with HTTP basic auth (API user and token) |
| AI agents (MCP) | Yes: Yes, api.sendlit.app/mcp with OAuth | Partly: Not in the official docs |
| Self-hosting | docker compose up: PostgreSQL, Redis, the API and the web app | One Go binary or Docker Compose, plus PostgreSQL |
| Lines to add a subscriber | 6 | 17 |
import { SendLit } from "sendlit";
const sendlit = new SendLit({ apiKey: process.env.SENDLIT_API_KEY });
await sendlit.contacts.create({
email: "ada@example.com",
name: "Ada Lovelace",
});A new contact starts every active sequence that triggers on signup. Repeat signups return the existing contact and don’t re-enroll it.
const auth = Buffer.from(
`${process.env.LISTMONK_USER}:${process.env.LISTMONK_TOKEN}`,
).toString("base64");
const res = await fetch("https://lists.example.com/api/subscribers", {
method: "POST",
headers: {
Authorization: `Basic ${auth}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
email: "ada@example.com",
name: "Ada Lovelace",
status: "enabled",
lists: [1], // list IDs
}),
});
if (!res.ok) throw new Error(await res.text());Nothing runs after the signup: Listmonk has no autoresponders, so a welcome email needs a cron job or code that calls /api/tx.
Listmonk is built for raw throughput: its site describes a 7M+ email campaign on a fraction of one CPU core with a 57 MB memory peak. SendLit queues sends with Redis and BullMQ and lets you set a per-provider send rate and a warm-up limit.
Yes. Export them as CSV and import the file into SendLit, mapping columns as you go.
Yes, both are AGPL-3.0. SendLit’s SDK, email editor and email blocks are MIT, so you can embed them in closed-source code.
Mautic is a full open-source marketing automation suite: contacts, a website tracking script, points, stages, forms, landing pages and campaign builders, on PHP and MySQL. If you want all of that, it is a strong choice. If you only need email, it is a lot to run. SendLit focuses on newsletters, sequences and product email, with an SDK and a team per customer.
Read the full SendLit vs Mautic comparison| Feature | SendLit | Mautic |
|---|---|---|
| Open source | Yes: Yes. AGPL-3.0; the SDK and email editor are MIT | Yes: Yes, GPL-3.0 |
| Hosted option | Yes: Yes, at app.sendlit.app | Partly: Its docs cover self-hosting; we didn’t verify hosted options |
| Free plan | Yes: Free to self-host; sign up free at app.sendlit.app | Yes: Free (self-hosted) |
| Pricing model | Self-hosted: no per-subscriber fee. You pay your provider per email, e.g. $0.10–$0.16 per 1,000 on Amazon SES | Free software. You pay for your server and your email provider |
| Sends through | Yes: Your own provider: Amazon SES, SMTP, Postmark, Resend, SendGrid or Mailgun | Yes: SMTP or other Symfony Mailer transports, with bounce callbacks for SES, SendGrid, Mailjet and others |
| Multi-step sequences | Yes: Yes. Start on signup, or when a tag is added or removed | Yes: Yes. Campaigns can be time-driven, contact-driven or both |
| Transactional email API | Yes: Yes, emails.send in the SDK | Partly: Not verified |
| Teams for your customers | Yes: Yes. One team per customer through the provisioning API | Partly: Users and roles within one instance |
| API and SDK | Yes: REST API and a typed TypeScript SDK (npm i sendlit) | Yes: REST API with Basic Auth or OAuth2, plus a PHP API library |
| AI agents (MCP) | Yes: Yes, api.sendlit.app/mcp with OAuth | Partly: Not in the official docs |
| Self-hosting | docker compose up: PostgreSQL, Redis, the API and the web app | PHP 8.2, MySQL or MariaDB, and cron jobs for segments, campaigns and sending |
| Lines to add a subscriber | 6 | 16 |
import { SendLit } from "sendlit";
const sendlit = new SendLit({ apiKey: process.env.SENDLIT_API_KEY });
await sendlit.contacts.create({
email: "ada@example.com",
name: "Ada Lovelace",
});A new contact starts every active sequence that triggers on signup. Repeat signups return the existing contact and don’t re-enroll it.
const auth = Buffer.from(
`${process.env.MAUTIC_USER}:${process.env.MAUTIC_PASSWORD}`,
).toString("base64");
const res = await fetch("https://mautic.example.com/api/contacts/new", {
method: "POST",
headers: {
Authorization: `Basic ${auth}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
email: "ada@example.com",
firstname: "Ada",
lastname: "Lovelace",
}),
});
if (!res.ok) throw new Error(await res.text());Uses Basic Auth with a Mautic user; OAuth2 is the other option. Adding the contact to a segment or campaign uses other endpoints.
No. Mautic’s tracking script, points and stages are built for scoring anonymous and known visitors. SendLit tracks email delivery, opens and clicks, and leaves web analytics to other tools.
SendLit runs from one Docker Compose file: PostgreSQL, Redis, the API and the web app. Mautic needs PHP 8.2, MySQL or MariaDB and cron jobs for segments, campaigns and sending.
Yes. Export your contacts as CSV and import them into SendLit with column mapping.
MailCheap, by Marc Lou, is a newsletter app: write an issue, send it to your list, publish it on the web. It is open source, priced per email instead of per subscriber, and every action works from its REST API and MCP server. It sends through Amazon SES or PostShiba and has a welcome email, not multi-step sequences. SendLit adds sequences, transactional email and any SMTP provider.
Read the full SendLit vs MailCheap comparison| Feature | SendLit | MailCheap |
|---|---|---|
| Open source | Yes: Yes. AGPL-3.0; the SDK and email editor are MIT | Yes: Yes, AGPL-3.0 |
| Hosted option | Yes: Yes, at app.sendlit.app | Yes: Yes, MailCheap Cloud |
| Free plan | Yes: Free to self-host; sign up free at app.sendlit.app | Partly: No free trial on Cloud; self-hosting is free |
| Pricing model | Self-hosted: no per-subscriber fee. You pay your provider per email, e.g. $0.10–$0.16 per 1,000 on Amazon SES | Cloud: per email, from $19/mo for 20,000 emails. Self-hosted: free, plus $0.10–$0.16 per 1,000 on SES |
| Sends through | Yes: Your own provider: Amazon SES, SMTP, Postmark, Resend, SendGrid or Mailgun | Partly: Amazon SES, or PostShiba (invite only) |
| Multi-step sequences | Yes: Yes. Start on signup, or when a tag is added or removed | No: A welcome email, no multi-step sequences |
| Transactional email API | Yes: Yes, emails.send in the SDK | No: No; its API covers newsletters, campaigns and contacts |
| Teams for your customers | Yes: Yes. One team per customer through the provisioning API | Partly: Accounts with up to 3 newsletters each |
| API and SDK | Yes: REST API and a typed TypeScript SDK (npm i sendlit) | Yes: REST API with bearer keys, including signup-only keys for website forms |
| AI agents (MCP) | Yes: Yes, api.sendlit.app/mcp with OAuth | Yes: Yes, mailcheap.ai/mcp with OAuth or an API key |
| Self-hosting | docker compose up: PostgreSQL, Redis, the API and the web app | About an hour, per its README: Next.js, MongoDB and Upstash QStash |
| Lines to add a subscriber | 6 | 9 |
import { SendLit } from "sendlit";
const sendlit = new SendLit({ apiKey: process.env.SENDLIT_API_KEY });
await sendlit.contacts.create({
email: "ada@example.com",
name: "Ada Lovelace",
});A new contact starts every active sequence that triggers on signup. Repeat signups return the existing contact and don’t re-enroll it.
const res = await fetch("https://mailcheap.ai/api/v1/contacts", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.MAILCHEAP_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ email: "ada@example.com", source: "website" }),
});
if (!res.ok) throw new Error(await res.text());A signups-only key can call this endpoint from your website’s code.
Self-hosted, both cost your server plus your provider’s per-email rate. MailCheap Cloud starts at $19 a month for 20,000 emails, with no free trial.
Not as of October 2026: it has a welcome email but no multi-step sequences. SendLit sequences can start on signup or when a tag changes.
Yes. Both have an MCP server with OAuth: mailcheap.ai/mcp and api.sendlit.app/mcp.
beehiiv is a hosted newsletter platform with a website builder, growth tools and monetization built in. You pay by list size, and it sends for you. SendLit is open source and sends through your own provider, so the bill follows the emails you send, not the subscribers you have.
| Feature | SendLit | beehiiv |
|---|---|---|
| Open source | Yes: Yes. AGPL-3.0; the SDK and email editor are MIT | No: No |
| Hosted option | Yes: Yes, at app.sendlit.app | Yes: Hosted only |
| Free plan | Yes: Free to self-host; sign up free at app.sendlit.app | Yes: Free up to 2,500 subscribers |
| Pricing model | Self-hosted: no per-subscriber fee. You pay your provider per email, e.g. $0.10–$0.16 per 1,000 on Amazon SES | Per subscriber: Lite from $49/mo billed yearly ($59 monthly) for 1,000 subscribers |
| Cost at 100k subscribers, weekly | Self-hosted + Amazon SES: about $40–$64/mo for 400,000 emails, plus your server | Lite plan: $469/mo, billed monthly |
| Sends through | Yes: Your own provider: Amazon SES, SMTP, Postmark, Resend, SendGrid or Mailgun | No: beehiiv’s own sending; dedicated IPs on Enterprise |
| Multi-step sequences | Yes: Yes. Start on signup, or when a tag is added or removed | Yes: Automations, on Lite and above |
| Transactional email API | Yes: Yes, emails.send in the SDK | Partly: Send API, on Pro only |
| Teams for your customers | Yes: Yes. One team per customer through the provisioning API | Partly: Not on its pricing page |
| API and SDK | Yes: REST API and a typed TypeScript SDK (npm i sendlit) | Yes: REST API and an official TypeScript SDK on every plan |
| AI agents (MCP) | Yes: Yes, api.sendlit.app/mcp with OAuth | Yes: Yes: read access on Free, write access on Lite and above |
| Self-hosting | docker compose up: PostgreSQL, Redis, the API and the web app | Hosted only, nothing to run |
| Lines to add a subscriber | 6 | 6 |
import { SendLit } from "sendlit";
const sendlit = new SendLit({ apiKey: process.env.SENDLIT_API_KEY });
await sendlit.contacts.create({
email: "ada@example.com",
name: "Ada Lovelace",
});A new contact starts every active sequence that triggers on signup. Repeat signups return the existing contact and don’t re-enroll it.
import { BeehiivClient } from "beehiiv";
const beehiiv = new BeehiivClient({ token: process.env.BEEHIIV_API_KEY });
await beehiiv.subscriptions.create(process.env.BEEHIIV_PUB_ID, {
email: "ada@example.com",
customFields: [{ name: "First Name", value: "Ada" }],
});“First Name” must already exist as a custom field. Enrolling in an automation needs its ID and an “Add by API” trigger.
beehiiv prices by subscriber count. Self-hosted SendLit has no per-subscriber fee: you pay your provider per email, so 100,000 subscribers emailed weekly is about 400,000 emails.
Yes. Import beehiiv’s CSV export into SendLit; the subscription tier becomes a tag.
No. SendLit sends email. beehiiv also hosts your newsletter’s website and monetization tools.
Kit (formerly ConvertKit) is a hosted email platform for creators, with landing pages, sequences, a visual automation builder and paid products. It sends for you and prices by subscriber count. SendLit is open source, sends through your own provider and adds transactional email and a team per customer.
| Feature | SendLit | Kit |
|---|---|---|
| Open source | Yes: Yes. AGPL-3.0; the SDK and email editor are MIT | No: No |
| Hosted option | Yes: Yes, at app.sendlit.app | Yes: Hosted only |
| Free plan | Yes: Free to self-host; sign up free at app.sendlit.app | Yes: Free up to 10,000 subscribers |
| Pricing model | Self-hosted: no per-subscriber fee. You pay your provider per email, e.g. $0.10–$0.16 per 1,000 on Amazon SES | Per subscriber: Creator $33/mo billed yearly ($390/yr) for 1,000 subscribers |
| Sends through | Yes: Your own provider: Amazon SES, SMTP, Postmark, Resend, SendGrid or Mailgun | No: Kit sends for you |
| Multi-step sequences | Yes: Yes. Start on signup, or when a tag is added or removed | Yes: Automated sequences and a visual automation builder |
| Transactional email API | Yes: Yes, emails.send in the SDK | Partly: Not listed on its pricing page |
| Teams for your customers | Yes: Yes. One team per customer through the provisioning API | Partly: Not listed on its pricing page |
| API and SDK | Yes: REST API and a typed TypeScript SDK (npm i sendlit) | Yes: REST API v4 with an API key or OAuth |
| AI agents (MCP) | Yes: Yes, api.sendlit.app/mcp with OAuth | Yes: Yes, Kit MCP is listed on its pricing page |
| Self-hosting | docker compose up: PostgreSQL, Redis, the API and the web app | Hosted only, nothing to run |
| Lines to add a subscriber | 6 | 12 |
import { SendLit } from "sendlit";
const sendlit = new SendLit({ apiKey: process.env.SENDLIT_API_KEY });
await sendlit.contacts.create({
email: "ada@example.com",
name: "Ada Lovelace",
});A new contact starts every active sequence that triggers on signup. Repeat signups return the existing contact and don’t re-enroll it.
const res = await fetch("https://api.kit.com/v4/subscribers", {
method: "POST",
headers: {
"X-Kit-Api-Key": process.env.KIT_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
email_address: "ada@example.com",
first_name: "Ada",
}),
});
if (!res.ok) throw new Error(await res.text());The call is an upsert by email. Adding the subscriber to a sequence is a separate call.
Kit has a free plan for up to 10,000 subscribers. Paid plans start with Creator at $33 a month billed yearly for 1,000 subscribers.
Yes. Export your subscribers from Kit as CSV and import them into SendLit with column mapping.
Yes. Kit lists a Kit MCP on its pricing page, and SendLit has an MCP server at api.sendlit.app/mcp.
Prices and features checked on 25 October 2026 against each product’s pricing page, docs and GitHub repository, in USD. Amazon SES costs $0.10 per 1,000 emails à la carte, or $0.16 on its Essentials plan. Lines of code count the non-blank, non-comment lines in the samples above. Spotted something out of date? Open an issue on GitHub.
Send on your own terms
Open source, with your own SES or SMTP provider. Self-host it or start on the hosted app.