Changelog
2.11.8 (2026-07-27)
Improvements
- Admin permissions now apply to the Follow Up Email → Settings menu item — The menu entry pointed at a permission rule that does not exist, so it was not effectively restricted and appeared for admin users whose role should not have access to the extension settings. It is now tied to the correct "Settings" permission, so roles without it no longer see the item.
- Silent failures are now recorded for diagnostics — When the unsubscribe redirect CMS page cannot be resolved, or the storefront behind a queued email cannot be determined for the one-click unsubscribe header, the extension now reports the problem instead of quietly skipping it, which makes such cases traceable in support. Requires Mirasvit Core 1.7.15 or later (installed automatically with this update).
Fixed
- Order placement failed on stores upgraded from very old versions ("Column 'uniq_key' cannot be null") — Stores that had once used the separate Mirasvit Event extension kept three obsolete columns in the follow-up event table. One of them was mandatory and no longer filled in, so every attempt to record an event — including the one created when a customer places an order — ended with a database error and a failed checkout. ⚠️ The obsolete
uniq_key,code, andargs_serializedcolumns are now dropped frommst_email_eventonsetup:upgrade. The change is safe to re-run and does nothing on stores that never had those columns.
2.11.7 (2026-06-19)
Features
- REST API for email templates, themes, and reporting data — Email Designer templates and themes are now fully manageable via REST API (
/V1/mst-email/templates,/V1/mst-email/themes— full CRUD). Email reporting data is also accessible via read-only endpoints: opens, clicks, attributed orders, reviews, and sent email records (/V1/mst-email/report/*). Useful for headless setups, external analytics dashboards, and custom integrations.
Fixed
- "Contact Us" links in default email templates returned a 404 — All default templates hardcoded the Magento contact form path (
/contact/), which broke on stores that moved or disabled the native contact form. A new Contact Us URL setting at Stores → Configuration → Follow Up Email → General Information lets you set the correct relative path or a full URL. Existing unedited templates are updated automatically onsetup:upgrade; templates you have hand-edited are left unchanged.
2.11.6 (2026-06-09)
Fixed
- "Customer / No Activity" trigger failed to send emails on MySQL 8 — Stores running MySQL 8 (which enforces strict
ONLY_FULL_GROUP_BYby default) received a database error each time the trigger event query ran, preventing all inactivity follow-up emails from being dispatched. The query has been corrected and the trigger now works correctly on MySQL 8.
2.11.5 (2026-06-08)
Features
- Capture guest emails from any input field before checkout — A new lightweight script runs on every storefront page and listens to email, name, and username fields — including third-party newsletter popups and login forms. As soon as a guest types their email address, it is saved to their session and current cart so abandoned-cart triggers can fire even if they never reach the checkout page. Three modes are available: Always on, Off, or Disabled for EU visitors (the EU option requires the MaxMind GeoLite2 database configured under Stores → Configuration → Mirasvit Extensions → Developer → IP Geolocation). Configure at Stores → Configuration → Follow Up Email → AJAX data capturing. Works on both Luma and Hyva themes.
Improvements
- Manage Campaigns revenue dashboard now shows the correct currency per storefront — A new store scope picker on the Manage Campaigns page lets you filter revenue and order counts by storefront. When "All Store Views" is selected, revenue is summed in the website's base currency so the figures are comparable across stores. When a specific storefront is selected, revenue is shown in that store's display currency and filtered to orders from that store only. The selected store scope is preserved when changing the date range or navigating within the page. ⚠️
mst_emailreport_ordergains two new columns:store_id(smallint) andbase_amount(decimal 12,3). Both columns are backfilled automatically fromsales_orderonsetup:upgrade.
Fixed
- Manage Campaigns info banner text was partially obscured by an icon — A Magento status icon overlapped the first word of the scope note shown above the campaigns list. The conflicting CSS class has been removed and the banner now displays correctly.
- Duplicate question-mark icon on the Manage Campaigns toolbar — A generic Adobe "What is this?" tooltip appeared alongside the module-specific "Learn more about Email Campaigns" link, producing two identical icons side by side. The redundant icon has been removed.
2.11.4 (2026-06-02)
Improvements
- XML schema locations in all
etc/configuration files now use URN catalog references instead of relative paths, ensuring correct IDE validation regardless of where the module is installed on disk.
Fixed
- ⚠️ Generic
DataObjectmethods (getData,setData,hasData,addData,save,load,delete, and others) have been removed from theCampaignInterface,ChainInterface,QueueInterface,TriggerInterface, andUnsubscriptionInterfaceAPI Data interfaces — they were incorrectly exposed in REST and SOAP API responses. Also removed:TriggerInterface::getRule()/setRule()andQueueInterface::setArgs(). Custom code that calls these methods through an interface type hint must be updated to use the concrete model class or the specific typed getter/setter instead.
2.11.3 (2026-05-26)
Fixed
- Removed
unserialize()fallback inMirasvit\Email\Helper\Serializer. The helper is now JSON-only and marked@deprecatedin favour of\Magento\Framework\Serialize\Serializer\Json.
2.11.2 (2026-05-15)
Features
- Trigger emails when a specific product is added to cart or purchased — Two new trigger events let you send targeted follow-ups based on individual product interactions. "Product / Added to Cart" fires each time a customer adds a product to their cart (with a configurable deduplication window to avoid sending the same email too frequently), and "Product / Ordered" fires for each product line in a completed order. Both events make product, customer, cart/order, and store data available in your email templates.
Improvements
- Follow Up Email tab on the customer profile now loads faster and shows more controls — The "Follow Up Email" tab on the admin customer edit page now loads its content on demand (AJAX), so the customer page opens faster. The tab also gains column sorting, filters, the email subject column, and a Cancel button to remove a pending scheduled email directly from the customer profile without navigating away.
Fixed
- Campaign listing page errored when a condition class was no longer available — If a trigger condition referenced a class that was removed or renamed (for example after uninstalling a module), the campaigns listing page threw a fatal error. The page now skips unresolvable condition classes and continues loading the rest of the campaigns. The "no campaigns" empty-state banner is also now hidden when at least one campaign exists.
2.11.1 (2026-05-13)
Fixed
- Trigger audience and product conditions broken after upgrading to 2.11.0 — Triggers with audience or product conditions (e.g. "only send to customers in group X", "only if cart contains product Y") silently ignored those conditions after the 2.11.0 upgrade. Run
setup:upgradeto apply the included data migration that repairs the stored condition rules. - Abandoned cart emails not sending in some environments — Quote IDs retrieved from the event queue as text strings caused cart lookups to fail, preventing abandoned cart emails (and other quote-based triggers) from being sent or populated with the correct cart data.
2.11.0 (2026-05-11)
Features
- One-click unsubscribe compliance — All Follow Up emails now include RFC 8058
List-Unsubscribeheaders, satisfying Google's and Yahoo's 2024 bulk-sender requirements. Subscribers can unsubscribe with a single click directly from Gmail, Outlook, and other supporting email clients, improving deliverability and reducing spam reports. - Invoice, shipment, and credit memo triggers — New trigger events fire when an invoice, shipment, or credit memo is created for an order. Shipment emails can include the carrier name and tracking number via the
order.carrier_nameandorder.tracking_numbertemplate variables. - Wishlist event triggers — Triggers can now fire when a customer's wishlist product comes back in stock, drops in price, or runs low on inventory. Two additional triggers cover when an item is added to a wishlist or the wishlist is shared.
- Configurable event parameters — When editing a trigger, the form now shows settings specific to the chosen event type (for example, the inactivity period for a "no activity" event) so each trigger can be tuned without touching the global configuration.
- Admin alert for missing message queue consumer — A warning banner appears in the Email admin panel if the
mirasvit.emailevent.mq.registerconsumer is not configured inenv.php, preventing silent event-processing failures.
Improvements
- Pre-built wishlist and re-engagement campaign templates — New built-in campaign templates are available in the sample data: a Wishlist Campaign (back in stock, price drop, low stock) and a Customer Re-engagement campaign to win back shoppers who have been inactive.
- Improved admin accessibility — Admin panel pages now meet WCAG 2.2 AA standards, with better keyboard navigation and screen reader support.