Commerce 0.8: Products TV, Delivery Types & more

Commerce 0.8 is now available for alpha testers. This release includes some big changes, including a couple of breaking changes, so take extra care when updating Commerce, and please report anything out of the ordinary to

New: Products TV

This release introduces a new way to manage products inside a resource-based catalog. Previously you could either manage products using resource TVs, or you could manage the product records in the Commerce dashboard, but now with the all new Products TV, you can manage product records from a resource.

It’s kind of a hybrid solution. The product records are a bit more in line with how Commerce should be used (keeping the core products separate from their catalog presentation), but for people managing their store, they can access and edit products directly from their catalog.

This also reinforces the idea that product variations are in fact individual products, with their own names, prices, stock, etc. The products can be easily sorted with drag and drop, and the commerce.get_products snippet will help you output the information to the product page.

Read more about using the Products TV here.

New: Delivery Types & Order Shipments

Also new in 0.8 is the introduction of Delivery Types. Delivery types are assigned to both shipping methods and products, allowing order items to be grouped by delivery type. These groups are the Order Shipments, and for each shipment attached to an order, the customer will need to select a shipping method.

For example you might sell hardcopy books as well as ebooks, and by assigning those products a different delivery type and setting up the appropriate shipping methods, the customer will be asked to choose a shipping method for both.

This feature also paves the way for more delivery-related functionality that we’ll be able of adding without breaking backwards compatibility in future releases.

Read more about delivery types and order shipments.

New & Improved: Checkout Configuration

It’s also easier than before to configure the checkout flow. With a couple of new settings you can require the customer to login, allow guest checkout, or remove the account step completely.

The shipping step will now also check if there is only a single shipping method available, and if so, it will skip forward to the payment step automatically.

Full Changelog

The full changelog is included below and can also be found on the website.

New features

  • [checkout] New checkout_requires_account and checkout_show_account_step settings to give easier control over the account step [#134]
  • [checkout] If only one shipping method is available for a shipment, it is automatically selected, allowing the shipping step to be skipped
  • [checkout] New checkout_class system setting to change the used checkout process class (advanced) [#134]
  • [coupons] Add ability to (soft) delete coupons [S11328]
  • [reports] Add transactions report to export transactions during a timeframe
  • [shipping] Add min and max weight options to the weight-based shipping method [#121]
  • [shipping] Orders are now split up into shipments, based on new delivery types. See: Delivery Types - modmore documentation
  • [products] Add new Products TV to easily manage products linked to a resource. See: Products TV - modmore documentation [#68]


  • [dashboard] Use lexicons for the HTTPS check
  • [products] Fix 1 cent inaccuracy in resource product prices managed as decimals
  • [products] Add weight_formatted placeholder on products

Bug fixes

  • [dashboard] Fix broken products, customers, and tax rates tabs on certain environments [S12034]
  • [dashboard] Fix MultiSafePay gateway selection not showing properly when editing the payment method [S12060]

Breaking changes in this release

  • The templates for the checkout has seen various changes that will need to be updated in your own themes. Most importantly the shipping step (frontend/checkout/shipping-method.twig) is very different due to the introduction of Delivery Types and Shipments (see Delivery Types - modmore documentation), and the sidebar summary (frontend/checkout/partial/summary.twig) has also seen similar changes.
  • Shipping method classes should start implementing getPriceForShipment/isAvailableForShipment methods instead of getPrice/isAvailableForOrder. There’s some level of backwards compatibility for now, but the previous getPrice/isAvailableForOrder methods will be removed before v1.0.
  • The 0.7 approach to setting a checkoutClass on the checkout snippet has been replaced with a setting.
  • Various Checkout classes (NoAccount, RequiresAccount, OnePage) have been marked as deprecated and will be removed before v1.0. Use the settings to control the Standard process instead.