Free Software

Open Source Newsletter App MailCheap Lets You Self-Host for Free

MailCheap, an open source newsletter app, can be self-hosted for free or run on its cloud service. Self-hosters pay their email provider directly for the emails they send.

Laptop screen showing an email newsletter editor with a preview pane and a send button

MailCheap, a newsletter application that describes itself as built for the “agentic era”, has been published as open source code on GitHub. Writers and small publishers can host the software themselves for free, or let the team behind the project run it on MailCheap Cloud. The project’s repository makes its case mainly on cost: newsletter platforms typically charge for every subscriber, every month, whereas MailCheap users pay their email provider for the messages they send. The repository gives one example: 10,000 readers receiving four issues a month amounts to 40,000 emails, which it estimates at about $4 to $6 on Amazon SES.

One app for the whole newsletter workflow

According to GitHub, the repository contains the entire application: the dashboard, the public archive, a REST API, an MCP server and the documentation. The app is written as a single Next.js project, which the repository presents as a way to keep the editor, subscriber list, signup forms and statistics in one place.

Writers compose issues in an editor with a live email preview. Images can be dropped in, pasted, or chosen from earlier uploads, and Markdown and raw HTML are both supported. Test emails, scheduling and batched sending through QStash are included.

One feature the repository highlights is staged sending. An editor can start with the most engaged readers and widen the audience later. For a first send to contacts who have never received an email from the publisher, the system works this out automatically: it sends to a 5% slice first, then sends to the rest three hours later, provided bounces and complaints remain low.

Safeguards for list health

Deliverability depends heavily on list hygiene, and MailCheap builds several checks into the workflow. The main protections listed by GitHub include:

  • CSV imports that leave out invalid, misspelled, spam trap, role, throwaway, duplicate and suppressed addresses.
  • Signup forms that refuse misspelled email domains and suggest a correction.
  • Confirmed opt-in, switched on by default, with a welcome email.
  • Automatic pausing of a send when hard bounces pass 2% (with at least 5) or complaints pass 0.08% (with at least 2). The account owner receives an email and can resume the send.
  • Account-wide blocks for serious abuse, which stay in place until an administrator lifts them.

The repository notes that a single complaint alone never halts a send. It also describes a list cleanup feature, on by default, that emails readers who have ignored several issues once to ask whether they still want to receive them, and then stops sending to those who do not respond.

Self-hosting or using MailCheap Cloud

The same code runs both versions. On MailCheap Cloud, an environment setting adds plans and Stripe billing, along with the project’s own sending accounts. The marketing site, which covers the landing page, pricing and legal pages, is not part of the open source release. GitHub says every change to the app ships to both versions.

Self-hosting has no billing layer, so there are no plans and no limits. The owner runs the server and pays only for infrastructure and sending. Each account can manage up to three newsletters, each with its own contacts and campaigns.

The hosted option carries its own rules. On MailCheap Cloud, a new account’s campaigns go out over 24, 16 and 12 hours, and then 8, during its first 30 days. The repository also limits accounts to one per inbox and allows three new accounts per day from each IP address.

What self-hosting requires

The repository says the setup takes about an hour, much of which is spent waiting for DNS changes and for the email provider to approve production sending. A typical deployment includes:

  • A MongoDB database, connected through a connection string.
  • A hosting platform such as Vercel, or any Node.js host behind HTTPS.
  • Amazon SES or PostShiba as the email provider, with an SNS topic for delivery events.
  • QStash from Upstash, which calls the app to send each batch.
  • Optional Redis for rate limits, which the project recommends adding before placing a signup form on a busy site.
  • Optional S3 or Blob storage, without which image uploads are disabled.

Amazon SES starts new accounts in a sandbox that allows 200 emails a day and only to verified recipients. To send to real readers, the operator must request production access, and the repository advises describing opt-in, automatic suppression of bounces and complaints, and one-click unsubscribe links in the request. It notes that AWS usually responds within a day.

Support and the open-source trade-off

The project is open to forks, but it does not offer support. Its repository states that issues are switched off and that setup questions go unanswered. Operators are expected to rely on the built-in documentation at /docs, an OpenAPI document, and a /llms.txt file on their own server.

That arrangement suits technically confident publishers who want full control over their subscriber data and sending costs. Those who need help with configuration, or who would rather not manage DNS records and cloud accounts, are likely to find the hosted service more practical, although they will pay for it.

For readers considering the project, the main question is how much of the setup they are prepared to handle. The software itself is complete, and its design choices around deliverability are unusually detailed for an open source release. Whether that makes it a practical alternative to paid platforms will depend on each publisher’s technical comfort and sending volume.

Source: GitHub

Comments (0)