For multi-step flows, Mimeo is the listmonk alternative: powerful email automation you fully control, on your own server like listmonk. A flow starts on any event, such as a signup, a purchase or something in your app, and sends each person their own sequence. Your agent or your team runs it from an easy web UI, on one SQLite database, sending through your own Postmark or Resend account. If you want a free tool and don't need multi-step flows, listmonk is a good pick: it sends campaigns to whole lists, with no built-in sequences today.
At a glance
Mimeo runs multi-step flows on any event, from your agent or the dashboard, on one SQLite database; listmonk is free and sends campaigns to whole lists.
| Detail | Mimeo | listmonk |
|---|---|---|
| Automations | Flows on any event, sales included, with branches, waits and gates; sequences; dry run against a real personTested · · Flows, Sequences | None built in: campaigns and single transactional sends; no sequencesTested · · Feature request: automated email sequences (maintainer reply), Per-list welcome emails (closed by the maintainer) |
| Check before it sends | Validate, then a dry run for a real subscriber; test sendTested · · Flows, Emails | Campaign preview and test sendCampaigns API · |
| Checks as it sends | Guards check every email at the moment it sendsTested · · Guards | Skips people unsubscribed from the list; double opt-in lists send only to confirmed people; other send-time conditions not stated in its docsConcepts · |
| Agent access | HTTP API, MCP server at /mcp, CLI (bin/mimeo) | HTTP API; no official MCP server (a community one exists); no management CLIAPI, SDKs and libraries, Installation · |
| Runs on | A Rails app with one SQLite database, on your server | One Go binary plus PostgreSQL 12+Installation, Releases · |
| Sends through | Your own Postmark or Resend account | SMTP (Postmark preset and others); HTTP messengersTested · · listmonk.app |
| Signup forms | Your site, store or agent sends a signup eventTested · · Getting started | Hosted subscription form, single or double opt-inTested · · listmonk.app |
| Price | $499 once | Freelistmonk.app · |
| What the price includes | A year of support & updates, then $199/yr, optional; Mimeo keeps working if you cancel | Every release free; the project sells no hostinglistmonk.app · |
| What one license covers | One installation: one Mimeo on one domain, with one list | No license limit (AGPL-3.0)LICENSE (AGPL-3.0) · |
| Refund | 14-day money-back guarantee | Not applicable: freelistmonk.app · |
| Source license | Commercial license, bought once; not open source | AGPL-3.0, open sourceLICENSE (AGPL-3.0) · |
Where Mimeo is the better pick
Mimeo fits you when flows carry your email: any event can start one, each person gets their own sequence, and your agent or your team runs them. Dry runs and guards are how you stay in control of each change.
Multi-step flows on any event. A flow starts when any event arrives from your site, store or app, such as a signup or a purchase; any platform that can send a webhook can start one, sales included. It can wait, branch, tag people and start a sequence for that one person, each email on its own delay. People already on your list aren't swept in: in the test, 1 of 201 people entered the welcome flow, the one who signed up. listmonk has no built-in sequences today. Its maintainer wrote in December 2024 that "this level of automation is not planned for listmonk", and in July 2026 pointed to webhook work as the foundation for a welcome-email feature; that work was still unmerged on November 5, 2026, and the 7.0 beta's notes name no sequences. Need a direct integration with Shopify, Klaviyo or another store? Get in touch.


