marketing-content
Kit logo

Should I self-host Kit?

YESworth it

Kit (ConvertKit) at $39/mo for 1k subscribers is the classic listmonk win: campaigns, sequences and segmentation from a two-container setup verified on this scoreboard, plus an SES account measured in cents.

The math (nothing hidden, including your time)

Kit (Creator)$39.00/mo
VPS share + storage−$0.50/mo
Your maintenance: 30 min/mo at $20/h−$10.00/mo
Net saving$28.50/mo
Setup: 40 min measured (one-time)$13.33
Break-even0.5 months
Markup Index (price ÷ real self-host cost)3.7×

Price: source, checked 2026-08-06. Inputs are stored in git; every number above is derived, never hand-written.

What you lose

  • Kit's creator-network recommendations engine
  • Landing pages and commerce come from elsewhere in your stack

What you're paying Kit for

  • email campaigns
  • subscriber segmentation
  • automation sequences
  • landing forms
Keila running from the boot-verified compose file
Keila, running from the compose file on this page — screenshot from our verified instance, not marketing material.

Ranked alternatives

Signup forms, contacts and campaigns out of one Elixir release and one PostgreSQL, with the sending handed to an SMTP relay you pick.

pentacent/keila · ★ 2,182 · last commit 10d ago · AGPL-3.0

Your mailing list, your campaigns and your click stats out of one Go binary, with the sending handed to an SMTP relay you pick.

knadh/listmonk · ★ 22,699 · last commit 0d ago · AGPL-3.0

Hardware

Runs comfortably on a real VPS (2 GB+).

The tested compose file (our evidence, CI-booted)

# listmonk — newsletter + mailing lists (replaces Mailchimp's list half; you still need an
# SMTP relay like SES/Postmark for deliverability — that cost is in the verdict math notes)
services:
  listmonk:
    image: listmonk/listmonk:latest
    container_name: listmonk
    restart: unless-stopped
    depends_on:
      listmonk-db:
        condition: service_healthy
    command: [sh, -c, "./listmonk --install --idempotent --yes && ./listmonk"]
    environment:
      LISTMONK_app__address: 0.0.0.0:9000
      LISTMONK_db__host: listmonk-db
      LISTMONK_db__port: "5432"
      LISTMONK_db__user: listmonk
      LISTMONK_db__password: listmonk
      LISTMONK_db__database: listmonk
      LISTMONK_db__ssl_mode: disable
    ports:
      - "9000:9000"
    healthcheck:
      test: ["CMD-SHELL", "wget -qO- http://localhost:9000/health >/dev/null || exit 1"]
      interval: 5s
      timeout: 5s
      retries: 24
      start_period: 20s

  listmonk-db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: listmonk
      POSTGRES_PASSWORD: listmonk
      POSTGRES_DB: listmonk
    volumes:
      - listmonk-pg:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U listmonk"]
      interval: 5s
      timeout: 5s
      retries: 12

volumes:
  listmonk-pg:

Want a guided install instead? caniselfhostit.com/kit has AI-agent prompts that assume a bare machine — that's their half of the stool, and it's good.

Verification

Protocol v1 · verified by zernonia on 2026-08-10 · setup measured at 40 min · AI assistant: claude-code (allowed & stated)

Full timed log
# Kit — verdict log

- **Date:** 2026-08-10
- **Verdict:** YES — worth it
- **Protocol:** v1 (2GB reference env, Docker preinstalled, AI assistant: claude-code)

## Setup evidence (shared)

- This verdict rides on the same replacement verified for `mailchimp-listmonk` — see `compose/mailchimp-listmonk.yml` and its log.

## The call

Kit (ConvertKit) at $39/mo for 1k subscribers is the classic listmonk win: campaigns, sequences and segmentation from a two-container setup verified on this scoreboard, plus an SES account measured in cents.

Verdict history

  • 2026-08-10: unscored → YES — Initial verdict: Kit (ConvertKit) at $39/mo for 1k subscribers is the classic listmonk win: campaigns, sequences and segmentati.