Introduction
WP Mailify is a WordPress plugin for building HTML email templates with a visual drag-and-drop builder, saving them on the server, and sending through wp_mail or connected email providers (SendGrid, Mailgun, Brevo, Postmark, Mailchimp campaigns). It supports bulk queues, optional A/B subjects, open tracking, saved segments, automation triggers, and inbound webhooks for bounces and complaints.
All Mailify screens live under WordPress Admin → Mailify. Your role must include the manage Mailify capability (Administrators have it by default).
Requirements & access
- WordPress 6.0+ and PHP 7.4+.
- SMTP: For reliable delivery with the “WordPress (wp_mail)” provider, use an SMTP plugin (e.g. WP Mail SMTP, FluentSMTP) so
wp_mailuses your mail server. - Cron: Scheduled batches and the send queue rely on WordPress cron (
wp-cron.php). For production, a real system cron hitting your site is recommended. - HTTPS: Recommended for REST, webhooks, and admin nonces.
First steps
- Open Mailify → Settings. Set default From name and From email, optional API keys, queue rate limit, and webhook options.
- (Optional) Under Starter content, click Import starter sections once to add sample header, button, and footer snippets to the Section library.
- Go to Mailify → Templates, create a template, and open the builder to design your first email.
- Use Mailify → Send for a test message or a bulk send.
Templates & visual builder
Mailify → Templates lists your email templates (custom post type). Each template has a numeric ID used in URLs and automation settings.
Opening the builder
From the template row, open the builder (full-screen). The interface includes:
- Elements sidebar: drag blocks onto the canvas (
#screen). Thumbnail previews load element HTML into block iframes. - Sources / Visual editor modes: switch between block-level HTML tools and in-place content editing (
.editContentregions). - Template title in the top bar—syncs with the saved template name.
- Save persists builder JSON and cached HTML for sending.
- Export downloads combined markup.
Pages
You can add multiple “pages” in the builder (tabs). The Send screen typically uses the active page’s content; know which page is selected before exporting.
Revisions
From the template list, use Revisions to view history, restore an older version, and configure required merge tags (see below).
Section library
Sections are small reusable HTML fragments (not full templates)—for example a shared footer or CTA row. They are stored in the database and can include merge tags like {{site_name}}.
Where to manage them
Mailify → Section library: add, edit, or delete sections (title + HTML). Only trusted administrators should edit HTML.
Starter import
Settings → Starter content → Import starter sections runs once per site and inserts three samples. Duplicate clicks show a notice that the pack was already imported.
Using sections in the builder
In the builder toolbar, choose a section from the dropdown and click Insert HTML. The HTML is appended inside the last block’s template area (#page) on the canvas—you must have at least one block dragged onto the canvas first.
Using sections on Send
The Send screen can insert the same library snippets into the HTML textarea where supported.
Send screen
Mailify → Send is where you compose or choose content and dispatch email.
- Template vs custom HTML: pick a saved template or paste HTML.
- Recipients: manual list, roles, WooCommerce customers (if applicable), saved segment, or Mailchimp audience (when configured).
- Provider:
wp_mailor a configured ESP. - Subject and optional Subject B when A/B testing is enabled.
- Plain text body optional; may be auto-generated from HTML for multipart mail.
- Schedule: send now or schedule for a future time (site timezone).
- Open tracking and A/B options when enabled; preflight may require
{{unsubscribe_url}}in HTML for bulk.
Submitting creates a batch and enqueues rows in the database; the background processor sends at the configured rate.
Queue & batches
Mailify → Queue lists batches: status, counts, provider, optional opens (when tracking is on), and actions (cancel, retry failed, delete, export failures).
| Status (typical) | Meaning |
|---|---|
| scheduled | Waits until scheduled_at; promoted by minute cron. |
| processing | Actively sending pending rows. |
| completed | No pending work (check failed count). |
| cancelled | Stopped by user; pending rows not sent. |
SendGrid note: When A/B or open tracking is on, SendGrid may use per-recipient sends instead of a single bulk API call (documented tradeoff in settings).
Segments
Mailify → Segments lets you define saved recipient rules (e.g. roles, meta, Woo flags) and reuse them on the Send screen. Preview counts help validate before sending.
Activity log
Mailify → Activity shows audit events (sends, queue actions, imports, etc.) with filters and optional CSV export (cap applies). Useful for troubleshooting and compliance review.
Settings (overview)
Default sender & queue
From identity for API and wp_mail paths; max sends per minute throttles the queue (0 = unlimited).
API keys
Optional keys for SendGrid, Mailgun (with region), Brevo, Postmark, Mailchimp. Keys can be overridden via wp-config.php constants—see the main plugin file header for names.
WooCommerce
Optional: send a template when an order reaches a chosen status.
Automation triggers
Optional new user email, Contact Form 7 follow-up—off by default; set template IDs carefully.
Webhooks
- Inbound URL for ESP events (e.g. SendGrid). Either configure SendGrid/Twilio public key for signed requests or use the shared secret (
X-Mailify-Secretor?secret=). - Bounces, spam complaints, and unsubscribe events add addresses to suppression so you do not keep mailing them.
Brand kit
Optional colors, font stack, and button radius applied to outgoing HTML via filter pipeline.
Open tracking default
When enabled, new bulk sends may pre-check “track opens.” Use only where permitted by law and policy.
Privacy & compliance
- Include a working unsubscribe link for bulk mail; Mailify provides
{{unsubscribe_url}}. - Open tracking uses a 1×1 pixel; disclose in your privacy policy where required.
- Store API keys securely; prefer constants in
wp-config.phpon high-security sites. - Suppression list prevents sends to bounced/unsubscribed addresses ingested via webhooks.
Frequently asked questions
Why don’t emails arrive when I use “WordPress (wp_mail)”?
Where did my section “Insert HTML” go?
#page. Add at least one element block first, then insert. Empty canvas shows an alert.Section library dropdown is empty in the builder
Why is my batch “scheduled” forever?
SendGrid bulk vs single sends
What is the difference between a template and a section?
Can I use my own HTML without the builder?
How do I restore an old template version?
Why does preflight block my send?
Is Mailchimp integration the same as WordPress users?
Who can access Mailify?
manage_mailify capability (default: Administrators). manage_options is treated as a fallback in code paths.Where is data stored?
wp_mailify_ (with your DB prefix).Glossary
| Batch | One send job with shared HTML/subject/provider and many queued recipients. |
|---|---|
| Builder state | JSON describing block layout; separate from cached HTML used for sending. |
| ESP | Email service provider (SendGrid, Mailgun, etc.). |
| Preflight | Validation before enqueue/send. |
| Suppression | List of emails not to send to (from webhooks/manual rules). |
| Variant (A/B) | Per-recipient a or b subject assignment in the queue. |