The parts of Kit you touch every week are ordinary web software: a signup form with double opt-in, tags, a broadcast editor, timed sequences and an unsubscribe link. An agent builds that in a weekend on SQLite plus a sending service such as Amazon SES. The gap is everything around the sending: a reputation that lands mail in the inbox, the visual automation builder, landing pages, the recommendation network between creators and built-in product sales. Kit's free plan already covers broadcasts up to 10,000 subscribers, so a DIY version mostly replaces the sequences you pay Creator for.
Before you buildIf you only send newsletters and never use sequences, Kit's free plan already covers up to 10,000 subscribers.
Build me a self-hosted email list tool to replace Kit (ConvertKit). Requirements: - Node.js 22 + TypeScript, Fastify with server-rendered eta templates. Admin on http://localhost:4800 behind a password from .env. - Storage: better-sqlite3 in ./data/list.db: subscribers (email, first name, status, tags, custom fields as JSON, source, created_at), broadcasts, sequences, sends and clicks. - Signup: an embeddable HTML form and a hosted /join page; double opt-in with a confirm link; a honeypot field and a per-IP rate limit against bot signups. - Broadcasts: Markdown rendered with `marked` and CSS inlined with `juice`; send to everyone, to a tag, or to everyone except a tag; preview and test send first. - Sequences: emails with day offsets that start when a tag is added. A node-cron job runs every minute, sends what is due and records each send once. - Send through SMTP with `nodemailer` (Amazon SES, Postmark or Resend credentials in .env), throttled to a rate set in .env. Every email carries a List-Unsubscribe header and a one-click unsubscribe link. - Click tracking through /c/:id redirects; open tracking stays off. - CSV import with a column-mapping preview (it must accept a Kit subscriber export) and CSV export of any tag. - Single user, no telemetry; all data in the one SQLite file. - Out of scope: a visual automation builder, landing page design, selling products. - README: SPF, DKIM and DMARC records for my domain, requesting SES production access (budget a day for approval), and running it on a $5 VPS behind Caddy.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Kit (formerly ConvertKit).
Add bounce and complaint handling to the email list tool in this folder. Requirements: - An endpoint /webhooks/ses that accepts Amazon SNS notifications, verifies the SNS signature and confirms the subscription automatically. - Hard bounces and complaints mark the subscriber as suppressed; soft bounces count up and suppress after 3 in 30 days. - Suppressed addresses are skipped by broadcasts and sequences and shown in a Suppressed tab with the reason and date. - Update the README with the SES configuration-set and SNS topic steps.
Add RSS-to-email to the email list tool in this folder. Requirements: - Settings for a feed URL, a tag to send to, and a schedule (every new post, or a weekly digest on a chosen day and hour). - Parse the feed with rss-parser, remember which items were sent, and build the email from a Markdown template with the title, summary and link of each item. - Show the next scheduled send with a preview, and never send the same item twice. - Update the README.
Add a paid subscription tier to the email list tool in this folder. Requirements: - A /upgrade page that opens Stripe Checkout for a monthly price; keys and price id in .env. - The checkout.session.completed and customer.subscription.deleted webhooks add or remove the tag `paid` on the subscriber with that email. - Broadcasts can target the paid tag only; each paid email links to the Stripe customer portal for cancelling. - Update the README with testing through the Stripe CLI.
Creators pay so that email simply arrives: Kit deals with bounces, complaints and inbox placement, and the forms, automations and integrations work without touching DNS or a server. Once a list, its tags and years of sequences live there, moving is a project of its own, and the generous free plan means smaller lists rarely need to move at all.
Estimate · Amazon SES charges $0.10 per 1,000 emails, so 1,000 subscribers and eight sends a month cost under a dollar. A small VPS adds about $5. The build is token usage on your agent plan.
Checked 2026-10-13 against Kit (formerly ConvertKit)'s docs: 1, 2, 3, 4
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | Up to 10,000 subscribers, 1 user, unlimited broadcasts, forms and landing pages, tagging and segments, digital product sales. |
| Creator | $39 | $32.50 | Priced for 1,000 subscribers; on monthly billing 3,000 is $59, 5,000 is $89 and 10,000 is $139. Unlimited automations and sequences, SMS, RSS campaigns, integrations, no Kit branding. |
| Pro | $79 | $66 | Priced for 1,000 subscribers. Adds unlimited users, engagement scoring, deliverability reporting, the newsletter referral system and A/B tests on content. |
Not answered here? Tell us and we'll add it.
Ask a question ›The free plan covers up to 10,000 subscribers with unlimited broadcasts, forms and landing pages, but no automations or sequences.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Kit's sending reputation and deliverability monitoring, The visual automation builder and ready-made templates.
About $39 a month on the Creator plan, $468 a year (checked 2026-10-13).
Kit's sending reputation and deliverability monitoring; The visual automation builder and ready-made templates; Landing pages and forms you design without code; Creator recommendations and the newsletter referral program; Selling digital products and paid newsletters with checkout built in. If any of those matter to you, keep paying.
Yes: listmonk (open source), Ghost (open source), Keila (open source).