Upgrade guide — v19 to v20 — E-commerce
On this page
This section applies to all stores. Make sure you review every subsection.
Salesforce package changes
Review: New cart objects
v20 adds three new objects to support saved shopping carts. Object permissions are already included in the standard StoreConnect permission sets — no manual permission assignment is needed for the out-of-the-box sets.
| Object | Purpose | Standard permission sets |
|---|---|---|
Cart__c |
Stores the shopping cart header, including addresses, customer metadata, source, and status | Administrator, Sync, Order Manager, Content Manager |
Cart_Item__c |
Individual line items within a saved cart | Administrator, Sync, Order Manager, Content Manager |
Cart_Campaign__c |
UTM campaign tracking data associated with a cart | Administrator, Sync, Order Manager, Content Manager |
See Cart Object Reference and Cart Item Object Reference for full field details. If you have created custom permission sets in your org, review whether those sets should include access to the new cart objects.
- If you use only the standard StoreConnect permission sets, no action is needed.
- If you have custom permission sets, navigate to Setup > Permission Sets, open each custom set, and assess whether access to
Cart__c,Cart_Item__c, andCart_Campaign__cis appropriate for that set’s audience.
Review: Deprecated objects and fields
The following objects and fields have been deprecated in v20. Their labels are now prefixed with [DEPRECATED]. Consider removing any references from automations, flows, validation rules, reports, and page layouts.
| Deprecated item | Type | Action |
|---|---|---|
Product_Purchasable_Media__c |
Object | Remove references from flows, reports, and page layouts |
Product_Purchasable_Media__c.Media_Id__c |
Field | Remove from page layouts and any automation referencing this field |
Product_Purchasable_Media__c.Product_Id__c |
Field | Remove from page layouts and any automation referencing this field |
Trait_Category__c.Display_As_Filter_Top_Level__c |
Field | Remove from page layouts and any automation referencing this field |
- In Salesforce Setup, search Flows, Process Builder processes, and Validation Rules for references to the deprecated objects and fields above.
- Search your Reports and Dashboards for any that include these fields or objects.
- Remove or update any references found.
Review: New fields on existing objects
| Object | New field | Purpose |
|---|---|---|
Zone__c |
Strict__c |
Enables strict address matching for an individual zone |
Payment__c |
Fingerprint__c |
Payment fingerprint, auto-assigned for manual payments |
Payment_Provider__c |
Channel__c |
Payment provider channel identifier |
Review whether any of these fields should be added to your object page layouts. See Configure zones for tax and shipping areas for documentation on zone configuration.
Liquid template changes
The line_item / LineItem concept has been renamed to cart_item / CartItem throughout StoreConnect Liquid. This affects template snippet keys, translation keys, Liquid drop properties, and cart controller parameters. All deprecated references still function in v20 but generate warnings in the Web Console and will be removed in a future version.
Action required: Update deprecated keys
Deprecation warnings are logged to the Web Console in real time as pages are rendered.
- Open the StoreConnect Web Console for your store.
- Browse through your store — visit the cart page, checkout, and any custom pages that render cart or order data.
- In the Web Console log, use the Warnings filter to display only entries that triggered deprecation warnings.
- Click each flagged entry to see the warning detail. Each warning identifies the deprecated key and its replacement.
- Update the affected templates and re-browse those pages to confirm the warnings are resolved.
Action required: Update deprecated template keys
If your theme includes custom versions of these snippets or controllers, rename them using the replacement keys in the table below. See CartItems Controller - Liquid Controller Reference for the current controller documentation.
| Deprecated key | Replacement key |
|---|---|
snippets/shared/line_items/booking_details |
snippets/shared/cart_items/booking_details |
snippets/shared/line_items/item |
snippets/shared/cart_items/item |
snippets/shared/line_items/pricing |
snippets/shared/cart_items/pricing |
controllers/line_items/destroy |
controllers/cart_items/destroy |
Action required: Update deprecated translation keys
If your store uses custom translations, update any entries using the replacement keys in the table below.
| Deprecated key | Replacement key |
|---|---|
line_items.links.edit_bundle |
cart_items.links.edit_bundle |
line_items.links.remove_item |
cart_items.links.remove_item |
line_items.quantity |
cart_items.quantity |
Action required: Update deprecated Liquid drop properties
Search your templates for the deprecated property names below and update them using the replacement properties in the table below. See Cart - Liquid Object Reference and DeliveryOptions - Liquid Object Reference for current drop documentation.
| Drop | Deprecated property | Replacement property |
|---|---|---|
cart |
bookable_line_items_valid_until |
bookable_cart_items_valid_until |
delivery_options |
line_item |
cart_item |
Action required: Update deprecated cart controller parameters
If your templates submit forms to cart.update or cart.remove Liquid controller actions using a line_item parameter, update them using the replacement parameters in the table below.
| Action | Deprecated parameter | Replacement parameter |
|---|---|---|
cart.update |
line_item |
cart_item |
cart.remove |
line_item |
cart_item |
Review: New Liquid drop properties
The following new properties are available in your Liquid templates.
| Drop | Property | Type | Description |
|---|---|---|---|
subscription |
renewal_order |
Order | The Order associated with the next subscription renewal |
subscription |
renewal_order_date |
Timestamp | Date when the renewal Order will be generated |
order |
checkout_step |
String | Current checkout step. The value "pending_renewal" identifies subscription renewal orders |
cart |
bookable_cart_items_valid_until |
Timestamp | Booking timer expiration for bookable items in the cart |
Behavior changes
Review: Returns no longer increase available-to-sell
Processing a return no longer increases the Available to Sell quantity on a product. Returned stock must now be manually adjusted back into inventory before it is made available for sale again.
- Review your current returns process. If you previously relied on StoreConnect automatically restoring stock on return, you will now need to manually adjust inventory or build your own automation to do so.
- Update any internal SOPs or documentation for your operations team to reflect this change.
Review: Strict zone matching
Individual zones can now be configured as strict using Zone__c.Strict__c. When enabled, a customer’s address must exactly match the zone’s criteria to qualify. Review your zones if any of your shipping or tax rules rely on zone matching behavior. See Configure zones for tax and shipping areas for full zone configuration reference.
- In the StoreConnect Config app, navigate to Zones and review your existing zone records.
- Assess whether any zones should have strict matching enabled based on your shipping or tax requirements.
- If you enable
Strict__con any zones, test checkout flows with borderline addresses to confirm the behavior is correct.
Action required: Abandoned orders no longer created, review abandoned carts
In v19, when a customer started checkout but did not complete payment, StoreConnect created an order record to represent the incomplete checkout. These were commonly referred to as ‘abandoned orders’.
In v20, this changed. A Cart__c record tracks the customer’s intent from the moment they arrive at the store. An order is only created after the customer completes payment. There are no abandoned orders.
Incomplete checkouts that have been idle beyond the configured abandonment window are processed by the automated abandoned cart job, which sets the Abandoned__c checkbox on the Cart__c record. The abandonment window defaults to 10 hours and is configurable per store via the cart_abandoned_hours Store Variable. Only carts with a Source of web are eligible — POS, API, and manual carts are never automatically abandoned.
- Identify any reports, list views, or dashboards that tracked abandoned orders. Recreate them using
Cart__crecords filtered byAbandoned__c = true. - Identify any Flows, Process Builder processes, or automation triggered by abandoned orders — for example, recovery email campaigns or internal notifications. Update these to trigger on
Cart__crecords whereAbandoned__cbecomes true. - Review the
cart_abandoned_hoursStore Variable on each store to confirm the abandonment window matches your business requirements. - Confirm any external integrations that consumed abandoned order data are updated to consume
Cart__crecords instead.
See Process empty and abandoned carts and Saved carts for full documentation on how carts work in v20.