Substack vs listmonk

If you use Substack only to send a list, listmonk gives you lists, segments, templates and analytics on your own servers with your own SMTP provider. It does not replace Substack's paid subscriptions, hosted archive or discovery.

On this page

Substack vs listmonk: when a self-hosted list manager fits a newsletter

listmonk fits a newsletter that goes to a list and nowhere else. If your publication mainly sends issues to subscribers you already have, and you want the list, the subscriber data and the sending path under your own control, a self-hosted list manager covers most of the work. listmonk is an AGPL-3.0 mailing list and newsletter manager that runs as a single binary with PostgreSQL as its only dependency. It handles single and double opt-in lists, segments subscribers with SQL expressions, edits templates in a builder, Markdown or raw HTML, sends through several SMTP servers with rate limiting, and reports campaign, bounce and link analytics. The subscriber table, the opt-in records and the send logs sit in your own database, and you choose the SMTP provider that delivers the mail. Substack fits a different case: a publication whose revenue depends on paid subscriptions, a hosted archive that search engines index, and recommendations from other Substack writers. Those features run inside Substack's platform, and listmonk does not replicate them.

The decision turns on three questions you should answer before you move anything. First, do paid subscriptions, the hosted archive and Substack's recommendation traffic matter to your revenue model? If subscriptions are a meaningful income line or new readers arrive mostly through Substack discovery, a list manager alone will leave that income or traffic behind, and you should weigh the Substack vs Ghost comparison before deciding. Second, who will run the server? listmonk needs a PostgreSQL database, backups, TLS, patching and monitoring of the bounce and unsubscribe paths, and someone must own those tasks after launch. Third, who holds the SMTP relationship? Deliverability depends on sending domain authentication, bounce handling and complaint rates, and you should confirm with your SMTP provider which sending limits, authentication records and feedback loops apply to your volume before you cut over the list.

Which option fits which newsletter situation

This table maps common reasons organizations use Substack to the option that suits each one, with listmonk, Substack, or a split approach. Read the first column for your situation, then check the reason, since the fit depends on whether money, discovery or the hosted archive matters to you.

SituationBetter fitReason
Free newsletter sent to an owned listlistmonkYou keep the subscriber list in your own PostgreSQL database, with single or double opt-in lists, SQL segments and campaign analytics, and send through your own SMTP provider.
Paid publication with subscriptionsSubstack or a self-hosted paid toollistmonk is a one-way list manager without built-in paid subscriptions. Keep Substack, or plan a separate payment integration before moving paying members.
Publication that relies on Substack discoverySubstack, or keep bothSubstack's in-app recommendations and network reach are hosted features. listmonk does not provide a discovery network, so expect to build audience growth yourself.
Internal or customer communications listlistmonkAccess can be limited with OIDC single sign-on, granular roles and API tokens, and subscriber data stays inside your environment for compliance review.
Archive as a public front doorlistmonk with your own sitelistmonk does not host a public archive page for readers. Publish past issues on your own website or pair listmonk with a separate CMS.
Team with no operations capacitySubstack, unless you have an operatorlistmonk is a single binary with PostgreSQL, but you must run hosting, SMTP delivery, bounce handling and upgrades. Confirm who will own these before moving.
Mixed model: public newsletter plus private listsSplit approachKeep the public archive and paid tier on Substack and move internal or segmented lists to listmonk, so each audience sits where its requirements fit.

Where the subscriber data lives and who controls it

listmonk runs as a single binary with PostgreSQL as its only dependency, so it fits into a virtual machine or container platform in an account you already control. Subscriber records, list memberships, campaign content and send logs are written to the PostgreSQL database you operate, not to a vendor's hosted tenant. The one part that leaves your environment is SMTP delivery, because listmonk hands messages to the mail servers you configure. Substack keeps all of these records on its own platform, so this model changes who holds the data, not just where a button is.

  • Data location: Subscriber tables, bounce records and campaign analytics stay in your PostgreSQL instance and its backups.
  • Delivery path: Messages leave through the SMTP servers you name, so the mail provider receives recipient addresses and message content.
  • Container option: A Docker image and sample docker-compose.yml are published, which helps teams that already run container workloads.
  • Backups: Your team owns database backup, restore testing and retention, and these tasks recur for as long as the list runs.
  • Access to the database: Anyone with database credentials can read every subscriber, so restrict those credentials to the platform team.

