✨ Self-hosted · One-time purchase · PHP + MariaDB

Bulk sending,
without the SaaS bill

The self-hosted email sending engine for PHP — queue, warm up, track, and own every part of it.

CloudWizard Mail Engine runs queue-based bulk sending from your own server, with daily warm-up limits per mailbox provider, open and click tracking, and campaign stats — CSV import for standalone use, or connected to Audience Manager for the full suite. Use it on its own, or as the delivery layer of the complete CloudWizard Suite.

Get CloudWizard Mail Engine — €49 → 👀 See the demo
CloudWizard Mail Engine dashboard showing campaign progress and stats
Warm-up
Daily limits per mailbox provider
Open+Click
Tracking with stable per-contact tokens
PHP 8.1+
No Composer, no monthly fees

Bulk sending on your own server
usually means bad deliverability

Fire-and-forget scripts blast every recipient at once, ignore provider limits, and give you no visibility into what actually happened.

🌊

A new IP has no reputation

Thousands of emails on day one get refused or junked by Gmail, Yahoo or Mail.ru. Without per-provider daily limits, your sender reputation is damaged before it exists.

👻

No visibility into opens or clicks

A basic send script tells you nothing about whether anyone actually read the email — no way to measure or improve.

🔓

Unsubscribe tokens break on re-import

Re-upload the same CSV for a second campaign and a naive script mints new IDs — old unsubscribe links silently stop working.

💸

SaaS ESPs charge per subscriber

Hosted platforms scale price with list size and volume. If you self-host, sending shouldn't cost more every month.

Everything you need.
Nothing you don't.

A focused sending engine for anyone who runs their own mail infrastructure.

📬

Queue-based bulk delivery

Cron-driven send loop, no daemon required. Pause sending at any time without touching what is already queued, and resume where it left off.

🔥

Warm-up limits per provider

Set a daily limit for Gmail, Microsoft, Yahoo, Mail.ru, Yandex, GMX and more. Mail over the limit waits in the queue and goes out when you raise the limit or the next day starts. Each day you get a suggestion for tomorrow's limits.

👁️

Open & click tracking

Pixel and redirect tracking with a stable per-contact token. Stats show unique openers and clickers, because image pre-fetching by mail clients inflates raw opens.

📊

Campaign stats

Sent count, unique opens, open rate, unique clicks and click rate per campaign, with a per-URL breakdown of every tracked link.

📥

CSV import

Send to any list without Audience Manager — multi-file upload, with unsubscribe tokens preserved across re-imports. A Quick Import covers simple one-off sends.

🎨

Templates & rich-text editor

HTML templates with placeholders for preheader, headline, message, CTA button, tracker and unsubscribe. Test-send to up to five addresses before the real send.

🏷️

Sender per campaign

Override the From name and email for a single campaign, so one install can send under several brand names.

📑

Duplicate campaign & audience

Copy a campaign with its template, text and sender. Or duplicate it together with the Audience Builder lists and filters it was sent to.

🔒

GDPR tooling built in

Automatic purge of email body content after a retention window, plus a two-step right-to-erasure flow that keeps the suppression record, per Art. 17(3).

Paced sending.
Accurate tracking.

Every send respects your provider limits and every open or click resolves to a real, stable contact.

🔥 Daily Warm-up Limits

Start with 40–100 a day to the strictest providers and grow about 20% per clean day. Provider hosting detection counts company domains at Google or Microsoft correctly.

🔁 Over-limit Mail Waits

Nothing is dropped. Mail over a provider's limit stays queued and is retried every 30 seconds, while other providers keep sending.

🆔 Stable Contact Tokens

Every recipient gets a permanent token, generated once. Re-import the same list for campaign #2 and unsubscribe links still work.

🚫 Suppression Enforcement

Every send checks the shared suppression list first. Bounced, unsubscribed and complained addresses are skipped, and spam refusals never mark a valid address as dead.

Up and running the same day

Drop the module on your server, add the cron job, and start sending.

1

Install & configure

Upload the CW folder, open the setup wizard, enter database and SMTP details and choose an admin password. Tables are created for you.

2

Build a campaign

Pick a template, fill in subject and content, and send a test to yourself first.

3

Load recipients

Upload one or more CSVs, or push a filtered audience straight from Audience Manager if it's installed.

