
New on Shopfront
Nicholas Clark
Welcome to what’s new on Shopfront for July & August 2025. We’ve been busy squashing bugs and working on some big things in the background that’ll be coming out soon!
Note: Some of these changes are gradually rolling out to stores, some of the changes may not be received in your store for a couple of weeks.
The colour select will now remain open if the mouse is released outside the picker,
The promotion category filter on the promotions page no longer requires you to type to view the list of categories,
Added a filter for last sold date to the customer utilities,
Rebate calculation has now been reworked to have a consistent set of rules for all promotions unrelated to the promotion activating,
Account & Billing page has been redesigned to use the latest Shopfront components and design system,
Improved visibility of which tabs contain issues when saving new edit pages,
Adding a collection of items to the order edit page now scrolls to the first item added instead of the last item added,
The mix criteria toggle is now disabled when it’s not applicable to be used,
Price lists can now be opted-in to applying discounts on top of promotions,
The entire store’s product list can now be added to a promotion criteria by adding “All Items”, useful for when you want a spend & get on any item instead of a specific category,
Products imported from Shopfront’s master database will now include suppliers that match your store,
Product descriptions are now tracked in the revision history,
Added a toggle to force users to change their password on next login,
[Developer] Shopfront’s Embedded Bridge now comes with a mock version that can be used for unit testing,
[Developer] Added a new bulk inventory changed webhook,
[Developer] Can now specify a tax amount or tax percentage when creating sales via the CreateSale mutation,
[Developer] Documentation search now includes Embedded API events
Editing a product that’s within a family now adds all the family products to the shelf tickets for other Outlets instead of just the product that was directly edited,
Sale keys that come from integrations now wait for the integration to fully load before they attempt to trigger,
Disabling the product or price field on the customer display no longer causes the table to be jumbled up when using with components,
Starting balance for customer accounts on receipts will now no longer show more than the currency’s number of decimal places,
Refreshing the product view page no longer triggers old v1 routing (leading to a potential saving of 10 seconds per refresh),
Saving no longer fails on the old product edit page when the user doesn’t have the edit barcode permission enabled,
Price is no longer calculated incorrectly when a product is on two separate promotions with two separate quantities and the quantity on the sell screen is equal to the promotions added together,
Prices now calculate correctly when using high-mixed pricing with multiple price points but without a single price,
Advanced promotions with the first criteria being optional and the second criteria being required now activate as expected when both items are added to the sale,
Unconsolidated products are now treated the same way as consolidated products when calculating promotions and the prices are instead distributed after calculation,
Products with no single price point and using decimal quantities on the sell screen now round pricing as expected,
Family products with different prices are now correctly handled when the family is on promotion with a discount amount,
Adding multiple request price products to the sale now calculate the total price of the sale correctly,
Parking and then unparking a sale with a family item no longer shows the price as a discount,
External stocktakes now calculate the total cost correctly when on the import page when importing huge stocktakes,
External stocktakes are now filtered on the client-side leading to significantly faster searching,
Customer payments can now be allocated when in Outlet mode,
Modifications to payment methods from the sales history now also adjust the payment method subtype,
Viewing a cancelled invoice no longer triggers the duplicate order dialog,
The active price set now reverts to the default price when changing from a register to global mode,
Leaving the price list view page no longer triggers a confirmation dialog,
Performing a force sync when offline and then a regular sync when back online no longer leads to incorrect takings,
Sales which are parked with part-paid integration payments and then later completed now correctly show the payment subtype,
Returning items from the sales history without being in a register no longer causes a failed upload,
Numerous minor UI adjustments,
[Xero] Movements no longer appear as rounding when sending register closures to Xero