Confirm with your cloud and security teams which region hosts the database and backups, and which SMTP provider and region process messages.

What each option costs to run over time

Substack charges a share of paid subscription revenue plus card processing, so its cost grows with income. listmonk costs little in software but moves spending to hosting, email delivery and the time someone spends keeping it running. The cards below separate one-time setup from recurring costs and name what to confirm before comparing totals.

Substack revenue share and card fees

Substack takes a percentage of paid subscription revenue and payment processing fees apply on top. This cost is recurring and rises with every paid subscriber, so it is the main variable to model. If the publication is free, this line may be zero, but confirm the current terms on Substack's own pricing page before you assume it. Ask yourself whether paid subscriptions are part of the plan at all.

listmonk server and PostgreSQL hosting

listmonk runs as a single binary with PostgreSQL as its only dependency, so the infrastructure is one application server and one database. Hosting cost depends on your cloud provider or data center and on list size, since the subscriber table and campaign history grow over time. Request a quote that states instance size, database storage and backup retention, and confirm current rates with your hosting provider.

SMTP provider per-message charges

listmonk sends through the SMTP servers you configure, so email delivery is usually the largest recurring cost once a list grows. Charges are normally metered per message and rise with list size and send frequency. Confirm current per-message rates, sending limits and any dedicated IP fees with your SMTP provider, and check how bounce and complaint handling is priced.

One-time setup and subscriber import

Setup covers installing listmonk, configuring SMTP and domain authentication, and importing the existing Substack list. This is a one-time cost, whether done in house or by an implementation partner under a written scope. Ask for the import method, how opt-in consent records are carried over, and how the old Substack archive is handled, because each affects effort.

Backups, upgrades and staff time

Backups, security patches and version upgrades recur for as long as the system runs. Staff time is the cost most often left out of comparisons, and it depends on who owns the server and how often sends fail or need troubleshooting. Ask whether the quote includes backup testing, an upgrade schedule and on-call coverage, and estimate the hours internally against your team's rates.

What drives the totals up or down

Four factors move both sides of the comparison: list size, send frequency, whether subscriptions are paid, and how much of the work your team already does. A free newsletter with a small list costs little to self-host, while a paid publication shifts the balance toward whichever option takes the smaller share of revenue. Model both paths with your own numbers before deciding.

What moving an email list from Substack to listmonk involves

The sequence moves a subscriber list and its consent evidence into a self-hosted listmonk instance that sends through your own SMTP provider, ready for a verified send. The archive, redirects and paid billing are separate work that this sequence does not cover.

  1. Export the subscriber list and consent records

    Download the subscriber export from Substack's publication settings and keep it in a restricted location on your side. Confirm for each subscriber how and when they joined, whether they confirmed their address, and whether they unsubscribed or were removed, because a plain email list does not carry that history. Your compliance or legal owner should approve how consent evidence is retained. Done means you hold a complete file with one row per address and a written note of the consent basis you will rely on for each group.

  2. Separate paid members from the free list

    Identify which addresses hold paid Substack subscriptions before you import anything. A list export carries no billing relationship, so paid members cannot keep paying through listmonk, and their access and payments need a separate migration path handled outside this sequence. Mark paid and free addresses in separate lists so that a later message never implies a payment change. Done means every address is tagged as free or paid and the paid group has an owner for its transition.

  3. Install listmonk with PostgreSQL

    Deploy listmonk on infrastructure you control, using the Docker image and sample docker-compose.yml from the project or the standalone binary, with PostgreSQL as its database. Your platform or infrastructure team handles the host, backups and TLS, and the listmonk project documentation covers the installation steps. Done means the admin interface loads over HTTPS, the database is backed up on a schedule, and you have confirmed the installed version against the project's release notes.

  4. Configure SMTP and sending domain authentication

    Connect listmonk to one or more SMTP servers from your email provider and set rate limits that match the provider's allowances. Publish SPF, DKIM and DMARC records for your sending domain and confirm them with the provider, since mailbox providers judge a new sender by its authentication and bounce history. Substack handled delivery for you, so this step is where you take that responsibility on. Done means a test message to several mailbox providers passes authentication and lands in the inbox, and bounces are reaching listmonk's analytics.

  5. Import subscribers and rebuild lists and segments

    Import the cleaned file through listmonk's import process, mapping columns to subscriber fields and assigning each group to the lists you created in the earlier steps. For large files, the import runs in the background, so check the progress and error output instead of assuming success. Recreate any segments you still need using listmonk's SQL query support, and check that single and double opt-in settings match the consent basis you recorded. Done means subscriber counts per list match the export, and a sample of records shows the correct status and opt-in state.

  6. Rebuild templates and run a test send

    Recreate your newsletter template in listmonk's template editor, which supports raw HTML, Markdown and plain text alongside its builder, and add the unsubscribe and address footer your jurisdiction requires. Send test campaigns to internal addresses across several mail clients and to a seed list, then review rendering, links and the unsubscribe flow. Done means a signed-off test message renders correctly, the unsubscribe link removes the tester from the list, and the campaign appears in analytics.

  7. Plan the cutover and archive redirects

    Choose a cutover date with the editorial team, then send the first listmonk campaign from the new domain and tell readers where future issues will come from. Your Substack archive stays on Substack unless you move it separately, so decide whether to keep the old posts online, export them, or set redirects from the old addresses to a new archive. Keep Substack running until the paid and free transitions are complete. Done means the cutover is recorded, the redirect plan is written down, and the old Substack sending is paused or stopped on an agreed date.

