Email marketing, self-hosted in WordPress.

Build contact lists from your existing WordPress audience, group them into static or dynamic segments, author HTML emails in the block editor, and send one-time broadcasts or recurring newsletters — with opens, clicks, and unsubscribes tracked in your own database. No SaaS, no monthly per-contact fee.

Your data, your server, your wp_mail()

Emerge Campaigns turns WordPress into an email-marketing tool without sending a single contact off-site. Every list, segment, send record, and tracking event lives in your own database. Sends dispatch through WordPress's standard wp_mail(), so they ride whatever delivery you already have — host SMTP, a transactional-service plugin, or a mailbox connected via Emerge Mail.

How it works

  1. Install the plugin from the WordPress.org repository. Action Scheduler is bundled — nothing else to set up for reliable background sending.
  2. Sync your contacts. Pick which sources to pull from in Settings — WordPress users, comment authors, WooCommerce and EDD customers, Jetpack, MailPoet, Newsletter, Contact Form 7, Gravity Forms — or add contacts by hand.
  3. Author a template in the block editor, using merge tags and even Query Loop blocks to pull in recent posts.
  4. Send a broadcast or start a newsletter. Pick a template and a segment, then send now, schedule it, or set a daily / weekly / monthly cadence. A background worker sends in throttled batches.

Broadcasts and Newsletters

Two focused workflows over the same engine, so one-off sends and ongoing series never clutter each other.

  • Broadcasts — one-time sends

    The full draft → scheduled → sending → sent lifecycle. Schedule for later, pause and resume in-flight, and duplicate a finished send as a fresh draft.

  • Newsletters — recurring series

    Choose a daily, weekly, or monthly cadence and a send time; each issue is spawned automatically. Edit the parent and changes flow to the next issue.

  • Issue log & smart resend

    Every newsletter keeps a read-only log of the issues it has sent, with pause/stop for an in-flight one. An opt-in "send only if content changed" gate skips an issue when nothing meaningful changed.

Built for a real WordPress audience

  • Contacts from where you already have them

    A daily background sync pulls from WordPress users, commenters, WooCommerce & EDD customers, Jetpack, MailPoet, Newsletter, Contact Form 7 (Flamingo), and Gravity Forms. Each source is opt-in.

  • Static & dynamic segments

    Curate a list by hand, or write a rule (status, source, subscribed-at) that's re-evaluated at send time so membership stays current as new contacts arrive.

  • Block-editor templates

    Author emails in Gutenberg with mustache-style merge tags and starter block patterns. Query Loop blocks pull recent posts straight into a newsletter.

  • Background, throttled sending

    Action Scheduler chains batches with a configurable per-minute cap (default ≈120/hour) to respect provider limits. Invalid addresses are skipped per-recipient, not fatal to the batch.

  • Analytics in your database

    Open pixel, click redirect, and unsubscribe events recorded locally. Per-campaign stats and per-contact send history, right inside wp-admin. IPs stored only as salted hashes.

  • Bounce & complaint handling

    With Emerge Mail active, hard bounces and complaints suppress a contact automatically while soft bounces are kept mailable — with optional, guarded cleanup of linked users and comments.

  • Subscribe form & webhook

    Accept public signups via a shortcode, block, or widget (AJAX with a no-JS fallback, honeypot + rate limit). An API-key-protected webhook lets external systems add contacts too.

  • One-click, standards-based unsubscribe

    Per-recipient tokens power unsubscribe, view-in-browser, and tracking URLs. RFC 8058 headers give Gmail and Apple Mail a native one-click unsubscribe button.

What this is not

  • Not a SaaS — nothing is hosted off your site. All data, including tracking events, lives in your database.
  • Not an SMTP plugin — Emerge Campaigns hands sends to WordPress's wp_mail() and lets your existing mail setup take it from there.
  • Not a transactional interceptor — wp_mail() calls from other plugins (password resets, receipts) pass through untouched. This is for campaigns you compose and send yourself.

Free, open source, ready to install.

Own your list. Send from WordPress.

Install from WordPress.org