Best Sellers (Reports for Craft Commerce) icon

Best Sellers (Reports for Craft Commerce)

Version 1.3.0

May 20, 2026

Added

  • "Item Sales (Net)" column on the Products report. Value is Item Subtotal minus any coupon or manual discount attributed to the line item.
  • lineDiscount column on best_sellers_variant_sales. Bundle children receive a proportional share.
  • Default selection of Paid and Partial in the Orders page payment status filter.

Changed

  • Date filtering and Daily Stats aggregation now bucket dates in the Craft app timezone.
  • Products report excludes orders with a full balance owed (totalPaid <= 0 AND totalPrice > 0).

Fixed

  • Divergence between Products and Orders reports caused by inconsistent timezone handling in raw queries versus element queries.
  • Fully refunded orders no longer appear in the Orders report summary totals.
  • Orders report summary total derives from the same element query filter set as the row data.

Version 1.2.0

May 6, 2026

Added

  • Settings page under the Best Sellers control panel nav for configuring plugin defaults
  • Default order statuses setting that pre-selects the global order status filter on first visit per session
  • best-sellers:manageSettings permission gating access to the settings page

Fixed

  • Report and backfill queries now exclude soft-deleted orders

Version 1.1.4

April 20, 2026

Changed

  • Use moneyphp/money for bundle allocation and stats averages to prevent float drift

Version 1.1.3

April 18, 2026

Added

  • Support for the webdna Commerce Bundles plugin: bundle line items are expanded into their child variants and revenue is allocated across them by price weight
  • fromBundle marker on product and variant rows to indicate units that were sold as part of a bundle
  • Snapshot fallback so line items whose purchasable has been deleted still contribute revenue and identifiers to reports
  • productTypeId column on variant sales, denormalized from the product at the time of sale

Changed

  • Removed productId/variantId foreign keys on variant sales so rows survive purchasable deletion
  • Product type joins now use the denormalized productTypeId and show "Unknown" when the product type is missing
  • Backfill order queries no longer pre-fetch processed order IDs; duplicate processing is short-circuited inside the sales logger
  • Customer report links now use UrlHelper::cpUrl() to produce control panel URLs

Version 1.1.2

March 23, 2026

Changed

  • Migration safeDown() methods follow Commerce convention (non-reversible)

Version 1.1.1

March 23, 2026

Added

  • Backfill logs table for tracking order processing failures during backfill and daily stats jobs
  • Backfill logs displayed on the Operations page with clear button
  • Dashboard empty state notice with link to backfill utility when no data exists
  • Console commands for clearing and refreshing individual data tables: clear-orders, clear-daily-stats, clear-logs, refresh-orders, refresh-daily-stats
  • Console --start-date/--end-date options for scoping backfill to a date range
  • Console --date option for rebuilding daily stats for a single day
  • Auto-pruning of backfill logs via Craft garbage collection (keeps 500 most recent)

Changed

  • Backfill utility UI now explains that empty date fields will process all orders
  • All backfill utility strings are translatable
  • Backfill and daily stats jobs now catch errors per-item and continue processing instead of failing the entire batch

Version 1.1.0

March 23, 2026

Added

  • All new dashboard organized the overview into focused sections: Overview, Discounts & Order Composition, Customers & Retention, Product Performance, and Carts.
  • Ability to scope relevant dashboard data to specific order statuses
  • Orders report page
  • Products report page
  • Customers report page
  • Operations page
  • Cart restore feature
  • Front-end text string are translatable
  • Postgres compatible

Version 1.0.2

March 29, 2025
  • Fix best sellers query to use dateOrdered

Version 1.0.1

March 28, 2025
  • Fix db query error

Version 1.0.0

March 28, 2025
  • Initial release