Mowl — E-mail Marketing

Mowl — E-mail Marketing

Details
View on WordPress

Connect your WordPress site to your Mowl workspace in one click, then add a subscribe form anywhere with the [mowl_form] shortcode or the “Mowl subscribe form” block. Double opt-in is on by default.

Features

  • One-click connection: your site gets its own token, revocable any time.
  • Subscribe form as a block or [mowl_form] shortcode, with first/last name and consent fields.
  • Double opt-in: confirmation email sent by Mowl, subscriber created only after confirmation.
  • Spam protection: honeypot, timing check, per-IP rate limit, optional Cloudflare Turnstile captcha, real visitor IP behind Cloudflare, and a mowl_spam_check filter for other captcha plugins.
  • Works on every Mowl plan, including Free.

WooCommerce

With WooCommerce active, the plugin can send order events (placed, paid, completed, cancelled, refunded, partly refunded, failed, on hold) and customer profile changes to Mowl, so you can build automations on them (thank-you series, win-back, review requests) and segment by purchase history. Each customer gets wc_* properties in Mowl: total spent, order count, first and last order date, average order value, last order status. Order events and the import also carry which products were bought and from which categories, so you can segment and start automations by product or category.

  • Marketing consent checkbox at checkout (classic and block checkout) and on the My account page; the checkbox is unticked by default and its text is editable. Only customers who tick it receive marketing emails from Mowl; transactional automations run regardless.
  • Optional double opt-in for that consent (off by default; strongly recommended for shops in Germany and Austria).
  • Events are queued locally and sent in batches in the background (Action Scheduler), with retries — a slow or unreachable Mowl never slows down checkout.
  • Everything is switchable under Mowl WooCommerce, where you can also see the queue status and the last events. Compatible with High-Performance Order Storage (HPOS).

Abandoned cart

The plugin keeps its own mirror of every WooCommerce cart, and when a cart has been untouched for longer than the threshold you pick (15 minutes to 4 hours), it sends a cart_abandoned event to Mowl, so you can build a reminder series there. When the shopper finally places an order, a cart_recovered event follows, so a goal on that automation can stop the rest of the series. The reminder email can carry a restore link that refills the cart and sends the shopper to checkout.

Switchable under Mowl WooCommerce (“Abandoned cart”), where you also see how many carts are open, abandoned and recovered. The sweep runs every 15 minutes in the background (Action Scheduler), and a cart gets at most one reminder per 24 hours. See the FAQ for the restore link, guest carts, consent and how long carts are kept.

Import existing customers

Under Mowl WooCommerce, “Import existing customers” brings the customers who ordered before you connected over to Mowl. First click “Check customers”: the plugin counts the customers (everyone with at least one processing, completed, on-hold or refunded order) and how many of them have a recorded consent, and Mowl tells you how much room your plan has. Then start the import; it runs in the background and you can leave the page. Imported customers get no email, no automation starts for them, and running the import again is safe: nobody is added twice.

Daily sync

Once a day the plugin re-sends every customer whose orders changed in the last 25 hours, so customers created through the REST API, an import or another plugin — or events that could not be sent — still reach Mowl. This only fixes the customer data; it does not send the missed order event again, so no late thank-you email goes out.

Back in stock

When a product is sold out, its page offers an “Email me when this is back in stock” form. The visitor enters an email address (and can tick “Also send me the newsletter”), and when the product is back in stock Mowl sends one email to everyone who asked. Needs WooCommerce, a connected site and the back-in-stock notification switched on in your Mowl workspace (Integrations); the plugin picks the setting up within an hour, or immediately when you open Mowl Settings in WordPress.

The form works with and without JavaScript, shares the spam protection of the subscribe form (honeypot, timing check, rate limit, optional Turnstile), and shows the visitor only a general success or error message.

Automation recipes

In Mowl, “New automation” offers ready-made recipes for a connected shop: an abandoned cart series (three emails, stops as soon as the shopper buys), a thank-you and review request after an order, and a win-back email after 90 days without an order — plus a welcome series for every workspace. Each recipe is created as a draft with the right trigger, goal and re-entry settings; choose a topic and a sender, review the emails, then activate it.

