Package v20.19 - 31 March 2026
On this page
This release is a substantial cart and POS update. New discount fields on Cart and Cart Item records lay the groundwork for flexible discounting at the cart level. Two new Cart Fulfillment objects introduce a structured model for grouping items by fulfilment type before an order is placed, supporting split-fulfilment scenarios such as combining shipping and pickup in a single cart. POS improvements include the ability to assign a specific view to a layout, and a new cart context option for print templates. Staff-assisted sales can now be tracked directly on cart and order item records. Bug fixes resolve media upload rendering for non-admin users and timeout error display.
Breaking changes and cautions
:::warning Channel default migrations may not have run for v20.17 → v20.18 upgrades. A versioning error in the v20.18 post-install migration caused the automatic channel default assignments for Payment Provider, Script Block, Shipping Provider, and Style Block records to be skipped when upgrading directly from v20.17. After upgrading to v20.19, the migration will run automatically and apply the correct defaults. Review your channel settings on these records after upgrading to confirm they are configured as expected. [PKG-7819] :::
Enhancements
Discount fields on cart and cart items [PKG-7843] Discount information can now be recorded directly on Cart and Cart Item records. Three new fields are available on both objects: - Discount Mode — a picklist with options: Amount or Percentage. - Discount Amount — a currency field for fixed-amount discounts. - Discount Percentage — a number field for percentage-based discounts.
These fields provide the data structure for applying discounts at both the whole-cart and individual-item level, enabling flexible discount workflows for web and POS orders.
Cart Fulfillment and Cart Fulfillment Item objects [PKG-7822] Two new objects — Cart Fulfillment and Cart Fulfillment Item — have been added to support split-fulfilment at the cart stage. A Cart Fulfillment groups cart items by delivery type, with fields for shipping address, shipping provider, fulfilment type (delivery, pickup, digital, subscription, transfer order, or custom), and purchase type. Cart Fulfillment Items link individual cart items to a fulfilment group, with quantity and asset reference. These objects allow merchants to manage multi-fulfilment carts — for example, some items shipped and others picked up in store — before an order is placed.
Shipping address fields on Shipment records [PKG-7822] A full shipping address is now available directly on Shipment records, complementing the Cart Fulfillment shipping data. New fields added to Shipment: Shipping Recipient Name, Shipping Street, Shipping City, Shipping State, Shipping State Code, Shipping Postal Code, Shipping Country, Shipping Country Code, Ship To Account, and Ship To Contact. These fields bring the Shipment record in line with the address data captured on Cart Fulfillment.
POS Layout view assignment [PKG-7899] POS Layouts can now reference a specific POS View. The new View field on a POS Layout record lets you assign a custom view to render instead of the default display, giving merchants greater control over the checkout screen presented at each terminal.
Cart context for POS print templates [PKG-7911] A new Cart option has been added to the Context field on POS Print Template records. This allows you to configure a dedicated print template for the cart stage — for example, to print a quote or cart summary before payment is taken — in addition to the existing transaction and order contexts.
Assisted By user tracking on cart items and order items [PKG-7937] A new Assisted By User ID field is now available on both Cart Item and Order Item records. This field records the Salesforce user ID of the store staff member who assisted a customer with that line item, enabling staff-assisted sales tracking and reporting at the line-item level.
Deprecated fields
No fields have been formally deprecated in this release.
:::note Several fields on Cart Fulfillment Item (Payment Amount, Payment Mode, and Payment Percentage) were included for compatibility purposes and are marked as deprecated. These fields will be removed in a future release. :::
Fixed bugs
Media uploaded by non-admin users not rendering [PKG-7720] Media files uploaded by users with minimum Salesforce access — using SC Content or Theme Manager permission sets rather than SC Admin or System Admin profiles — were not rendering in content blocks and could not be used by other users. The uploaded files were accessible via direct URL, but the underlying Cloudinary folder path was not being scoped to the organization correctly for these users. This is now fixed: media uploaded by any user is stored in the correct organizational folder and renders as expected.
Timeout errors displayed as a blank screen [PKG-7818] When a server request timed out and returned a non-JSON response (such as a blank Heroku timeout page), no error message was shown and users saw an empty screen. Timeout errors are now detected and handled correctly, displaying a meaningful error message to the user.
Channel migrations skipped during v20.17 to v20.18 upgrade [PKG-7819] Version references in the post-install migration were incorrect, causing the channel default migrations introduced in v20.18 to be skipped when upgrading from v20.17. This affected automatic channel assignments for Payment Providers, Script Blocks, Shipping Providers, and Style Blocks. The version gate has been corrected and the migrations will now run for both v20.17 and v20.18 upgrade paths.