Open source, AGPL-3.0

Self-host your newsletter with MailCheap

Run MailCheap on your own server with your own Amazon SES or PostShiba account. You pay your provider for the emails you send, and nothing for the app: no plans, no limits.

Rather not run a server? MailCheap Cloud runs the same code for you, from $19 a month. Get started

10,000 readers, 4 issues a month
  • MailCheapFree
  • Hosting on VercelFree tier
  • MongoDB AtlasFree tier
  • Upstash QStashFree tier to start
  • 40,000 emails on Amazon SES$4 to $6
A month, self-hosted$4 to $6

The same list on MailCheap Cloud: Growth, $39 a month, sending and support included.

01 · What you need

Services with free tiers, and your email provider

Plan for about an hour, most of it waiting for DNS and for your provider to approve production sending.

The services a self-hosted MailCheap uses
ServiceForCost
MongoDB AtlasContacts, campaigns and statsFree tier works
Amazon SESorPostShibaSendingSES: $0.10 to $0.16 per 1,000 emails, depending on its pricing plan. PostShiba: a fixed price per cluster, invite only for now
Upstash QStashBackground sending and schedulingFree tier to start, then pay per message. One message sends 50 emails
VercelHosting, or any Node.js 22 hostFree tier works
ResendOptionalSign-in codes and alerts, or they go through your email providerFree plan works
Upstash RedisOptionalRate limits shared by every server instanceFree tier
Amazon S3orVercel BlobOptionalImage uploads in the editor and the APIS3 with CloudFront: pay per use. Blob: free tier

02 · Self-hosted or Cloud

The same app, two ways to run it

MailCheap Cloud is this code with plans and billing on top. Every change to the app ships to both.

Self-hosted MailCheap and MailCheap Cloud
WhatSelf-hostedMailCheap Cloud
PriceSelf-hostedFree, plus what your provider charges per emailMailCheap CloudFrom $19 a month for 20,000 emails
SendingSelf-hostedYour Amazon SES or PostShiba account, from your domainMailCheap CloudSet up for you, from hello@<slug>.mailcheap.ai or your domain
WebsiteSelf-hosted/archive/<slug> on your server's domainMailCheap Cloud<slug>.mailcheap.ai, or your own domain
Who signs inSelf-hostedThe emails you allowMailCheap CloudAnyone who signs up
LimitsSelf-hostedNoneMailCheap CloudEmails a month and active subscribers, by plan
SetupSelf-hostedAbout an hourMailCheap CloudA few minutes
SupportSelf-hostedNone: you keep it up to date yourselfMailCheap CloudA chat in the dashboard

03 · Setup

Six steps, in the README

Sending stays off until the last step, so nothing reaches your readers by mistake. Each step's details are in the setup guide.

  1. 1

    Database

    Create a free MongoDB Atlas cluster and copy its connection string.

    Read the step
  2. 2

    Deploy

    Click Deploy with Vercel and fill in the database, two secrets, your email and the address sign-in codes come from.

    Read the step
  3. 3

    Who can sign in

    List the emails that can sign in. Each gets an account with up to 3 newsletters.

    Read the step
  4. 4

    Email provider

    Connect Amazon SES or PostShiba, with the events that report deliveries, bounces and complaints.

    Read the step
  5. 5

    QStash

    Add your Upstash QStash keys: they send each batch in the background and run scheduled sends.

    Read the step
  6. 6

    Turn sending on

    Add your domain's DNS records, create your newsletter, set SENDING_ENABLED to true and send yourself a test.

    Read the step

04 · Features

Everything MailCheap does, on your server

Self-hosted, you get the whole app, with no plan to pick.

  • Your AI agent runs it

    An MCP server and a REST API do everything the dashboard does, with the same checks and limits.

  • Write, review, send

    An editor with slash commands and images, a review of what to fix before sending, and scheduled sends.

  • Your list, as it is

    Exports from beehiiv, Substack, Mailchimp, Kit and others import with each reader's status and signup date.

  • A website for each newsletter

    Every issue gets a page search engines can find, with a signup form, an author page and a sitemap.

  • Sending from your domain

    The DKIM, return path and DMARC records to add, with a check for each.

  • Sends that protect your domain

    New contacts get an issue in steps, readers who stopped opening get asked once, and invalid addresses stay out.

Moving over

Coming from another self-hosted app?

What each does next to MailCheap, and how to bring your list.

Rather not run a server?

MailCheap Cloud runs the same code for you, with sending, your newsletter's website, updates and a chat with us, from $19 a month.