Version 5.2.1
Added
- "Refresh" button next to the "Data last refreshed" timestamp on custom pages, which clears the cached widget data and reloads the page
Changed
- Shortened the Cache Duration setting instructions, which now link to the Caches utility
- Settings instructions now link straight to Orders, Products and Order Statuses instead of spelling out their control panel paths
Version 5.2.0
This release adds 4 new widgets, taking the total to 15, and 2 analytics bars — one above Commerce → Orders and one above Commerce → Products.
Added
- NEW WIDGET Orders to Fulfil - count of orders awaiting fulfilment, with target duration and period comparison
- NEW WIDGET Orders Fulfilled - count of fulfilled orders, with target duration and period comparison
- NEW WIDGET Orders Shipped - count of shipped orders, with target duration and period comparison
- NEW WIDGET Orders Returned - count of returned orders, with target duration and period comparison
- NEW Analytics bar above Commerce → Orders showing Orders, Revenue, Avg Order Value, Orders to Fulfil, Orders Fulfilled, Awaiting Payment, Orders Shipped, Orders Returned, Items Ordered and Customers
- NEW Analytics bar above Commerce → Products showing Products, Out of Stock, Low Stock, Avg Price, Stock Value, On Promotion, Unavailable and Variants
- Analytics bars are driven by the same query as the index beneath them, so the selected source, status, search, custom filters and date range all apply to the stats
- Order analytics bar stats compare against the period of equal length immediately before the selected date range, hiding the change indicator when no date range is set
- Analytics Bars settings tab, with an enable switch and per-stat toggles (six at most) for each bar
- Statuses settings tab for mapping order statuses to Orders to Fulfil, Orders Fulfilled, Orders Shipped and Orders Returned, shared by the analytics bar and the new widgets
- Low Stock Threshold setting, used by the Low Stock product stat
- "View Orders Analytics Bar" and "View Products Analytics Bar" user permissions
Version 5.1.1
Improved
- Removed unused code, imports, and dead methods across the plugin
- Widgets now gracefully handle unknown saved properties instead of throwing errors
Fixed
- Migration to remove deprecated
groupBysetting from saved Top Customers widgets
Version 5.1.0
This is a major overhal of the plugin, with a complete visual redesign of all widgets (+ New widgets) and a new page system. You may need to save some settings on each widget after updating. I've tried my best to keep these where possible.
CP "Pages" is now possible to create custom pages/subpages full of widgets, as well as still having widgets on the CP dashboard.
Added
- NEW WIDGET Locations widget - Interactive 3D Mapbox globe showing order/customer locations by country
- NEW WIDGET New vs Returning Customers widget with line chart tracking new and returning customers over time
- NEW WIDGET Conversion Rate widget with funnel visualisation (Added to Cart, Checkout, Completed)
- NEW Custom Pages - create multiple dashboard pages per user with drag-and-drop widget management
- Comparison Mode setting ("Full Period" or "To Date") for fairer change indicators — "To Date" compares equivalent elapsed portions (e.g. Jan 1–Feb 18 2026 vs Jan 1–Feb 18 2025)
- "Data last refreshed" timestamp label on custom pages when caching is enabled (#25)
- Revenue tooltip on Top Products and Top Customers widgets explaining the total
- Cancelled and Expired columns on Subscription Plans widget
- Country flag and location on Top Customers widget
- Mapbox Access Token plugin setting with environment variable support
- "Enable Pages" plugin setting to toggle the pages feature
- User permissions for viewing pages, managing pages, and accessing widgets
- Fiscal Year option to widget target duration settings
- Fiscal Year start/end day and month settings for granular fiscal year configuration (#24)
- All Time option to widget target duration settings
- Product Type filter on Recent Products widget with type name in title
- Order Status filter on Recent Orders widget with status name in title
- Plugin Name setting
- Change indicator on Cart Abandonment widget comparing current vs previous period
- Hover tooltip on change indicators describing the comparison period
- Improved line graph styling with detailed/minimal options
Changed
- Default target duration changed from monthly to yearly
- Complete visual redesign of all widgets
- Extracted widget query logic into specific services (Orders, Products, Customers, Carts, Subscriptions)
- Shared date filtering across all services via
applyDateFilter() - Recent Orders and Recent Products data now fetched in PHP services instead of Twig templates
- Cart Abandonment widget now respects all target duration settings (daily, weekly, monthly, yearly, fiscal year, all time)
- Cart Abandonment consolidated into a single
getCartAnalytics()service call with 2 DB queries instead of 5 separate calls - Cart Abandonment only counts inactive carts (per Commerce's
activeCartDurationsetting) for abandoned stats - Chart legend hidden in simple graph style
- Order Status dropdown in Top Products and Recent Orders now uses a standard select field
- Updated config.php to match all current plugin settings
- Improved tooltip positioning
- Updated styling across Top Products and Top Customers widgets
Improved
- Extracted fiscal year calculation into shared
getFiscalYearDates()helper, removing duplication across 5 files - Extracted order status select into shared settings component used by Recent Orders and Top Products
- Line chart JavaScript wrapped in IIFE to prevent global scope pollution with multiple widgets
- Removed unused bar chart template
Fixed
- All date calculations now respect Craft's configured timezone instead of using the server timezone (#32)
- PostgreSQL compatibility by replacing MySQL-specific date functions (DATE_FORMAT, YEAR, MONTH, WEEK) with database-agnostic BETWEEN conditions (#58)
- Error when adding Top Customers and Top Products widgets (#69)
- Settings screen is no longer blank and has settings (#36)
- Top customers error (#31)
- Top Products & Cart Abandonment Graph trashed elements (#30)
- SQL 5.7 error on Top Customers widget (#29)
- SQL Error in Subscriptions Widget (#13)
- Cart Abandonment direction arrow now reflects actual data direction with inverted colour sentiment (up + red = more abandons, down + green = fewer abandons)
- Subscription Plans widget only counting active subscriptions, now correctly counts all subscription states
- Widget refresh and resize behaviour
- Top Customers widget using
totalPriceinstead oftotalPaidfor revenue calculation - Total Revenue & Orders widget filtering by cart creation date instead of payment date
- Total Revenue & Orders widget missing orders on end-of-period boundaries (week/month)
- Total Revenue & Orders widget using
totalPriceinstead oftotalPaidfor revenue - Total Revenue & Orders widget counting trashed orders in totals
- Top Products widget returning no results due to MySQL strict GROUP BY mode
- Cart Abandonment widget not respecting target duration settings
- Cart Abandonment total price not displaying due to type casting from database
- Duplicate customers in Top Customers widget caused by grouping on both email and customerId
- Icon paths in Top Products widget
- OrderStatus color error when status is null
Version 5.0.1
Changed
- Icon to a new shiny (literally) icon
Version 5.0.0
Changed
- Craft 5 compatibility
Version 3.0.0
Changed
- Now requires PHP ^8.0.0.
- Now requires Craft CMS ^4.0.0
Version 2.0.21
Fixed
- GROUP_BY error in 5.7 on TopCustomers widget
Version 2.0.20
Fixed
- Namespace on asset bundle which is now case sensitive (Thanks to @matt-adigital)
Version 2.0.19
Changed
- Minor visual adjustment to make
TopCustomersandProductTopwidgets the same styling
Version 2.0.18
Fixed
- Added a default limit on
TopCustomerswidget to fix issue where it pulls all customers in if the widget already existed on the dashboard
Version 2.0.17
This plugin now requires Craft CMS 3.2.x or higher due to the way it now deals with trashed orders. It's also recommended to now use a
commerce-widgets.phpconfig file for the plugin settings since this version doesn't include the ability to modify settings via the CP.
Due to a change on the Cart Abandonment widget, it's recommended to increase the
purgeInactiveCartsDurationsetting incommerce.phpfile in you config folder.
Changed
- Removed settings from CP and made it only available via a
commerce-widgets.phpconfig file.
Added
- Added
excludeEmailAddressesconfig setting to allow excluding of orders/customers via email across all widgets (#28) - Added limit option to
TopCustomerswidget
Fixed
- Data totals were being pulled through even when orders were trashed (#27)
- Order totals and revenue totals were being pulled through even if the order wasn't complete
- Customers are now grouped by email address only on the
TopCustomerswidget, fixing an issue where duplicates appeared
Version 2.0.16
Fixed
- Completed carts value on
CartAbandonmentwidget not grouped by month and year, not just month - The 'Today' value now matches the current day, not the first day of the week on
TotalRevenueOrderswidget
Changed
- Product titles now trim if they are above 40 characters
Version 2.0.15
Fixed
- Fixed step count issue by removing step value on
CartAbandonmentwidget
Version 2.0.14
Fixed
- Issue with MySQL 5.7 on
CartAbandonmentwidget
Added
- Added year to the 'Month' date on the
TotalRevenueOrderswidget
Version 2.0.13
Fixed
- Plural spelling on
CartAbandonmentwidget
Changed
- Step size to work better with large quantity of orders on
CartAbandonmentwidget
Version 2.0.12
Fixed
- Total data now outputs week and month correctly on
TotalRevenueOrderswidget - Issue with Verbb Gift Voucher on
ProductsTop(#20) - Graph now outputs the correct values on
CartAbandonmentwidget - Removed deprecated
round()function (#22) userIdByCustomerIdnot prefixed on customers table (#23)
Changed
- Column title on
ProductsTopwidget now Orders not Ordered (#17)
Added
- Subscription Plan URL added to the plans on
SubscriptionPlanswidget
Version 2.0.11
Added
- Added
Order Statussetting to the Top Products Widget.
Version 2.0.10
Fixed
groupByissue with MySQL 5.7 on some widgets- Week was showing incorrectly in the Goal widget
- Installing the plugin now populates the cache setting by default
Changed
- When no elements exist on a widget they now show a message
Version 2.0.9
Added
- New Widget Top Products Widget - See your top products ordered by Revenue or # Ordered
- Cache to queries to speed up the CMS
cacheDurationsetting in plugin settings.- Added FontAwesome to some widget templates
Changed
- Changed the class of the
RecentProductstoProductsRecentto keep widgets organised going forward.
Fixed
- Number formatting across all widgets now formats when the value is more than 2 numbers
Version 2.0.8
Changed
- Charts are now flexible to larger browsers
- Altered the stepSize on the Cart Abandonment widget for stores that have large amounts of carts.
Version 2.0.7
Fixed
- Fix prefixed tables on join queries #9
Version 2.0.6
Fixed
- Fix prefixed tables #9
Version 2.0.5
Fixed
- Fix for classes not loading on case sensitive environments
Version 2.0.4
Changed
- License from MIT to Craft
Version 2.0.3
Added
- Subscriptions widget
Fixed
- Show all products regardless of status
Changed
- Removed redundant code
- Removed settings from customers widget
Version 2.0.2
Changed
- Tidying up and updating the versions
Version 2.0.1
Fixed
- Minor bugs for stores that are empty (Initial installs)
Version 2.0.0
Added
- Initial release