Your agent or your team, on the same flows. Your team works in the dashboard; your agent works on the same flows through Mimeo's HTTP API, its MCP server, or its CLI, which keeps flows and sequences as files and runs diff, validate, rehearse and apply, stopping at the first that fails. The validate and dry run below are two calls to the HTTP API, and the MCP server offers the dry run as a tool. listmonk gives an agent its HTTP API alone: no official MCP server (a community one exists) and no management CLI as of 6.2.0. Mimeo's checks are checks, not a lock: an operator token can still send.
One SQLite database, no database server. Mimeo runs as one app server with one SQLite database. listmonk needs a PostgreSQL 12 or newer server beside its binary.
Checks before and as it sends. Validate checks the flow, and a dry run walks it for one real person, saying what would happen and sending nothing. Once live, guards check each email again the moment it sends. listmonk's check is a preview and a test send of one campaign; a way to see who a send would reach, or when, is not stated in its docs, checked November 5, 2026.
{"valid": true, "errors": [], "warnings": []}
triggered: true
- Trigger matches — this event would start a run for randa.schamberger.0@example-seed.com
- Event is newsletter_signup [actual: newsletter_signup]
- **Would add the tag** newsletter
- **Would start** Welcome sequence (3 emails to send) and **wait here** until it finishes
- The rehearsal ends here. They would be standing at this step until Welcome sequence finishes, and a rehearsal can't fast-forward a sequence.One welcome sequence, run in both
Mimeo sent all three welcome emails on their days; listmonk sent email 1 and had no way to send emails 2 and 3.
The test: a new signup gets email 1 at once, email 2 a day later and email 3 three days after that; an earlier subscriber gets none of it. Both sent through Postmark's test token, which delivers nothing.
| Step | Mimeo 0.3.4 | listmonk 6.2.0 |
|---|---|---|
| Signup | An event from your site or agent | Hosted subscription form or API |
| Email 1 (day 0) | Sent by the sequence | Only as a campaign to the whole list, or a transactional send you trigger |
| Emails 2 and 3 (days 1, 4) | Queued at signup; sent when due | No way to schedule per subscriber |
| Earlier subscriber | Not enrolled | Got the welcome campaign |
| Check before going live | Validate and a dry run for a real person | Test send of a campaign |
| What else you run for emails 2 and 3 | Nothing: Mimeo's own jobs send them | Your own scheduler calling its API |
Mimeo: three emails queued at signup. The signup arrived as an event. Mimeo queued all three emails, each with its due time, and sent each when due. Days 1 and 4 were reached by moving the due times into the past.
879 pending due 2026-11-02 15:50:29Z Welcome 1 of 3
880 pending due 2026-11-03 15:50:29Z Welcome 2 of 3
881 pending due 2026-11-06 15:50:29Z Welcome 3 of 3
Welcome 1 of 3 accepted postmark fd8851de-1d4b-4045-9336-772f1f9d2a7c 15:51:00Z
Welcome 2 of 3 accepted postmark 054996f8-4aa8-4751-9f7b-8c32880ae874 15:52:00Z
Welcome 3 of 3 accepted postmark 9f3555ed-0a29-4de3-a828-89a46be9c6e9 15:53:00Z
sequence run: completed 15:53:00Z
flow runs for newsletter_welcome: 1 of 201 people
listmonk, route 1: a campaign. A campaign goes to everyone on its lists at one time, so the welcome reached the earlier subscriber too.
$ curl -X POST /api/campaigns -d '{"name":"Welcome 1 of 3","subject":"Welcome to the newsletter","lists":[3],…}'
{"data":{"id":2,"name":"Welcome 1 of 3","status":"draft",…}}
$ curl -X PUT /api/campaigns/2/status -d '{"status":"running"}'
→ status finished, sent 2, to_send 2
15:33:01Z to=longtime@example.com subject='Welcome to the newsletter' 200 Test job accepted 6c98073b-…
15:33:01Z to=ada@example.com subject='Welcome to the newsletter' 200 Test job accepted dbdecb76-…

listmonk, route 2: a transactional send. It sends one email to one subscriber at once. A send_at field was accepted and ignored: the email went out three seconds later, not the next day.
$ curl -X POST /api/tx -d '{"subscriber_email":"lin@example.com","template_id":5}'
{"data":true}
15:33:13Z to=lin@example.com subject='Welcome 1 of 3' 200 Test job accepted 8b8a91c4-…
$ curl -X POST /api/tx -d '{"subscriber_email":"lin@example.com","template_id":5,"send_at":"2026-11-03T15:00:00Z"}'
{"data":true}
15:33:16Z to=lin@example.com subject='Welcome 1 of 3' 200 Test job accepted edad9417-…Emails 2 and 3 in listmonk: not sent. Nothing in listmonk sends an email to one subscriber a day after they join. To finish the sequence you would write and host your own scheduler that tracks who is at which step and calls the transactional API on days 1 and 4.
Where listmonk is the better pick
If you want a free tool and don't need multi-step flows, listmonk is a good pick: campaigns to whole lists at no license cost, with a signup form built in.
It's free and open source. listmonk is licensed under AGPL-3.0 and every release is free. Owning the server is a tie: both run on yours. The free license covers campaigns; sequences are a scheduler you build and run yourself.
It installs fast, with a signup form built in. listmonk is one Go binary plus PostgreSQL 12 or newer; in the test it installed in 2.3 seconds and idled at 43 MB, plus 43 MB for PostgreSQL. It serves a subscription form for your public lists, and a double opt-in list sends its own confirmation email. In Mimeo, your site or agent sends each signup as an event, and that same event can start a flow.