Privacy requests

The plugin hooks into WordPress’s own privacy tools (Tools Export Personal Data and Erase Personal Data): an export includes the data this plugin keeps on your site and the subscriber’s data in Mowl, and an erasure deletes the plugin’s local data and asks Mowl to anonymise the subscriber. See the FAQ for the details.

Shortcode attributes

[mowl_form tags="Newsletter,Deals" fields="email,first_name" doi="1" consent="1" consent_text="…" button="Subscribe" success="…" pending="…" redirect="https://your-site.com/thanks/"]

Source code

The block editor script (build/blocks/subscribe-form/index.js) is built with @wordpress/scripts (webpack) from the human-readable source shipped in src/blocks/subscribe-form/; run npm install && npm run build to rebuild it. The front-end and admin scripts in assets/ are not minified.

External services

This plugin connects your site to the Mowl email marketing service, so it can add your subscribers to your Mowl workspace. Requests are sent to https://app.mowl.email (the MOWL_API_URL constant overrides it for development). No data is sent to Mowl until you connect your site under Mowl Connection.

What is sent, and when:

  • When you connect your site (Mowl Connection “Connect to Mowl”): your site’s URL and site name.
  • On every subscribe-form submission (shortcode or block, with or without JavaScript) (to subscribers): the submitted email address, first and last name (if the form asks for them and the visitor filled them in), the tags selected for that form, the page URL the form was submitted from, the visitor’s IP address, their browser’s user agent string, and the consent checkbox text (if consent is enabled for that form).
  • When an admin uses “Test connection” (Mowl Connection): a health check request, authenticated with the site’s connection token.
  • WooCommerce order events (only if WooCommerce is active and “Sync” is on under Mowl WooCommerce; when an order is placed, paid, completed, cancelled, refunded, partly refunded, failed or put on hold): the billing email address, first and last name, the WooCommerce customer ID for registered customers, the marketing consent decision with the checkbox text and time (with double opt-in on, a “yes” also carries a double opt-in marker and your shop’s language — en, hu or de — so that Mowl can send the confirmation email), the customer’s aggregates (total spent, order count, first/last order date, average order value, last order status), and flat order data: order number, status, total (also formatted the way your shop shows it), the refunded amount of a partial refund, currency, item count, a short items summary, the first item’s name, URL and image URL, the order URL, the order’s WooCommerce payment link (it contains the order key; sent only with a failed or on-hold order that can still be paid), payment method title, coupon codes, shipping country; plus the list of ordered items (at most 20): each item’s name, quantity, product URL, image URL, unit price and line total (also formatted), product ID (the main product for a variation), variation ID, SKU and product categories (ID and name, at most 10); with a cancelled, fully refunded or failed order also the customer’s purchase history (as described for the import, without that order). No addresses, phone numbers, IP addresses or payment details are sent. Sent in batches to events.
  • WooCommerce customer profile changes (My account Account details, same conditions): the email address, first and last name, the WooCommerce customer ID, and the marketing consent decision if the checkbox is shown (with double opt-in on, a “yes” also carries the double opt-in marker and your shop’s language).
  • WooCommerce abandoned-cart events (only if WooCommerce is active and both “Sync” and “Abandoned cart” are on under Mowl WooCommerce; when a cart has been idle longer than your threshold, and again when an order recovers that cart): the email address the shopper is known by (their account email, or the address typed at checkout), the WooCommerce customer ID for registered customers, and flat cart data: the cart’s restore token and restore URL, item count, total (also formatted the way your shop shows it), currency, a short items summary, the first item’s name, URL and image URL, coupon codes, and the date the cart last changed; plus the list of cart items (at most 20): each item’s name, quantity, product URL, image URL, unit price and line total (also formatted), product ID (the main product for a variation), variation ID, SKU and product categories (ID and name, at most 10). No addresses, phone numbers, IP addresses or payment details are sent.
  • Importing existing customers (only if WooCommerce is active, “Sync” is on, and an admin starts the import under Mowl WooCommerce): the number of customers (to import/preview, to show how much room your Mowl plan has); then, for each customer with a processing, completed, on-hold or refunded order, the same customer data as for order events — email address, first and last name, WooCommerce customer ID, the recorded consent decision and its time (with double opt-in on, only a recorded “no”; a “yes” is sent as unknown), and the customer’s aggregates, and the customer’s purchase history: for each product bought in the customer’s paid orders (processing and completed by default, plus any status your shop registers as paid) (at most 200, the most recent first), the product ID, name and categories, the first and last purchase date and the number of orders — sent through events; while the import runs, its progress is read from import/status, and import/retry resends the customers that did not fit into your plan. No other order details, addresses, phone numbers, IP addresses or payment details are sent.
  • Purchase corrections (same conditions as order events): when a paid order is moved to the trash or deleted, or its status changes from paid to an unpaid status without its own order event (for example back to on hold), the same customer data and purchase history as for the import (without that order), as a silent sync through events that starts no automation.
  • Daily sync (same conditions as order events, once a day): the same customer data and purchase history as above for every customer whose orders changed in the last 25 hours, and, in a second pass, for every customer whose order was cancelled, failed or moved to the trash in the last 25 hours, sent through events.
  • Back-in-stock sign-ups (only if WooCommerce is active, the site is connected and back-in-stock notification is on in Mowl; each time a visitor submits the “Email me when this is back in stock” form, with or without JavaScript) (to back-in-stock/requests): the submitted email address, the product ID and variation ID (0 for the whole product), the product’s name, URL, image URL and price as text, the language of your shop (en, hu or de), whether the visitor ticked the newsletter option, and, for that option, the consent text they accepted; also the visitor’s IP address, their browser’s user agent string and the page URL, as consent evidence.
  • Back-in-stock restocks (same conditions; when a published, catalog-visible product or variation without a password goes from not in stock to in stock, even with WooCommerce sync off) (to back-in-stock/restocked, sent in batches like the other events): the product ID and variation ID, the product’s name, URL, image URL and price as text (and the parent product’s, for a variation) and the time. No personal data is sent; Mowl emails the people who signed up.
  • Privacy requests (only when an admin runs Tools Export Personal Data or Erase Personal Data for an address): the email address, to subscribers/export (Mowl returns what it stores about that subscriber) or to subscribers/erase (Mowl anonymises the subscriber).