What Substack does that listmonk does not, and when that does not matter

Substack offers three things that listmonk does not: built-in paid subscriptions, a hosted archive of past issues, and a discovery network where readers find new publications through recommendations and browsing. listmonk is a one-way mailing list and newsletter manager. It sends campaigns, manages single and double opt-in lists and reports on campaigns, bounces and links, but it does not take payments or run a public storefront. If your publication earns money from paid tiers, the first decision is where those payments will be collected. Paid subscriptions in listmonk require a separate billing system, such as a payment processor with your own checkout and access control, and you must build and maintain that integration yourself. Confirm the payment and access options with the listmonk documentation before you commit.

The hosted archive and discovery matter less than they seem for many owned lists. An archive in listmonk is a public page you can host on your own domain, and it is only as discoverable as the links and search engine indexing you configure. Substack's recommendation network can bring in readers you would not reach otherwise, but it works through Substack's own audience and rules, which you cannot control. For an owned list with a known audience, internal updates, or customer communications, these features add little. Readers already subscribed, they expect messages from a known sender, and they want a reliable inbox delivery. Growth through referrals, your website, or events is typically the path for such lists, so plan those channels instead of relying on discovery.

Before you migrate, list each Substack feature your publication actually uses in the last twelve months, including paid tiers, comment threads, and referral traffic from Substack's network. Check how many of your readers arrived through discovery and whether any paying members depend on Substack's checkout. If those numbers are small or zero, listmonk's lists, templates, and analytics may cover your needs. If they are large, the gap is a business decision, and a self-hosted option that includes paid subscriptions may fit better. Ask your implementation partner to document this inventory in the written scope so the cutover plan reflects what your readers and members rely on.

Questions buyers ask before switching from Substack to listmonk

Can listmonk take paid subscriptions like Substack does?

No. listmonk is a one-way mailing list and newsletter manager, so it does not take payments, manage paid tiers or handle subscription billing. If your Substack revenue comes from paid subscriptions, listmonk does not replace that part of the business on its own. You would need a separate payment and membership layer, or you would keep paid content on a platform built for it. Ask any vendor or integrator to show exactly how billing, renewals, refunds and member access would work before you commit. Treat free newsletters and paid memberships as two different decisions.

What does a Substack to listmonk move need from our team?

The main work is moving subscribers, rebuilding templates and setting up sending, not moving posts. Your team needs someone who can run a PostgreSQL database and a container or binary service, someone who owns the SMTP relationship and sending domain, and an editor who can rebuild your newsletter layout in listmonk's template builder. Subscriber exports from Substack should be checked for consent records before import, and single or double opt-in settings should be chosen deliberately. Plan for ongoing ownership of uptime, backups and bounce handling, which Substack previously carried for you.