It sends through any SMTP server, with presets for Gmail, Mailgun, Sendgrid, Postmark and others. Mimeo sends through your own Postmark or Resend account.
Which one fits you
Pick by what you send: flows that start for each person on any event, or campaigns to whole lists.
Choose Mimeo if
- You need multi-step flows, such as a welcome or onboarding sequence for each new subscriber.
- Any event should start them: a signup, a purchase, something in your app.
- Your agent and your team should work on the same flows, through the API, MCP, CLI or dashboard.
- You'd rather run one SQLite database than a PostgreSQL server.
- You want to rehearse a flow for a real subscriber before it sends.
Choose listmonk if
- Newsletters to whole lists are all you send, and you don't need multi-step flows.
- You want free, open-source software.
- You want a signup form built in, with double opt-in.
- You want to send through any SMTP server.
Stay with listmonk if campaigns are all you send and you don't need multi-step flows.
Moving from listmonk to Mimeo
Moving gives you flows on any event, each person on their own sequence, run from your agent or the dashboard. The work is an export per list, an import that brings opt-outs across first, and rebuilding your emails.
1Export each list, and your opt-outs, from listmonk
listmonk's subscriber export is a CSV with uuid, email, name, attributes, status, created_at and updated_at. It has no column for which lists someone is on, so export one file per list, filtered by list. On a single opt-in list, a form signup can show as unconfirmed and still get campaigns (it did in the test), so don't filter those lists to confirmed only. Then export one more file: everyone unsubscribed from a list, plus everyone whose status is blocklisted. Split the attributes column into the custom fields you want.
2Import the opt-out file first
Import it with Import everyone as already unsubscribed turned on. This step matters: Mimeo reads unsubscribed as an opt-out, but it imports any other word, blocklisted included, as subscribed, and the report shows no error. Then import each list file, adding a tag for its listmonk list with Tags to add to every row; Mimeo holds one list, and tags and segments split it. An import never resubscribes anyone and triggers no automation by default. CSV import has every option; Migrate from Mailchimp or Kit walks through a full move.
3Rebuild your emails, and add the sequences
Rebuild listmonk campaigns as Mimeo broadcasts. Rebuild anything you scheduled yourself, such as a welcome, as a sequence started by a flow, or have your agent write them as files.
4Connect sending
Connect Postmark or Resend in Mimeo's settings.
5Point your signups at Mimeo
listmonk's subscription form doesn't move. Have your site's form, or your agent, send each signup to Mimeo's event API, and your store its purchases by webhook.
6Check, then cut over
Validate each flow, dry-run it for a real person and send yourself a test. When listmonk's last campaign has gone out, stop sending from it.
What it costs: the license is $499 once, with a year of support & updates from the people who build Mimeo, then $199 a year if you keep them; stop renewing and your version keeps working. Your server and sending provider are separate. If you'd rather not do it yourself, we offer Setup & Launch at $999 flat, or $1,399 with the license, which includes importing your list.
Limits
This compares one test install of each tool, not production use.
Both ran on November 2, 2026 with Postmark's test token, so no email was delivered; delivery, bounces and webhooks weren't tested. Days 1 and 4 were reached by moving times forward in each database. The listmonk 7.0 beta wasn't tested. listmonk's export and test send, and importing a listmonk file into Mimeo, are taken from their docs and code, not run.
Questions
Short answers to what buyers ask most.
Can listmonk send a welcome sequence?
Not built in today. In a test of listmonk 6.2.0 it sent email 1 and had no way to send emails 2 and 3 later; that takes your own scheduler calling its API.
Can an AI agent run listmonk?
Through its HTTP API. listmonk ships no official MCP server (a community one exists) and no management CLI. Mimeo has an API, an MCP server and a CLI.
Is Mimeo worth paying for when listmonk is free?
It depends on what you send. If you want a free tool and don't need multi-step flows, listmonk is a good pick. For welcome sequences and flows on any event, listmonk has none built in today. Mimeo is $499 once, with a year of support & updates. It runs those flows for each person, your agent or your team can change them, and dry runs and guards check them.
How do signups reach Mimeo?
As events. Your site, store or agent sends each signup to Mimeo, through the event API or by webhook, and a flow can start from it.
- Test installs of listmonk 6.2.0 and Mimeo 0.3.4, run by Mimeo (output and screens on this page). Run .
- listmonk.app. Checked .
- LICENSE (AGPL-3.0). Checked .
- Concepts. Checked .
- Releases. Checked .
- Feature request: automated email sequences (maintainer reply). Checked .
- Per-list welcome emails (closed by the maintainer). Checked .
- API. Checked .
- Campaigns API. Checked .
- Subscriber export (v6.2.0 source). Checked .
- Installation. Checked .
- SDKs and libraries. Checked .
- Flows. Checked .
- Sequences. Checked .
- Deploy Mimeo. Checked .
- Sending providers. Checked .
- API. Checked .
- MCP. Checked .
- CLI. Checked .
We make Mimeo. We check every claim against the competitor's own pages and update this page when they change.