Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/daxorinator/woocommerce-mailinglist/releases/download/v1.3.1/mailinglist-plugin-1.3.1.zipA WordPress plugin that lets administrators assemble mailing lists from WPForms entries or WooCommerce data and send bulk emails to them. Delivery goes through wp_mail(), so it uses whatever mailer the site is configured with (e.g. WP Mail SMTP).
Email types
Every list is one of two types, which decides where its addresses come from and whether recipients can unsubscribe.
| Marketing Email | Product Email | |
|---|---|---|
| Source | Entries of a WPForms form | WooCommerce data |
| Intended for | Newsletters and promotions, where double opt-in consent was collected | Legal / product notices / other GDPR legitimate interest |
| Unsubscribe | Always included | Not possible |
Sources
WPForms
- Pick a form, and optionally which field holds the email address and the name
- Every entry's address goes on the list; spam and trashed entries are skipped
- Requires WPForms Pro, because the free version does not store entries in the site's database
WooCommerce
Choose applicable customers based on:
- All customers, optionally including registered customer accounts with no orders
- All customers who have purchased a product: pick a normal product, parent product, or a single variation
- All subscribers to a subscription product or subscription variation (requires WooCommerce Subscriptions); can be left empty for any/all subscription customers
Which order and subscription statuses are applicable can be set per list.
Refreshing
Lists are rebuilt from their source:
- Once a day (WP-Cron event
mlp_daily_refresh) - When a list is saved
- On demand, with Refresh now
- Immediately before an email is sent
Sending
- Compose in the visual (WYSIWYG) editor or as raw HTML code
- Preview, send yourself a test, and save drafts
- Emails are sent in the background in batches using Action Scheduler when available, otherwise WP-Cron. Batch size and interval are under Mailing Lists -> Settings
- Failed recipients are listed with the mailer's error and can be retried
Merge tags: {name} {email} {site_name} {site_url} {unsubscribe_link} {unsubscribe_url}
Unsubscribing
Marketing Emails always carry a signed unsubscribe link, plus one-click List-Unsubscribe headers.
Unsubscribing deletes the associated entry from the WPForms form the list is sourcing from
Product Emails are designed strictly for legal / legitimate interest emails and thus get no unsubscribe link or header.
Requirements
- WordPress 5.8+, PHP 7.4+
- WPForms Pro, for Marketing Email lists
- WooCommerce, for Product Email lists (supports WooCommerce Subscriptions for building subscriber lists)
- WP Mail SMTP or any other
wp_mail()-compatible mailer. An SMTP mailer is needed for theList-Unsubscribeheader to be usable by mail clients - A working WP-Cron. On low-traffic sites, trigger
wp-cron.phpfrom a real cron job so the daily refresh and send batches run on time
Installation
- Download this repository as a zip, or clone it into
wp-content/plugins/. - In WordPress admin, go to Plugins -> Add New Plugin -> Upload Plugin, choose the zip and click Install Now.
- Activate Bulk Mailing Lists. A Mailing Lists item appears in the admin menu.
Developer hooks
| Hook | Type | Purpose |
|---|---|---|
mlp_capability |
filter | Capability required to use the plugin (default manage_options) |
mlp_email_html |
filter | Final HTML of each email |
mlp_email_headers |
filter | Headers of each email |
mlp_list_refreshed |
action | Fires after a list is rebuilt |
mlp_unsubscribed |
action | Fires after someone unsubscribes |
License
Releases
5 releases. Each count is every asset in that release; expand a row for the breakdown.