← Ecosystem

JoeSMTP

joesmtp.it in production

A self-service email and SMS marketing platform, built as a JoeCMS module: contacts, campaigns, automations, forms, a public API and an SMTP gateway.

The problem

Anyone who writes to their customers faces two extremes: commercial platforms that are powerful but expensive, priced on the number of stored contacts, or home-made scripts that work until unsubscribes, bounces and sender reputation show up.

JoeSMTP sits in between: a complete panel with prepaid credits instead of a per-contact subscription, and the freedom to switch sending provider without users noticing.

How it works

Structure

Contacts per project with custom fields, static lists and rule-based segments recalculated at every send. Email and SMS campaigns with a visual editor and merge fields, automations with triggers, delays, quiet hours and an exit event, embeddable signup forms with double opt-in.

Usage flow

A campaign goes through a step-by-step wizard: details, recipients, content, header and footer, send now or schedule. The credit cost is frozen at creation, so a price change never rewrites history; credits are spent in batches that expire.

Technical choices

No provider is hard-wired: one adapter per provider behind a shared interface, resolved in cascade from project, system default and configuration. Switching provider is a choice in a panel, not a deploy. Deliveries, opens, clicks and bounces arrive by webhook in a single events table.

Known limits

Provider constraints show up once the integration is done: one SMS adapter is complete but stays off until the provider enables the account. Deploys are manual, so the code checks the schema before reading a new column.

Numbers

Service endpoints 96
Panel pages 35
Public API endpoints 8
Integrated sending providers 6
Versioned migrations 38
Cron jobs in production 6

Stack

  • PHP
  • MySQL
  • JoeCMS
  • JavaScript
  • Haraka (SMTP)
  • OpenAPI
Screenshot of JoeSMTP