Production Tenant Features
Commerce
- Fulfillment Location as Return Location: When creating a return, the system now supports defaulting the return location to the shipment’s fulfillment location. This behavior is configurable via a new site setting, “Use fulfillment location as return location,” available under Return Settings.
Inventory & Fulfillment
- Inventory UI Upgrade (Supply/Demand UI): The Inventory experience has been redesigned with an updated look and feel, along with new functionality.
Inventory management is now organized across dedicated pages — Inventory, Future Inventory, Shipments, and Settings — replacing the single, dense table view.
New capabilities amongst others include:- A Supply & Demand view for consolidated visibility into supply versus demand across multiple UPCs and locations
- A streamlined way to view and manage individual inventory records
- New filter capabilities by Product and Inventory attributes
- A calendar view for future inventory
See the Inventory documentation for more details
Production Bug Fixes
Production Sandbox Features
Catalog
- Configurable Variant Property Limit per Product Type: Merchants can now configure the maximum number of variant properties allowed on a product type beyond the previous hard limit of 30. A new tenant attribute,
catalog.productType.maximumVariantProperties, controls this limit on a per-tenant basis, with a default of 30 and an absolute ceiling of 100. The Product Type admin page, Product Edit page, and Active Properties modal all function correctly when the configured limit exceeds 30, and the related API endpoints return all variant attribute values without truncation. Import and Export operations are also subject to the same limit enforcement. - “Block Discounts That Cancel Their Own Minimum” Setting in Discount Condition Settings: A new toggle — “Block discounts that cancel their own minimum” — is now available under System → Discount Settings → Condition Settings. When enabled, this setting
(rejectSelfDefeatingDiscounts)prevents a discount from applying if applying it causes the order to fall below the discount’s own configured minimum. The toggle is off by default and includes a tooltip explaining its behavior. The setting is localized across all supported Admin UI locales (English, German, Spanish, French, Japanese, Korean). The existing “Include discounts for order min/max condition evaluation” toggle is unaffected. - Dynamic Price List Hierarchy Exposed as Product Property: The Product Runtime service now captures the dynamic price list hierarchy produced by the
GetPriceListHierarchyArc action and exposes it as a product property(system~DPLH)on the price object. When the Arc action modifies the hierarchy relative to the default, thesystem~DPLHproperty is populated inGetProductandValidateProductAPI responses, listing the price list codes from most-specific to least-specific. The property is hidden from shoppers and is omitted entirely when the hierarchy is unchanged or no Arc action is configured. This is an additive change to the API contract; existing integrations are not affected.
Commerce
- Payments - Support for Externally Tokenized Payment Instruments: Processing payments using tokens issued by an external payment token provider is now supported, allowing card and other instrument data to remain securely outside the platform while payments are still authorized, captured, voided, and credited as usual. This gives businesses added flexibility in how they manage payment credentials, while preserving all existing payment behavior for those who continue using standard tokenization.
Inventory
- Send Negative Inventory in Export files: Merchants whose inventory positions can fall below zero can now receive those accurate negative quantities in scheduled inventory export files. A new export setting,
sendNegativeInventory, allows export configurations to pass through real negative available quantities rather than clamping them to zero. When this setting is disabled (the default), export behavior remains unchanged — negative quantities continue to appear as 0 in the file, preserving existing behavior for all other merchants.

