Connecting WooCommerce unlocks the e-commerce triggers (cart abandoned, orders, back in stock, customer created), product sync for template previews and recommendations, and unique per-recipient coupons. The connection runs through the official MailingPlatform plugin.
1. Install the plugin
- In Integrations, choose to connect a store and pick WooCommerce
- In WordPress admin, go to Plugins, Add new, search for MailingPlatform for WooCommerce and click Install now, then Activate. The plugin is listed in the WordPress.org plugin directory
- Alternative: download the plugin zip from the integration (also available at
/downloads/mailingplatform-woocommerce.zip) and upload it under Plugins, Add new, Upload plugin
2. Connect the plugin
- In WordPress, open Marketing, MailingPlatform
- Click Connect MailingPlatform account, sign in and approve the store connection. The plugin registers its webhooks, creates a dedicated REST API key for coupons and activates the tracking script.
The advanced section of the settings page still offers connecting with a plugin connection code copied from the integration in MailingPlatform; the code must be entered within 10 minutes (codes expire for security).
Once connected, the plugin sends store events (checkouts, orders, customers, products) to your account. Incoming events appear in the integration's event log.
The connection also starts two background imports so your account is not limited to what happens after the connection: the product catalog and the full order history. Both run server-side and continue even if you close the page.
Order history and store segments
Webhooks only deliver orders placed after the store was connected. The default store segments (win-back opportunities, VIP customers, repeat buyers, at risk of churning) are built on purchase history, so they would stay empty for months without the past orders. The order history import fixes that:
- It starts automatically when the plugin connects and imports every order in the store (all statuses, oldest first), up to 20,000 orders per run
- Each order is stored with its date, total, currency and status (completed becomes fulfilled, processing and on hold become paid, cancelled, refunded and failed become cancelled)
- Orders are matched to subscribers by email address. A customer who is not on any of your lists is stored without a subscriber link; if they subscribe later, their earlier orders are attached to the new profile automatically
- When the import finishes, every segment that uses Placed order, Fulfilled order, Order revenue or Started checkout is recalculated
- Imported orders never start automations, create coupons or send emails. Order created and order fulfilled flows only react to live webhooks
To run it again (for example after reconnecting the plugin), open the store card in Integrations, go to Store data and click Sync orders. The card shows the last import and how many orders it found. The Statistics tab shows the total number of non-cancelled orders the platform knows about.
Historical customers are not imported as subscribers. The plugin only creates subscribers when a customer ticks the newsletter checkbox at checkout or registration.
Updating the plugin
The plugin is published in the WordPress.org plugin directory, so stores on version 1.3.0 or newer update it like any other plugin: WordPress checks for new versions about twice a day and lists it under Dashboard, Updates and on the Plugins page. Click Update now; your connection, webhooks and settings are kept, and the store card in Integrations shows the new version within a minute. You can also enable auto-updates for the plugin on the Plugins page.
When a newer version exists, the store card in Integrations shows Update available with the current version number, a link to the WordPress.org listing and a zip download.
Stores still on version 1.2.0 or older run the plugin from the old folder name, which WordPress does not recognize as the directory listing, so they need one manual update: download the zip, go to Plugins, Add new, Upload plugin, upload it and activate. WordPress installs the new version next to the old one; activating the new copy automatically deactivates the old MailingPlatform for WooCommerce entry. Delete that old entry afterwards; the connection is kept. If the old entry is activated again by mistake, the plugin switches it off again and explains why. After this one-time step, updates arrive through WordPress automatically.
Version 1.3.0 also sends the product image and unit price for each cart line, so {{ item.image }} and {{ item.price }} render in abandoned cart emails. Stores on older versions show cart items without images.
3. Newsletter signup at checkout (optional)
The plugin can show a newsletter opt-in checkbox on the checkout page and the account registration form. It is off by default:
- In WordPress, open Marketing, MailingPlatform and expand Newsletter signup at checkout
- Enable the checkbox, adjust the label (default "Subscribe to our newsletter") and choose whether it is pre-checked (off by default - under GDPR consent should be an active choice)
When a customer ticks the box, they are added to your account as a subscriber:
- The subscriber lands in the store's default list for store signups, set on the store card in Integrations. If no list is selected, your oldest list is used.
- Your account's double opt-in setting is honored: with double opt-in on, the customer receives a confirmation email and only becomes active after confirming.
- Consent details (timestamp, source, shop domain) are stored on the subscriber.
- A customer who previously unsubscribed is never re-activated by the checkout checkbox; re-subscribing requires an explicit confirmation flow.
New active subscribers created this way start automations with the new subscriber trigger, so a welcome flow on the target list picks them up automatically.
The checkbox works on both WooCommerce checkouts from plugin 1.4.0. On the block-based checkout (the WooCommerce default since 8.3) it appears in the Additional order information step, registered through WooCommerce's additional checkout fields API (WooCommerce 8.9 or newer). On the classic (shortcode) checkout it appears above the Place order button. If the box is missing on a block checkout, update the plugin: versions before 1.4.0 only supported the classic checkout.
Plugin 1.4.0 also fixes two block-checkout gaps for abandoned cart flows: the shopper's email is captured as soon as it is entered in the contact step, and the cart is marked as recovered when the order is placed. On older plugin versions, block-checkout guests stayed anonymous and recovered carts could still receive reminders.
Store language as a profile property
From plugin 1.5.1 the store card also shows the WooCommerce, WordPress and PHP versions the store runs, reported with the plugin's daily heartbeat.
From plugin 1.5.0 the storefront language (WPML or Polylang current language, otherwise the site locale) is sent with checkout and registration signups and with cart events. On the store card under Integrations, Profile properties from store signups, add a rule such as Language = Store language to write it to a custom field, so a multilingual shop can segment subscribers by the language they shop in. The rule also runs on cart events for customers who are already subscribers, so existing profiles pick up the language the next time they shop. See profile property rules.
4. Enable the coupon API (optional but recommended)
For unique store coupons, the platform creates WooCommerce coupons through the REST API. The plugin creates this key automatically when you connect (both the one-click and the code flow), so you can normally skip this section. If you removed the key from the plugin settings, or your store connects without the plugin:
- In WordPress, go to WooCommerce, Settings, Advanced, REST API, Add key and create a key with read/write permissions
- Copy the consumer key and consumer secret into the integration
WooCommerce coupons are restricted to the recipient's email address automatically.
What you get
- Automation triggers: cart abandoned, order created, order fulfilled, order cancelled, customer created and back in stock - see the triggers reference
- Newsletter signup at checkout: an opt-in checkbox that creates subscribers in your default list, honoring double opt-in
- Product sync: synced products power template previews and product loops and the AI builder's product picks
- Order history import: past orders are imported at connect time so purchase-based segments work from day one
- Statistics: orders, checkouts, abandoned checkouts, products and back-in-stock requests per store
Removing the plugin
Disconnect on the plugin's settings page tells MailingPlatform the store is no longer connected, removes the plugin's webhooks and clears the local connection. It keeps the REST API key so you can remove it deliberately with the separate button on the same page.
Deleting the plugin from the WordPress Plugins page (version 1.5.1 or newer) removes everything it created: its webhooks, its REST API key, queued events, the daily heartbeat and all plugin settings. Other webhooks and API keys in your store are not touched. If you deleted an older version, check WooCommerce, Settings, Advanced for leftover "MailingPlatform" webhooks and REST API keys and delete them by hand. Deleting the plugin does not remove the store from Integrations; remove it there if you no longer want the store in MailingPlatform.
Troubleshooting
- Connection code expired: copy a fresh code and enter it within 10 minutes
- No events arriving: confirm the plugin is active and paired; failed enrollments retry automatically for 48 hours
- No update offered in WordPress: the store runs a version before 1.3.0 (old folder name). Do the one-time manual zip update described above; later updates arrive automatically
- No products in previews: run a manual sync from the integration, or update a product in the store
- Store segments are empty: check that the order history import has completed under Store data on the store card. Segments count orders from subscribers on the segment's list, so a buyer who is not subscribed does not appear