An email marketing platform on your own servers — audiences, a block-based email builder, campaigns with open and click tracking, scheduling, and welcome automations — delivered through an engine that follows the rules for commercial email, with do-not-contact lists and polite sending speeds built in.
Every pillar was exercised end to end — campaigns actually composed, actually delivered as real email, opens and clicks actually recorded — before it counted as done.
CSV import with validation and dedupe, subscribe and unsubscribe state per contact, and audience management built for real, messy lists.
A block-based builder with merge tags and per-field defaults, live preview, and HTML that renders the way the preview promised.
Dry-run before you commit, then send with per-contact open and click tracking feeding a stats dashboard — every open and click recorded against its own unique code.
Schedule campaigns ahead and trigger welcome automations for new subscribers, both driven by a simple secured cron hook.
Delivery runs through a deliberately small, readable engine the campaign app drives as its worker. It works with any email-sending provider and refuses to make the mistakes that get senders marked as spam.
The web app owns the product surface — audiences, builder, stats. The mailer owns delivery and compliance. Keeping the delivery engine tiny and self-contained means the part that actually touches the outside world is small enough to review in one sitting.
Merge fields work across subject lines and both HTML and plain-text bodies, with per-field fallbacks so a missing first name never ships as an empty hole.
Every variable takes a fallback, so "Hi there" replaces "Hi ," automatically when a field is blank.
Merged values are HTML-escaped automatically — imported data can't inject markup into your campaign.
A designed version and a plain-text version ship together in each message, which keeps spam scores low and every inbox covered.
Status, stated honestly: the full pipeline — import, build, send, track, automate — is verified end to end in a controlled test environment. The remaining step to live campaigns is connecting a real sending account; the compliance machinery is already in the path.
Next.js + TypeScriptSynergyDBSelf-contained delivery engineOpen/click trackingScheduled automations