If you've ever priced out a "proper" email marketing platform once your list crossed a few thousand subscribers, you already know the punchline: the tools that started at $20/month suddenly want $150, $300, sometimes more - for the exact same features you were using when it was cheap. You don't own your list, you don't own your sending infrastructure, and you definitely don't own that monthly bill.
So I built Mailiva Pro - a self-hosted PHP email marketing platform you install once, on your own hosting, and never pay a recurring fee for again. This post walks through what it does, how it's built, and how to get it running.
Why Self-Hosted, Really?
"Self-hosted" gets thrown around a lot, so let's be concrete about what you actually get:
- Your subscriber list lives in your MySQL database - not locked inside someone else's platform
- You choose how emails get sent: your own SMTP account, a transactional API, or even PHP's direct mail function with zero setup
- No per-subscriber pricing tiers that punish you for growing
- No feature paywalls - A/B testing, automation-ready architecture, and full tracking are just... there
The tradeoff, historically, has been that self-hosted PHP scripts tend to look like they were built in 2014 and left alone since. That's the gap Mailiva Pro is trying to close.
What Is Mailiva Pro?
It's a complete newsletter and campaign platform - subscriber lists, a real drag-and-drop email builder, multi-provider sending, open/click tracking, and automatic bounce handling - built in plain PHP and MySQL. No Composer, no Laravel, no Node build step. You upload files, run a web installer, and you're sending within minutes on completely ordinary shared hosting.
The Features That Actually Matter
🎨 Drag & Drop Builder
Eight block types - heading, text, image, button, divider, spacer, columns, social, footer. Drag, reorder, edit in a side panel. Undo/redo included.
📤 Three Sending Modes
Your own SMTP, a transactional API (SendGrid/Mailgun/Brevo), or direct PHP Mail with no credentials at all.
🧪 A/B Subject Testing
Split-test two subject lines on a sample of your list; the winner gets auto-sent to everyone else.
🛡️ Real Bounce Handling
Webhook-based bounce and spam-complaint handling for SendGrid, Mailgun, and Brevo - not string-matching SMTP errors.
A few more worth calling out: one-click unsubscribe with proper
List-Unsubscribe header support (so Gmail and Outlook show
their native one-click unsubscribe button), a full per-subscriber activity
timeline, CSV import with column mapping, and a "resend to non-openers"
button that creates a follow-up campaign targeting only the people who
missed your first send.
The Tech Stack (For the Curious)
Since most of you reading this are developers, here's the honest breakdown of what's under the hood:
- PHP + PDO - no ORM, no framework, plain prepared statements
- MySQL/MariaDB - a dozen or so well-normalized tables
- PHPMailer - bundled directly, no Composer required
- Bootstrap 5 - the entire admin panel uses real Bootstrap components (cards, badges, modals), reskinned with a small CSS-variable override rather than a custom Sass build
- SortableJS - powers the drag-and-drop reordering in the template builder
- Chart.js - the dashboard's performance trend chart
The sending engine is worth a quick look. Every campaign gets queued as individual rows, and a single cron script processes a throttled batch each run:
* * * * * php /home/yourusername/public_html/mailiva-pro/cron/send_campaigns.php >> /dev/null 2>&1
That one line is the entire "infrastructure" a buyer needs to set up. No message queue server, no Redis, no worker process to keep alive - just a cron job any shared host already supports.
Getting It Running
Installation is a five-minute, four-step process:
- Upload the files and create a MySQL database
- Run the web installer - it creates every table and your admin account for you
- Delete the
/install/folder - Add the cron line above and enter your SMTP/API details in Settings
If you want automatic bounce suppression, Settings also shows you ready-to-paste webhook URLs for SendGrid, Mailgun, and Brevo - each protected by a random secret key generated at install time:
https://yourdomain.com/mailiva-pro/track/webhook_sendgrid.php?key=your-generated-secret
Who This Is For
If you're an agency running newsletters for clients, a SaaS founder who wants transactional-adjacent marketing emails without another monthly line item, or just someone who'd rather own their sending stack than rent it - this is built for you. It's also a genuinely useful codebase to read through if you want to see a real-world example of a queue-based sending architecture, webhook signature verification, and a drag-and-drop UI built without a JS framework.
Own Your Email Marketing Stack
No monthly fees. No subscriber limits. Your database, your rules.
Got questions before you buy, or run into something while setting it up? Drop a comment below - I read every one.
- Contact Us @ a2zwebhelp.com
Complete Newsletter and Campaign Platform
A Self-Hosted PHP Email Marketing Platform You Actually Own