# Upgrade guide — v19 to v20 — E-commerce

Source: https://support.storeconnect.com/articles/upgrade-guide-v19-to-v20-ecommerce · Last modified 21 August 2026

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](cart-object-reference) and [Cart Item Object Reference](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.

1. If you use only the standard StoreConnect permission sets, no action is needed.
2. 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`, and `Cart_Campaign__c` is 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 |

1. In Salesforce **Setup**, search **Flows**, **Process Builder** processes, and **Validation Rules** for references to the deprecated objects and fields above.
2. Search your **Reports and Dashboards** for any that include these fields or objects.
3. 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](zones) 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.

1. Open the **StoreConnect Web Console** for your store.
2. Browse through your store — visit the cart page, checkout, and any custom pages that render cart or order data.
3. In the Web Console log, use the **Warnings** filter to display only entries that triggered deprecation warnings.
4. Click each flagged entry to see the warning detail. Each warning identifies the deprecated key and its replacement.
5. 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](cart-items-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](cart-liquid-object-reference) and [DeliveryOptions - Liquid Object Reference](delivery-options-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.

1. 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.
2. 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](zones) for full zone configuration reference.

1. In the StoreConnect Config app, navigate to **Zones** and review your existing zone records.
2. Assess whether any zones should have strict matching enabled based on your shipping or tax requirements.
3. If you enable `Strict__c` on 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.

1. Identify any reports, list views, or dashboards that tracked abandoned orders. Recreate them using `Cart__c` records filtered by `Abandoned__c = true`.
2. 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__c` records where `Abandoned__c` becomes true.
3. Review the `cart_abandoned_hours` Store Variable on each store to confirm the abandonment window matches your business requirements.
4. Confirm any external integrations that consumed abandoned order data are updated to consume `Cart__c` records instead.

See [Process empty and abandoned carts](abandoned-carts) and [Saved carts](saved-carts) for full documentation on how carts work in v20.

---

## Follow StoreConnect

- [Email Newsletter](https://getstoreconnect.com/c/lp-newsletter)
- [LinkedIn Newsletter](https://www.linkedin.com/build-relation/newsletter-follow?entityUrn=7444956928444862464)
- [YouTube](https://www.youtube.com/channel/UCngKdP2x8l1wcbAKW3tvU8g)
- [LinkedIn](https://www.linkedin.com/company/storeconnect)
- [X / Twitter](https://x.com/storeconnecthq)

## Popular Links

- [Partners](https://getstoreconnect.com/partners)
- [News](https://getstoreconnect.com/articles/news)
- [Events](https://getstoreconnect.com/articles/events)
- [Feature Comparison](https://getstoreconnect.com/how-we-compare)
- [Download a free trial](https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000FMkeKUAT)
- [Book a Demo](https://getstoreconnect.com/contact)

## Documentation

- [Help documentation](https://support.storeconnect.com/help-documentation)
- [AI agents](https://support.storeconnect.com/ai)
- [Videos & tutorials](https://support.storeconnect.com/videos-tutorials)
- [Developer reference](https://support.storeconnect.com/developer-reference)
- [Release notes](https://support.storeconnect.com/release-notes)
- [Troubleshooting](https://support.storeconnect.com/troubleshooting)
- [Trust Center](https://trust.getstoreconnect.com/)
- [Status Page](https://status.storeconnect.com/)

## Contact

- info@getstoreconnect.com
- US +1 415 745 3230
- AUS +61 2 8365 2308

100 S Ashley Dr, Suite 600-2461
Tampa FL 33602-600 USA

Level 22, Sydney Place
180 George Street
Sydney, NSW, 2000, AUS

---

StoreConnect Support — https://support.storeconnect.com/articles/upgrade-guide-v19-to-v20-ecommerce