SynergyEmail
Campaigns without the Mailchimp bill.
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.
Four pillars, each verified with real sends
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.
👥Audiences & contacts
CSV import with validation and dedupe, subscribe and unsubscribe state per contact, and audience management built for real, messy lists.
🧱Email builder & templates
A block-based builder with merge tags and per-field defaults, live preview, and HTML that renders the way the preview promised.
📈Campaigns & tracking
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.
⏰Scheduling & automations
Schedule campaigns ahead and trigger welcome automations for new subscribers, both driven by a simple secured cron hook.
A mailer that treats compliance as a feature
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 legally required footer on every message: a physical postal address plus a working unsubscribe link — following the rules for commercial email
- One-click unsubscribe that Gmail and the other major inboxes recognize and honor
- A do-not-contact list checked on every single run — once someone opts out, no future campaign can reach them
- Sending speed is paced automatically so volume ramps politely instead of tripping provider limits
- Dry-run, test-send, and resume modes — an interrupted send picks up where it left off without double-sending
Why two layers?
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.
Personal at scale, safe by default
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.
🏷️Merge with defaults
Every variable takes a fallback, so "Hi there" replaces "Hi ," automatically when a field is blank.
🛡️Escaped by default
Merged values are HTML-escaped automatically — imported data can't inject markup into your campaign.
✉️Two versions every time
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.
How it's put together
- A modern web app for audiences, builder, campaigns, and stats
- Storage on SynergyDB — Synergy runs its own products on its own database
- Each send runs as its own job with its own list and template — an interrupted send restarts cleanly
Next.js + TypeScriptSynergyDBSelf-contained delivery engineOpen/click trackingScheduled automations