Open-Source Waitlist & Newsletter Software: A Practical Guide
Open-source tools for collecting emails, running waitlists, and sending newsletters have matured. You can deploy a minimal pre-launch form in minutes, then graduate to high-throughput sending or full marketing automation—while keeping ownership of your data and stack. This guide profiles the most capable projects, how they differ, and how to combine them into a reliable pipeline.
Core newsletter platforms (self-hosted)
These are production-grade systems for subscriber management, segmentation, templating, and delivery reporting.
Project | Stack | License | Notable strengths | Typical use |
---|---|---|---|---|
Listmonk | Go + Postgres | AGPL-3.0 | High throughput, single binary, SQL segmentation, APIs/webhooks | Scalable sending with low ops |
Keila | Elixir | AGPL-3.0 | Visual block editor + Markdown/MJML, double opt-in, bounce/complaint handling, captcha options | Creator-friendly newsletter UX |
Mailtrain v2 | Node.js + MySQL/MariaDB | GPL-3.0 | Ships with Zone-MTA, MJML templates, granular permissions/namespaces | All-in-one self-hosting (including MTA) |
SendPortal | Laravel/PHP | MIT | Workspaces, campaign tracking, SES/Mailgun/Postmark/Sendgrid/Mailjet integrations | PHP/Laravel shops wanting permissive licensing |
Ghost | Node.js | MIT | Publishing + memberships + newsletters, labels/tiers, strong editor | Content-led brands/publications |
Mautic | PHP | GPL-3.0 | Marketing automation, visual campaigns, scoring, forms/landing pages | Complex lifecycle and multi-step nurturing |
Selection notes
- Choose Listmonk when high performance and minimal infrastructure are priorities.
- Choose Keila for an approachable UI and solid deliverability fundamentals without heavy automation.
- Choose Mailtrain v2 if you prefer bundled MTA and multi-user controls on premises.
- Choose SendPortal for Laravel alignment and a permissive license.
- Choose Ghost when your newsletter is an extension of a publication or membership site.
- Choose Mautic if you require campaign graphs, lead scoring, and advanced segmentation beyond standard newsletters.
Lightweight waitlist builders (prelaunch)
Designed to get a credible “join the waitlist” page live quickly.
- Quick Waitlist (Next.js + Resend): one-click deploy, React Email templates, straightforward branding and validation.
- Waitlist Kit (Supabase + Vercel): Postgres + Auth foundation, easy CSV export, cohort gating.
- Next.js + Notion Waitlist Template: Notion for copy, API route for form handling, optional Redis-based rate limiting, Resend for confirmations.
- Makerkit Waitlist Plugin (for Next.js SaaS Starter): drop-in module if you already use Makerkit; consistent design system and auth.
How teams use these: capture emails immediately; store minimal fields (email, consent, source). Later, push contacts to a newsletter engine (Listmonk/Keila/Ghost/Mautic) via API for sending and segmentation.
Referral-capable waitlists (positioning and sharing)
- MERN Realtime Wait-list: queue position plus unique referral links; users advance when referrals sign up.
- Viral Waitlist API (headless): endpoints for add/confirm/attribute/position; you bring UI, rate limits, and disposable-email filtering.
Operational advice: keep confirmations double opt-in; enforce rate limits by IP/ASN; throttle “you moved up” messages to protect sender reputation.
Operational queue waitlists (venues and services)
- Line Me Up (Supabase + React): self-service queue for restaurants/retail; notifications and status tracking.
- Queue-Smart (QR-based, MIT): lightweight, QR-first digital queue for small events or clinics.
These target day-of operations rather than prelaunch marketing.
Minimalist, DB-scheduled waitlist/newsletter system: waitlist.onl and Antibody/waitlist-node-js
For teams preferring a small, readable codebase with strong database primitives:
- waitlist.onl provides a public demo and documentation of a minimal waitlist/newsletter sign-up.
Antibody/waitlist-node-js
is the companion open-source implementation (Node.js + Express) using Supabase for storage/auth and Resend for email. A key design choice is database-native scheduling via pg_cron + pg_net:- Postgres invokes a protected HTTP endpoint on a fixed schedule (bearer token).
- The app stores a canonical launch date and sends one reminder post-launch to contacts with
reminder_sent=false
. - Admin access is session-guarded; the allowed admin email is configured explicitly.
- CSV export and a manual-send path are included.
This approach removes the need for an external job runner while keeping the code path for reminders transparent and auditable.
Integration patterns (recommended)
- Data flow: Waitlist form → Supabase (
email
,consent_ts
,ip
,source
) → push to Listmonk/Keila via API (tags likesource=waitlist
,cohort=beta-1
) → send confirmations from the newsletter engine or transactional provider (Resend/SES). - Double opt-in: Always confirm subscriptions; record
consent_ts
,consent_ip
, and method. This protects deliverability and compliance. - Suppression lists: Centralize bounces/complaints/unsubscribes in the sending system; prevent re-imports from re-opting suppressed addresses.
- Referrals: Enforce IP/ASN throttles, cap daily referral emails per user, and filter disposable domains. Keep the referral loop secondary to consent quality.
- Post-launch migration: Export waitlist CSV with custom fields (join date, referral count). Import to Listmonk/Keila/Mautic, preserving tags and consent metadata.
Deliverability and compliance (essentials)
- Authentication: configure SPF, DKIM, and DMARC for the sending domain before any bulk sends.
- Warm-up: start with low-volume, engaged segments; increase gradually.
- List hygiene: prune hard bounces and repeated soft bounces; process feedback loop complaints immediately.
- Segmentation: engage recent signups separately from older or inactive cohorts.
- Unsubscribe: single-click link, visible footer placement, immediate suppression.
Deployment notes
- Separation of concerns: host the waitlist/front-end on an edge platform (e.g., Vercel); run your newsletter engine (Listmonk/Keila/Mautic) in a container environment (e.g., Fly.io/Render/Cloud Run/Docker on VPS).
- Secrets: keep SMTP/API keys server-side; avoid client-side validation of provider keys. If validation UX is required, proxy via short-lived tokens.
- Observability: log signups per channel, send rates, bounce/complaint counts, and unsubscribe rates. Track template performance over time.
Recommended starting points
- Fastest path to production: a Next.js waitlist template (Quick Waitlist or Waitlist Kit) + double opt-in + Listmonk for sending.
- Content-centric teams: Ghost with member labels/tiers; optional handoff to Listmonk/Keila if you outgrow the built-in mailer.
- Automation-heavy funnels: Mautic with clear ownership of consent and suppression.
- Small, auditable footprint:
waitlist-node-js
withpg_cron
/pg_net
scheduling; later, hand off bulk sending to Listmonk/Keila.
Open-source waitlist and newsletter tools cover the full lifecycle: capture interest, confirm consent, engage at scale, and automate when needed—all under your control. Start with a minimal form and clean consent records; add a dedicated newsletter engine as the list grows; adopt automation only when it’s justified by workflow complexity. The projects above are stable choices with clear integration paths and predictable operations.