Cloudflare Turnstile (optional, off by default). Only if you turn on the captcha under Mowl Form Spam protection: on pages that show a subscribe form, the visitor’s browser loads https://challenges.cloudflare.com/turnstile/v0/api.js, and Cloudflare checks the visitor’s browser to tell people from automated programs. On every form submission your server sends the check result (a one-time token), your Turnstile secret key and the visitor’s IP address to https://challenges.cloudflare.com/turnstile/v0/siteverify. This service is provided by Cloudflare, Inc. Cloudflare Website Terms: https://www.cloudflare.com/website-terms/ — Cloudflare Privacy Policy: https://www.cloudflare.com/privacypolicy/ — Turnstile Privacy Addendum: https://www.cloudflare.com/turnstile-privacy-policy/

Every event batch also carries the plugin, WordPress and WooCommerce version numbers, so Mowl can flag incompatible versions.

This service is provided by Mowl. Mowl Terms of Service: https://mowl.email/terms — Mowl Privacy Policy: https://mowl.email/privacy. The plugin also adds suggested text to your site’s own privacy policy page.

Details

Plugin code:
mowl-email
Plugin version:
1.5.1
Author:
Outdated:
No
WP version:
6.3 or higher
PHP version:
7.4 or higher
Test up to WP version:
7.1.4
Total installations:
0
Last updated:
2026-11-07
Rating:
Times rated:
0
email-marketing
newsletter
subscribe-form
woocommerce