How long does the move take, and what makes it longer?

The duration depends on the size of your list, how many template variations you need, how much of the sending setup is new, and how carefully consent is checked. Smaller lists with one newsletter layout are simpler than large lists with multiple segments and custom footers. Subscriber import is handled through listmonk's import tools, and the Substack export is one input among several. Ask any implementation partner for a written scope that lists each stage, the open questions about consent and sending domains, and the acceptance checks before the cutover date.

Can we run listmonk ourselves, or do we need outside help?

Many small teams can run listmonk themselves if they already operate PostgreSQL and a Docker or Linux service, because the project ships as a single binary with PostgreSQL as its only dependency and publishes a sample docker-compose.yml. Outside help is more useful for the parts that are easy to get wrong: consent evidence, SMTP and DNS configuration, backup and restore tests, and single sign-on for staff access. Check whether your team has someone who can own these tasks after go-live. If not, a retainer for upgrades and support can be scoped alongside the initial setup.

How much does deliverability depend on our SMTP provider and domain setup?

Deliverability depends heavily on the SMTP provider, the sending domain, and how the domain authenticates mail. listmonk sends through one or more SMTP servers with rate limiting, so the provider's reputation, sending limits and bounce handling all affect results. You control the SPF, DKIM and DMARC records, the bounce processing and the sending rate. Substack handled these for you under its own infrastructure, so this is a responsibility you take on. Confirm with your provider which authentication records and bounce feedback they require, and test with a small segment before moving the full list.

What happens to our archive and existing subscribers?

Subscribers can be moved into listmonk as lists, but the public archive does not move automatically. Substack hosts past posts and the archive page, so you need to decide where your archive will live and how readers reach it, whether on your own website or another self-hosted publishing tool. Redirects from old Substack links should be planned before cutover. For subscribers, confirm consent status, opt-in history and unsubscribe handling in the export, and keep records of how each address was collected, because an import without that evidence weakens your position later.

When does staying on Substack make more sense?

Stay on Substack if discovery matters more to you than ownership, if you rely on paid subscriptions, or if you do not have anyone who can own sending infrastructure. Substack's recommendations and network effects are its main advantage and listmonk offers none. If your need is simply to send a newsletter to an owned list with your own sending provider, reporting and segments, listmonk fits that narrower scope well. Write down what Substack gives you today, then check each item against listmonk and against the operating work you would take on, before deciding.

How DeployOpen helps you evaluate and move a list off Substack

DeployOpen plans, implements and supports self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For Substack vs listmonk, we start with what your list needs from a newsletter tool and what you would give up by leaving Substack, then build the listmonk environment around that answer.

How we scope

  • Inventory your lists, subscriber counts, opt-in records and the sending domain you plan to use.
  • Confirm which Substack features you rely on, including paid subscriptions, archive and discovery.
  • Agree the scope, deliverables and timeline in writing before any work starts; engagements are fixed-scope.
  • Confirm with your email provider the SMTP limits, sending rates and bounce handling you will need.

How we build

  • Deploy listmonk with PostgreSQL in your own infrastructure, using the project's published Docker image as a starting point.
  • Configure lists, single or double opt-in forms, segments and templates to match your existing newsletter.
  • Set up SMTP servers, rate limits, bounce processing and analytics, then test deliverability with seed accounts.
  • Harden access with single sign-on, roles and API tokens, and document the configuration for your team.

How we hand over

  • Deliver the written configuration, runbooks for sending, and a record of tests run against the agreed scope.
  • Walk your editors and operators through campaign creation, segmentation and reporting in listmonk.
  • Document the subscriber export and data ownership steps so the list stays under your control.
  • Provide a clear list of what the platform does not cover, such as paid memberships, which remain outside this build.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers after handover.
  • Upgrades to new listmonk releases are planned and tested against your configuration before rollout.
  • Backups of the PostgreSQL database and configuration are set up as part of the agreed scope.
  • Ask for a written quote that lists each component, what recurs, and who pays for hosting and email delivery.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.