Title: Mowl — E-mail Marketing
Author: molnaradam
Published: <strong>November 7, 2026</strong>
Last modified: November 7, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/mowl-email.svg)

# Mowl — E-mail Marketing

 By [molnaradam](https://profiles.wordpress.org/molnaradam/)

[Download](https://downloads.wordpress.org/plugin/mowl-email.1.5.1.zip)

 * [Details](https://wordpress.org/plugins/mowl-email/#description)
 * [Reviews](https://wordpress.org/plugins/mowl-email/#reviews)
 *  [Installation](https://wordpress.org/plugins/mowl-email/#installation)
 * [Development](https://wordpress.org/plugins/mowl-email/#developers)

 [Support](https://wordpress.org/support/plugin/mowl-email/)

## Description

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.

## Blocks

This plugin provides 1 block.

 *   Mowl subscribe form A newsletter subscribe form connected to your Mowl workspace.

## Installation

 1. Install and activate the plugin.
 2. Go to Mowl  Connection and click “Connect to Mowl”.
 3. Approve the connection in Mowl. Done.

## FAQ

### Does the form work without JavaScript?

Yes. Without JavaScript the form posts to your site and reloads the page with the
result.

### Who can turn double opt-in off for a single form?

Anyone who can edit posts: the block and shortcode attributes (double opt-in, consent,
tags, messages) override the defaults set under Mowl  Form, and only those overrides
are signed into the rendered form. The global settings apply immediately to every
form that does not override them, including forms served from a page cache. The 
one exception is the Turnstile captcha: after turning it on, purge your page cache,
because pages cached before that have no captcha widget and their sign-ups would
fail.

### My site is behind Cloudflare or another CDN; the spam throttle sees the CDN’s IP.

Behind Cloudflare, turn on “My site is behind Cloudflare” under Mowl  Form  Spam
protection. The plugin then reads the visitor’s address from the `CF-Connecting-
IP` header, but only on requests that really come from Cloudflare’s network, so 
the header cannot be spoofed by sending it straight to your server. The plugin warns
you in the admin when it sees Cloudflare traffic with the switch off.

Behind another CDN or proxy, return the real address from the `mowl_client_ip` filter,
and only from a header your proxy sets itself (forwarded headers sent by visitors
can be spoofed): `add_filter( 'mowl_client_ip', function ( $ip ) { return $_SERVER['
HTTP_X_REAL_IP'] ?? $ip; } );`

### Where is my Mowl token stored?

Encrypted in the WordPress options table, using keys derived from your site’s salts.

### My hosting blocks outgoing HTTP requests.

The plugin needs to reach app.mowl.email from your server. Use “Test connection”
under Mowl  Connection to check; ask your host to allow outgoing HTTPS.

### What happens to unsent events when I disconnect?

Disconnecting the site from Mowl (or connecting it to another workspace) discards
the events that have not been sent yet.

### How does the My account consent box work?

The My account box reflects only consent given in this shop: unticking it revokes
a consent that was given here, and never one given elsewhere (for example on a Mowl
subscribe form).

### What does double opt-in for the checkout consent do?

Turn it on under Mowl  WooCommerce  “Double opt-in”. A customer who ticks the box
at checkout or on the My account page gets a confirmation email from Mowl in your
shop’s language (English, Hungarian or German), and receives campaigns only after
confirming. Until then their consent stays as it was; automations such as the abandoned-
cart series follow the usual rule and leave out only someone who said no. Unticking
the box takes effect at once. With double opt-in off, nothing changes.

### With double opt-in on, why does a logged-in customer’s checkout consent already show as ticked on My account, even though they have not confirmed it yet?

The checkbox reflects the decision the customer made, not whether it has taken effect
for campaigns. With double opt-in on, a “yes” only starts sending campaigns once
the customer confirms it by email; until then the box stays ticked. To get a new
confirmation email, the customer can untick the box, save, tick it again and save.

### How does the abandoned cart restore link work?

The reminder email can carry a restore link back to your shop (`?mowl-cart=…`): 
it refills the cart with the saved items and sends the shopper to checkout. The 
link is good for 30 days after the cart last changed (as long as the saved cart 
is kept), works only while the cart is still abandoned, and items that were deleted
or went out of stock are skipped; if nothing can be restored, the shopper lands 
on your home page with their current cart untouched.

### Which carts get a reminder?

Guest carts get a reminder only once the shopper has typed an email address at checkout(
classic or block checkout). Without an email address there is no event at all. A
reminder goes out at most once a day per email address, however many carts carry
that address, and never for a cart that has been untouched for more than 7 days.

### Does the cart reminder need marketing consent?

The cart reminder is a marketing email and may be sent to an address that has not
given explicit consent; only someone who left the checkout consent box unticked,
or declined elsewhere, is excluded. If that is not what you want in your market,
turn “Abandoned cart” off.

### How long are mirrored carts kept?

The mirrored cart (its items and the email address) is kept for 30 days after the
cart last changed, then deleted; a recovered cart is deleted at the next daily cleanup.
Disconnecting the site from Mowl, or connecting it to another workspace, deletes
the mirrored carts as well.

### WooCommerce has its own abandoned cart recovery. Can I use both?

WooCommerce 11.x ships its own `abandoned_cart_recovery` feature. Running both at
the same time means two reminder programmes for the same cart, so the shopper may
get two sets of emails — pick one.

### Will the import email my old customers?

No. Imported customers get no email, and no automation starts for them. Only what
they do after the import (a new order, an abandoned cart) can start an automation.

### Which consent does the import carry over?

Only a consent recorded in this shop is carried over as consent: a ticked checkout
box on one of their orders, or a ticked box on the My account page. A customer who
declined on the My account page is imported as declined. Everyone else is imported
with unknown consent.

With double opt-in on, the import and the daily sync never send a confirmation email,
and a consent recorded in this shop is not carried over, because it was never confirmed
by email: those customers are imported with unknown consent, and the preview counts
none of them as consented. A customer who declined on the My account page is still
imported as declined.

### What if my Mowl plan is full during the import?

The most recent customers are imported first. If your plan is full, the import stops
and tells you how many customers did not fit; after upgrading, “Continue after upgrading”
imports the rest. Running the import again is safe: nobody is added twice.

### When does the back-in-stock form appear?

Simple products: the form appears while the product is out of stock. Variable products:
when a variation is out of stock and selected, a form for that variation appears
below the add-to-cart form; when every variation is sold out, the form asks for 
the product as a whole and any variation coming back triggers the email. With “Hide
out of stock items” on, WooCommerce does not offer sold-out variations for selection,
so as soon as any variation is sold out the form asks for the product as a whole(
products with many variations, above WooCommerce’s AJAX threshold, keep the per-
variation form, because there a sold-out combination can still be selected). Password-
protected and hidden products show no form.

### What triggers the back-in-stock email, and how long are requests kept?

The restock event (a product or variation going from not in stock to in stock, published,
not password-protected and visible in the catalog) is queued like the other WooCommerce
events and works even when customer sync is off. It carries product data only, no
personal data.

Mowl keeps a request for at most 180 days from the visitor’s last sign-up, sends
one email per address per restock, and these emails count against your monthly email
quota. The newsletter tick always uses double opt-in, whatever your form settings:
the address becomes a subscriber only after confirming by email.

### What do the privacy export and erasure include?

An export includes the data this plugin keeps on your site and the subscriber’s 
data in Mowl: profile, tags, topics, custom fields, the marketing consent with its
time and source, the double opt-in confirmation evidence (time, IP address, browser
and the consent text), the purchase history Mowl keeps for the subscriber and the
back-in-stock requests (product, time, whether the email is still pending; also 
for an address that only asked for a back-in-stock email). An erasure deletes the
plugin’s local data and asks Mowl to anonymise the subscriber; Mowl keeps only a
salted fingerprint of the address, so the person is not added again unless they 
give a new consent. If the site is not connected to Mowl, the erasure report says
that the Mowl part did not run.

### Can someone who unsubscribed subscribe again?

Yes. If they fill in your subscribe form again, Mowl always sends a confirmation
email first, even if double opt-in is off for that form; once they confirm, they
are subscribed again. An address that bounced or reported spam cannot be re-added
from the form.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Mowl — E-mail Marketing” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ molnaradam ](https://profiles.wordpress.org/molnaradam/)

[Translate “Mowl — E-mail Marketing” into your language.](https://translate.wordpress.org/projects/wp-plugins/mowl-email)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/mowl-email/), check
out the [SVN repository](https://plugins.svn.wordpress.org/mowl-email/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/mowl-email/) by 
[RSS](https://plugins.trac.wordpress.org/log/mowl-email/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.5.1

 * Translations now come from translate.wordpress.org language packs instead of 
   files bundled with the plugin.
 * Subscribe and back-in-stock submissions are reduced to the fields the forms send
   before any check runs; the `mowl_spam_check` filter receives these sanitized 
   fields only.

#### 1.5.0

 * Back in stock: a sold-out product page offers an “Email me when this is back 
   in stock” form (simple products, single variations, or the whole product when
   every variation is sold out or “Hide out of stock items” hides the sold-out ones).
   When the product is back in stock, Mowl sends one email to everyone who asked.
   The visitor can also tick a newsletter option, which always asks for confirmation
   by email (double opt-in). Switch it on in Mowl under Integrations; it works without
   JavaScript, uses the same spam protection as the subscribe form, and needs WooCommerce.
 * Restock events are sent to Mowl even when customer sync is off, and carry product
   data only.
 * The suggested privacy policy text and the External services list cover the back-
   in-stock sign-ups and restock events; the personal data export lists the back-
   in-stock requests Mowl keeps.
 * The daily cleanup of sent events now runs on every connected site, also with 
   customer sync off.

#### 1.4.0

 * Optional Cloudflare Turnstile captcha on the subscribe forms (Mowl  Form  Spam
   protection, off by default). A visitor without a passed check gets a clear error
   and can try again; if Cloudflare cannot be reached, the submission goes through
   and the other spam checks still apply. A rejected secret key shows an admin notice
   instead of blocking sign-ups.
 * “My site is behind Cloudflare” switch: the plugin reads the visitor’s real address
   from Cloudflare, only on requests that really come from Cloudflare’s network,
   so sign-up limits count each visitor separately. The admin shows a notice when
   it sees Cloudflare traffic with the switch off.
 * The suggested privacy policy text mentions Turnstile when it is on.
 * New WooCommerce events for automations: “Payment failed” and “Order on hold” (
   both with a link to pay for the order, when it can still be paid) and “Order 
   partially refunded” (with the refunded amount). Mowl has a ready-made “Failed
   payment” recipe.
 * Purchase history follows the order: products of a cancelled, fully refunded, 
   failed, trashed or deleted order no longer count as bought, and only paid orders
   count as purchases (processing and completed, plus any status your shop registers
   as paid). Run the import once after updating so that earlier on-hold or refunded
   orders are corrected.
 * The customer’s total spent no longer includes partly refunded amounts.
 * The personal data export now also lists the subscriber’s double opt-in confirmation
   evidence and purchase history from Mowl, each as its own item.
 * Trashing or deleting a paid order, or setting it back to an unpaid status, sends
   the customer’s corrected purchase history to Mowl silently (no automation starts).
   The daily sync has a second pass for customers whose order was cancelled, failed
   or trashed in the last 25 hours, so changes that skipped WooCommerce’s own events
   are corrected too.

#### 1.3.0

 * New name on WordPress.org: “Mowl — E-mail Marketing”.
 * Import existing customers: a preview with the customer count, the recorded consents
   and the room in your Mowl plan, then a background import with a progress bar.
   No email is sent and no automation starts; the most recent customers come first,
   and an import stopped by a full plan can be continued after upgrading.
 * Daily sync of customers whose orders changed in the last 25 hours.
 * Privacy tools: the WordPress personal data exporter and eraser now cover this
   plugin’s local data and the subscriber in Mowl.
 * The suggested privacy policy text covers the import, the daily sync and erasure
   requests.
 * Abandoned-cart and order events now carry the list of items (at most 20: name,
   quantity, product link, image, unit price and line total) and the total, with
   prices formatted exactly as your shop shows them, so a Mowl email can show the
   cart or the order item by item. Variations use their own name and image (or the
   main product’s image); items whose product was deleted keep their name.
 * Item and product names with an HTML entity in them (for example `Salt &amp; Pepper`)
   are now decoded before they are sent, so they show up correctly rather than doubly-
   escaped.
 * Double opt-in for the checkout and My account consent (Mowl  WooCommerce, off
   by default): a “yes” becomes a consent only after the customer confirms it in
   an email from Mowl, sent in your shop’s language. The import and the daily sync
   never send a confirmation email and, with double opt-in on, carry no earlier “
   yes” over. The suggested privacy policy text explains the confirmation when it
   is on.
 * The Connection tab shows the monthly email quota (emails sent this cycle out 
   of the plan’s quota) in its own row, next to the subscriber limit, so the two
   are no longer mixed up.
 * Purchase history for segments and automations: order and abandoned-cart items
   now carry the product ID (the main product for a variation), variation ID, SKU
   and product categories, and the customer import and the daily sync bring over,
   for each customer, which products they bought (at most 200, the most recent first),
   with categories, first and last purchase date and the number of orders. Once 
   Mowl has been updated, run the import once to fill in the history of earlier 
   orders.
 * The Connection tab shows the plan’s name (for example “Starter”) instead of its
   internal identifier.

#### 1.2.0

 * Abandoned cart: every cart is mirrored locally, and a `cart_abandoned` event 
   goes to Mowl once the cart has been idle longer than the threshold you pick (
   15 minutes to 4 hours); `cart_recovered` follows when the shopper orders, so 
   an automation goal can end the reminder series.
 * Guest carts: the email address typed at the classic or block checkout is captured
   on the mirrored cart, so a guest cart can get a reminder too; without an email
   address nothing is sent.
 * Restore link (`?mowl-cart=…`): refills the cart with the saved items and sends
   the shopper to checkout; good for 30 days, only while the cart is still abandoned,
   deleted or out-of-stock items skipped.
 * New “Abandoned cart” block under Mowl  WooCommerce: on/off switch, threshold,
   and the open/abandoned/recovered counts. The cart mirror table is removed on 
   uninstall.
 * Mirrored carts are cleaned up with the daily maintenance run (30 days after the
   cart last changed, recovered carts right away), and are deleted when the site
   is disconnected or connected to another workspace.
 * An email address typed at checkout survives later cart changes, and a guest cart
   follows the shopper into their account when they log in.
 * A reminder goes out at most once a day per email address, and never for a cart
   that has been untouched for more than 7 days.
 * The suggested privacy policy text now covers the locally stored cart contents
   and checkout email address.
 * Fix: tag names in the shortcode (`tags="Newsletter"`) now resolve at any time.
   Before, they only worked within 5 minutes of opening the Mowl settings page, 
   and the form otherwise subscribed without tags.
 * The shortcode help under Mowl  Form now explains every attribute, including `
   consent_text`, and says that `redirect` is the page after the confirmation link,
   not after submitting.

#### 1.1.0

 * WooCommerce module: order events (placed, paid, completed, cancelled, refunded)
   and customer profile changes sent to Mowl, `wc_*` customer properties, background
   sync with batches and retries (Action Scheduler), HPOS compatible.
 * Marketing consent checkbox at checkout (classic and block checkout) and on the
   My account page; the checkout consent is sent with the placed event only, and
   the My account box only revokes a consent given in this shop.
 * Event queue under Mowl  WooCommerce with status counts, the last events and a
   retry for stuck events; the queue is discarded when the site is disconnected 
   or connected to another workspace.
 * Order placed is sent once per order even when the classic checkout is resubmitted;
   the admin log trims itself on sites without WooCommerce.

#### 1.0.0

 * Initial release: connection, subscribe form (shortcode + block), double opt-in.

## Meta

 *  Version **1.5.1**
 *  Last updated **23 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.3 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [Email Marketing](https://wordpress.org/plugins/tags/email-marketing/)[newsletter](https://wordpress.org/plugins/tags/newsletter/)
   [subscribe form](https://wordpress.org/plugins/tags/subscribe-form/)[woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/mowl-email/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/mowl-email/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/mowl-email/reviews/)

## Contributors

 *   [ molnaradam ](https://profiles.wordpress.org/molnaradam/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/mowl-email/)