plugin-icon

Emerge Campaigns

作者 Redigit·
Self-hosted email campaigns for WordPress. Authored in the block editor, sent through your own mailbox, tracked in your own database.
版本
1.0.0
最近更新:
Jul 5, 2026
Emerge Campaigns

Emerge Campaigns turns WordPress into a self-hosted email-marketing tool. Build contact lists from your existing WordPress audience, group them into static or dynamic segments, author HTML emails in the block editor, schedule one-off or recurring campaigns, and track opens, clicks, and unsubscribes — all without leaving wp-admin.

Sends dispatch through WordPress’s standard wp_mail() function, so the plugin works with whatever mail transport your site is already configured for — host SMTP, a transactional service plugin, or PHP’s default mail.

Key features

  • Contacts from your existing WordPress audience — daily background sync pulls in WordPress users, comment authors, WooCommerce customers, Easy Digital Downloads customers, Jetpack contact form submissions, Jetpack Subscriptions, MailPoet subscribers, Newsletter Plugin subscribers, Contact Form 7 (via Flamingo) submissions, and Gravity Forms entries. Each source is opt-in from the settings screen. Manual add is supported from the Contacts screen.
  • Static and dynamic segments — static segments are manually-curated lists. Dynamic segments are rule-based (status, source, subscribed-at) and re-evaluated at send time, so membership stays current as new contacts arrive.
  • Block-editor email templates — author emails using Gutenberg, including Query Loop blocks to pull recent posts into newsletters. Mustache-style merge tags ({{first_name}}, {{email}}, {{site_name}}, {{unsubscribe_url}}, {{view_in_browser_url}}) substituted at send time. Starter newsletter and receipt block patterns included in a dedicated email category.
  • Broadcasts and Newsletters — two dedicated surfaces over the same engine. Broadcasts are one-time sends: draft scheduled sending sent / paused / cancelled, with schedule-for-later, pause/resume in-flight, and duplicate-as-draft. Newsletters are recurring series: pick a daily / weekly / monthly cadence and a send time, and a background sweeper spawns each issue automatically, picking up template and segment changes on the parent.
  • Newsletter issue log & smart resend — every newsletter keeps a read-only Issues log (the original send plus each recurring issue, numbered to match the subject line), with pause/stop controls for an issue that’s mid-send. An opt-in “send only if content changed” gate re-renders the template each run and skips the send when nothing meaningful changed — nonces, per-render ids, and insignificant whitespace are normalized out so only genuine content changes trigger a new issue.
  • Background batched sending — Action Scheduler chained batches with a configurable per-minute throttle (default 2/min ≈ 120/hour) to stay within mail-provider rate limits. Action Scheduler is bundled — no separate install required.
  • Resilient failure handling — syntactically invalid email addresses are skipped per-recipient rather than failing the whole campaign. When the underlying mail transport breaks (N consecutive wp_mail() failures, configurable in Settings Sending), the campaign auto-pauses and resets failed sends back to pending so they aren’t lost.
  • Retry failed sends — one-click button on the campaign edit screen re-queues transport failures once delivery is healthy again. Legitimate skips (unsubscribed, missing contact, invalid address) are not re-queued.
  • Emerge Subscribe — public-facing signup form — accept new subscribers in three interchangeable ways: a [emerge_campaigns_subscribe] shortcode, an “Emerge Subscribe” block in the block editor, or an “Emerge Subscribe” classic widget. Same configuration shape across all three (heading, description, button label, optional first/last name fields, optional consent text). Submissions are tagged with the emerge_subscribe source and recorded with explicit consent so they’re identifiable in segment rules.
  • Progressive-enhancement AJAX submit — the subscribe form posts to a REST endpoint via vanilla JavaScript and renders the result inline with no page reload. Falls back cleanly to a classic POST + redirect path when JavaScript is disabled or fails to load. Same nonce, same validation, only the transport differs.
  • Spam controls on the subscribe form — nonce verification, hidden honeypot field, and a per-IP rate limit (default 5/hour, filterable).
  • Test sends and preview — send a test to any address from the campaign edit screen with full merge-tag substitution. Preview templates in the browser before assigning them to a campaign.
  • Per-recipient tokens — every send gets a unique token used for unsubscribe, view-in-browser, open-pixel, and click-tracking URLs. No shared secrets, no guessable URLs.
  • RFC 8058 one-click unsubscribeList-Unsubscribe-Post headers so Gmail and Apple Mail show a native unsubscribe button.
  • Built-in analytics — open pixel, click redirect, and unsubscribe events recorded locally in your own database. Per-campaign stats (sent, opens, unique opens, clicks, unique clicks, unsubscribes, rates) and per-contact send history visible inside wp-admin.
  • Privacy-conscious tracking — IP addresses are stored as a salted SHA-256 hash, never in the clear. Open pixel is opt-out via the wrapper filter.
  • Bounce & complaint handling — when the companion Emerge Mail plugin is active, Emerge Campaigns consumes its emerge_mail_bounce_received events and reflects them onto contacts: hard bounces and complaints are suppressed (dropped from the mailable audience and hidden from the default Contacts view), soft bounces are marked but kept mailable. Optional, guarded cleanup on a hard bounce can delete a linked WordPress user (reassigning their content) and reassign the address’s anonymous comments to a fallback user.
  • Authenticated subscribe webhook — besides the public form, an API-key-protected REST endpoint (POST /wp-json/emerge-campaigns/v1/webhook/subscribe, x-api-key header) lets external systems add contacts programmatically. Generate or revoke the key from Settings; webhook signups are tagged with the webhook source.

How it works

When you activate the plugin, it creates its own custom database tables for contacts, segments, campaigns, sends, and events. A daily background job populates your contacts from whichever sources you’ve enabled under Settings.

You author email templates in the block editor. When you build a campaign, you pick a template and a segment; on send, the segment is snapshotted into per-recipient send records (one per recipient, idempotent so re-runs never duplicate). A background worker picks up batches of pending sends, renders the template with each recipient’s merge context, dispatches via wp_mail(), and records the result.

Recurring campaigns are driven by a small sweep job: at each interval (daily / weekly / monthly), the sweeper duplicates the parent campaign as a fresh child and queues it for send. The parent stays editable, so changes to the template or segment propagate to the next occurrence.

Public signups via the subscribe shortcode / block / widget are inserted directly into the contacts table with explicit consent and the source emerge_subscribe, so they show up in the Contacts list table and can be targeted by segment rules.

Tracking is opt-out via the wrapper filter. By default, every email includes a 1×1 pixel that hits ?emerge_open=<token> when loaded, and rewritten link targets that hit ?emerge_click=<token>&url=<encoded> before redirecting to the real destination.

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 configuration take it from there.
  • Not a transactional-only tool — wp_mail() calls from other plugins (password resets, order receipts) are not intercepted. This plugin is for outbound campaigns you compose and send yourself.

External services

Emerge Campaigns does not contact any external service. All sending, tracking, and storage stays on your WordPress site.

Sends are dispatched via WordPress’s wp_mail() function. Whatever delivery mechanism your site is configured for — PHP’s default mail, host SMTP, or another plugin that hooks wp_mail — handles the actual transport. Emerge Campaigns does not call any third-party API directly.

目前已測試版本
WordPress 7.0
此外掛程式已可供下載,並可用於你 系統。