SMF·EMAILOCTOPUS
Can a prompt replace EmailOctopus?
Newsletters & publishing — email newsletters and creator publishing
Exhibit tracking slip
Verdict
EmailOctopus is the one product in this category where the DIY version has the same architecture as the paid one: it is a friendly interface on top of Amazon SES, and so is anything you would build. That makes the code side genuinely reachable in a weekend. What you take on is list hygiene — the unglamorous work of removing people who never open, before their inactivity drags your complaint rate and your sender reputation down with it.
Exhibit A — The prompt
Received on31.07.2026Build a newsletter sender on Amazon SES whose distinguishing feature is automated list hygiene.
Subscribers: import CSV requiring a consent source and a consent timestamp per row — refuse rows without them, because a list you cannot substantiate is the reason sends get blocked. Double opt-in with a confirmation email. One-click unsubscribe including the List-Unsubscribe and List-Unsubscribe-Post headers. A suppression list checked at send time that nothing can bypass.
Campaigns: a Markdown editor producing both an HTML and a plain-text part from the same source, with a preview of each. Inline CSS at send time. Test send to a seed address list.
Sending: queue through SES respecting the account's real send rate, with retries and exponential backoff, per-recipient idempotency, and resumable batches so an interruption does not double-deliver. Process delivery, bounce and complaint notifications from SNS. Remove hard bounces immediately; count soft bounces and remove after a threshold. Halt a send automatically if the complaint rate crosses 0.1 percent mid-campaign — SES will suspend the account above 0.5 percent, and stopping early is the difference between a bad campaign and a dead account.
List hygiene, which is the point of this build:
- Track per-subscriber engagement: last open, last click, campaigns sent since last engagement.
- A sunset policy the user configures: after N consecutive campaigns with no open or click, move the subscriber to an at-risk segment.
- An automatic re-engagement campaign to the at-risk segment, sent once, with a one-click stay-subscribed link.
- Anyone who does not respond to the re-engagement email is unsubscribed automatically, with the reason recorded.
Show the effect openly on the dashboard: list size, engaged share, at-risk share, and complaint and bounce rates over the last ten campaigns. A list that only ever grows is a list heading for a deliverability problem, and the interface should make that visible rather than celebrate the subscriber count.
Cost visibility: show SES spend for the month and cost per campaign, since the entire reason to run this is that the arithmetic is different.
Setup: the README must walk through SES production access, verified identities, SPF, DKIM and DMARC, and state that a new domain needs weeks of gradually increasing volume before large sends land reliably.
Out of scope: multi-step automation journeys, landing pages, hosted signup forms, and ecommerce integrations.
Opening prefills the prompt — press enter to run it.
Exhibit B — What you lose
- B.1 the sending reputation, built over months on somebody else's IP pool
- B.2 the automation sequences beyond a simple welcome series
- B.3 landing pages and hosted signup forms
- B.4 somebody to ask when a send goes to spam
Prior art
Exhibit C — Why people still pay: deliverability, growth network, and integrations
Because the cheapest plan is nine dollars and the SES bill for the same volume is under one, which means the eight-dollar difference is entirely support, forms and not thinking about deliverability. For many people that is a fair price.
Questions
Can I import my EmailOctopus list?
Yes, and cleanly — the CSV export includes the subscription date and source, which is exactly what this build requires on import. Campaign history and per-subscriber engagement do not export, so the sunset policy starts with no history and needs a few campaigns before it acts.
Why build sunsetting in rather than adding it later?
Because an unengaged list is the most common reason a self-hosted sender starts landing in spam, and by the time you notice, the reputation damage takes months to undo. Removing people who stopped reading is unpleasant and it is the single highest-leverage thing this build does.
What does it cost to run?
SES is ten cents per thousand emails. A list of 5,000 sent weekly is roughly two dollars a month, plus a small VPS. That is the real arithmetic behind this whole category, and it is why EmailOctopus can charge nine dollars for what others charge fifty.
What is the one thing that does not survive the rebuild?
Somebody else's reputation. EmailOctopus sends from pools warmed by thousands of senders; your fresh domain starts at zero and will land in spam for a share of recipients for weeks. No configuration fixes that — only sending well, slowly, for a long time.
Related tools
Receipt