4

Send & watch stats

The cron-driven queue sends within your daily limits. Watch progress, opens and clicks on the dashboard.

Runs on standard hosting

Works on any server running PHP and MySQL/MariaDB.

📬 Sends over your own Postfix or any SMTP relay via bundled PHPMailer. Works fully standalone via CSV import, or connects to Audience Manager and Bounce Manager automatically when both are installed.

  • PHP 8.1, 8.2, or 8.3
  • MariaDB 10.3+ or MySQL 8+
  • Apache or Nginx web server
  • Cron access for the send loop
  • SMTP relay (your own Postfix or third-party)
  • Works on VPS, dedicated and most shared hosting
  • Setup wizard — no config files to edit
  • No framework, no Composer — bundled PHPMailer only
  • Full source code included
// Install in four steps // 1. Upload the CW/ folder to public_html/ // 2. Open /CW/admin/setup.php, enter DB and SMTP // details and choose an admin password // 3. Log in and click Mail Engine // 4. Add the cron command shown on its Overview page

One price. Forever yours.

No subscriptions. No per-subscriber fees. No sending caps. Pay once, use on as many of your own servers as you need.

Complete Package
€49
one-time payment · instant download

  • Mail Engine module — full source
  • Cron-driven queue with warm-up limits per provider
  • Open & click tracking with per-URL stats
  • CSV import, multi-file, deduped per campaign
  • HTML templates, per-campaign sender, duplicate + audience
  • One-click unsubscribe & shared suppression
  • GDPR auto-purge & right-to-erasure tooling
  • Installation guide (Nginx + Apache)
  • User manual with examples
  • Unlimited recipients & domains
  • All future updates included
  • Email support for 6 months
Buy Now — €49 →

Secure payment via Stripe · Instant delivery · VAT may apply

Want the whole system? The Full Suite — all 6 modules for €196 →

What this would cost elsewhere

€30–300+/month
Per-subscriber pricing
in hosted platforms
vs.
€49 once
CloudWizard
Mail Engine, forever

If you self-host email, this is for you

📰 Newsletter publishers
🎓 Course & membership sites
🛍️ E-commerce campaigns
🖥️ Self-hosted email marketers
🏢 Hosting providers
⚙️ VPS operators

See it in action

Explore a live demo with a sample campaign and its stats — no login required.

👀 Open Live Demo →

Common questions

Yes. Recipients come from CSV import — one or more files per campaign — and every import writes through the shared identity table so unsubscribe tokens stay stable across re-imports.

No — Mail Engine ships with PHPMailer and sends through whatever SMTP relay you configure, including your own local Postfix. Any standard SMTP account works.

You set a daily limit per mailbox provider, for example 40–100 a day to Mail.ru or Yahoo on a new IP. Mail over the limit stays in the queue and goes out when you raise the limit or the next day starts, while other providers keep sending. After each day Mail Engine suggests tomorrow's limits: raise after a clean day, hold when little was sent, drop after spam refusals or hard bounces. You apply the suggestion with one click.

Image pre-fetching by mail clients inflates raw opens, so treat open rates with care. Stats show unique openers per campaign, which is the more reliable number. Click rates need a real action and are accurate.

An automatic GDPR purge removes the stored email body after a configurable retention period (30 days by default), while keeping enough data for accurate sent-count stats.

Every email carries an unsubscribe link and a one-click List-Unsubscribe header. A click adds the address to the shared suppression list, marks the contact unsubscribed in Audience Manager if it is installed, and shows a confirmation page in English, Russian or German.

Your subscriber data stays on your server. CloudWizard is entirely self-hosted, and the installation guide covers restricting admin access.

Yes — a single purchase covers all your own servers and projects. There are no per-domain or per-server restrictions. The license covers personal and commercial use on servers you own or operate.

You get the full source code — so you can modify anything. For common feature requests, updates are free and included. Send us a message and we will see what we can do.

Designed by someone who has run customer databases and direct mail since the late 1980s.

Not because it's old-school, but because anyone who has actually sent millions of emails knows the hard part isn't generating SMTP traffic — it's keeping inbox placement and sender reputation healthy over time. That's the problem this tool is built to solve.

Get product news and updates

A short email when something new ships. One click to unsubscribe.

Subscribe →