Upgrade guide — v20 to v21 — E-commerce
On this page
This section applies to all stores. Make sure you review every subsection.
Salesforce package changes
Action required: Removed deprecated fields
The following fields were deprecated in earlier releases and have been removed from the StoreConnect package in v20/21. If you have Flows, Process Builder processes, validation rules, reports, page layouts, or integrations referencing any of these fields, update them to use the replacement fields before upgrading.
| Object | Removed field | Replacement field |
|---|---|---|
Order |
Customer_Notes__c |
Customer_Notes_Long__c |
Order |
Shipping_Cost__c |
Sum of Shipment__c.Cost__c or Shipment__c.Charge__c |
Order |
Total_Taxes__c |
Total_Tax_Amount__c |
Discount__c |
Ending_Date__c |
Expires_At__c |
Discount__c |
Starting_Date__c |
Starts_At__c |
Shipment__c |
Order_Item_Id__c |
Order_Id__c |
Shipment__c |
Status__c |
State__c |
Shipping_Rate__c |
Unit_Cost__c |
Unit_Cost_Amount__c |
Stock_Location__c |
Click_And_Collect_Allowed__c |
Online_Fulfillment_Options__c |
Stock_Location__c |
Fulfill_Online_Orders__c |
Online_Fulfillment_Options__c |
Article_Category__c |
Slug__c |
Path__c |
Product_Category__c |
Slug__c |
Path__c |
These fields have also been removed from the standard StoreConnect permission sets. Before removing access from any custom permission sets or cleaning up any references, confirm the field is not used for purposes outside of StoreConnect — for example, in custom Flows, integrations, or reporting that your org relies on independently. If a field has custom uses, assess whether those uses should be migrated to the replacement field before removing access.
- Search your Flows, Process Builder processes, and validation rules for references to the removed fields. For each reference found, determine whether it serves a StoreConnect purpose (update to the replacement field) or a custom org purpose (assess whether to migrate or retain separately).
- Search your reports, dashboards, and list views for any that include these fields. Update or retire them as appropriate.
- Review your page layouts and remove any removed fields.
- Review custom permission sets that granted access to these fields. Remove the access only once you have confirmed the field is no longer needed for any purpose in your org.
Review: Cart Fulfillment objects
Two new Salesforce objects represent the fulfillment state of a cart. Permissions for both objects are already included in the Administrator, Order Manager, and Sync permission sets.
| Object | Purpose |
|---|---|
Cart_Fulfillment__c |
Represents the fulfillment plan for a cart, including shipping address, provider, rate, and status |
Cart_Fulfillment_Item__c |
Represents an individual item within a cart fulfillment |
Review whether these objects should be added to your page layouts or included in custom permission sets. If you have Flows or automation that work with cart data, assess whether cart fulfillment records should be incorporated.
Review: Customer Notes field on Cart__c
Customer_Notes_Long__c (label: Customer Notes) on Cart__c stores notes provided by the customer during checkout and supports up to 10,000 characters.
Review whether this field should be added to your Cart__c page layouts.
Review: Assess record volumes and enable selecti for standard object records
If you have large volumes of records in your system, you can now select which records get included in the StoreConnect sync process for any standard object. This is designed for organizations with large volumes of records, such as millions of accounts, where only a subset of records are relevant to StoreConnect and need to sync.
Once you opt-in and enable this feature, only records you explicitly select for sync will sync — all others are ignored. Enable record sync.
If you do enable it, note the following:
- When StoreConnect creates a record from the store (a “fromStore” insert), it bypasses opt-in filtering for that initial creation. However, subsequent updates or deletes on that record from Salesforce are subject to opt-in filtering. Set
StoreConnect_Sync__ctoenable_syncautomatically on store-created records using a default field value, Flow, or trigger. Otherwise those records may stop syncing after creation. - Opt-in filtering applies across all sync paths: trigger-based sync, batch jobs, poll processing, and manual invocable sync actions.
- Custom objects are not affected by this mechanism.
Review: Advanced promotions objects
Version 21 introduces nine new Salesforce objects to support the Advanced promotions engine. Permissions for all nine objects are already included in the standard StoreConnect permission sets. No manual assignment is needed for the out-of-the-box sets.
| Object | Purpose |
|---|---|
Promotion2__c |
Core promotion record |
Condition__c |
Conditions that must be met for a promotion to apply |
Reward__c |
Reward definition: discount, free product, or free shipping |
Cart_Promotion2__c |
Links an applied promotion to a cart |
Promotion2_Condition__c |
Junction between a promotion and its conditions |
Promotion2_Product_Scope__c |
Scopes a promotion to specific products |
Promotion2_Usage__c |
Tracks how many times a promotion has been used |
Reward_Usage__c |
Tracks reward usage per order |
Order_Item_Reward__c |
Links a reward to a specific order item |
If you have custom permission sets in your org, review whether those sets should include access to the new objects. See Advanced Promotions for full feature documentation.
- 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 the new promotion objects is appropriate for that set’s audience.
Review: New fields on Cart_Item__c
| New field | Purpose |
|---|---|
Promotion2_Id__c |
Links a cart item to the Advanced promotion applied to it |
Transaction_Discount__c |
Records the discount amount applied to the item via a promotion |
Product_Component_Id__c |
Links a cart item to its product component record when part of a StoreConnect Bundle |
Review whether any of these fields should be added to your Cart_Item__c page layouts.
Review: New fields on OrderItem
| New field | Purpose |
|---|---|
Product_Component_Id__c |
Links an order item to its product component when part of a StoreConnect Bundle |
Deposit_Payment_Mode__c |
Records the payment mode used for a deposit on this line item |
Deposit_Percentage__c |
Records the deposit percentage applied to this line item |
Review whether any of these fields should be added to your OrderItem page layouts.
Review: Channels field on Shipping_Rate__c
v21 adds a Channels__c multi-select picklist field to Shipping_Rate__c. This field specifies whether a shipping rate applies to the web store, the POS, or both. Available values are web and pos.
The package upgrade automatically backfills all existing Shipping_Rate__c records with web;pos, so existing rates continue to apply to both channels after upgrade. A new validation rule requires Channels__c to be set when creating or updating any Shipping_Rate__c record going forward.
- After upgrading, confirm that your existing shipping rate records have
Channels__cset toweb;pos. - Review each shipping rate and determine whether it should be restricted to a specific channel. For example, in-store pickup rates may be appropriate for POS only. Web-only promotional rates should exclude POS.
- When creating new shipping rates, set
Channels__cbefore saving.
See Shipping Rate Object Reference for full field documentation.
Review: Channels field on Tax_Provider__c
v21 adds the same Channels__c field to Tax_Provider__c. The field and validation rule behave identically to the one on Shipping_Rate__c.
The package upgrade automatically backfills all existing tax provider records with web;pos.
- After upgrading, confirm that your existing tax provider records have
Channels__cset. - Review whether any tax providers should be scoped to a single channel.
- When creating new tax providers, set
Channels__cbefore saving.
See Tax Provider Object Reference for full field documentation.
Review: StoreConnect Bundles objects
v21 introduces three new Salesforce objects to support StoreConnect Bundles. Permissions are already included in the standard Administrator, Sync, and Order Manager permission sets.
| Object | Purpose |
|---|---|
Product_Component__c |
Defines a product as a component within a bundle, including quantity constraints and pricing |
Component_Group__c |
Groups components together so customers can choose between options within a bundle |
Component_Pricing__c |
Overrides component pricing per pricebook or per anchor product and pricebook combination |
If you have custom permission sets, review whether those sets should include access to the new 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
Product_Component__c,Component_Group__c, andComponent_Pricing__cis appropriate for that set’s audience.
See Product Bundles for full setup documentation.
Review: Channels field on Script_Block__c and Style_Block__c
v21 adds a Channels__c multi-select picklist field to Script_Block__c and Style_Block__c. This field scopes a script or style block to specific channels. Available values are web and pos.
When Channels__c is empty, the block loads on all channels. Existing script and style blocks are unaffected after upgrading.
If you have scripts or styles that should not load on the POS, such as third-party chat widgets, analytics tags, or web-only tracking pixels, you can now set Channels__c to web to prevent them from loading in POS sessions.
Review: Voucher activation deadline field
A new Activate_Before_Datetime__c date-time field on Voucher__c allows you to set a deadline by which a voucher must be activated. Vouchers not activated before this date and time cannot be redeemed.
Review whether Activate_Before_Datetime__c should be added to your Voucher__c page layouts and whether any existing vouchers should have an activation deadline set.
Review: New fields on Product2
| New field | Purpose |
|---|---|
Payment_Capture_Type__c |
Controls how payment is captured at checkout for this product. Options are Charge Immediately (default), Preauthorize Only, or Save Payment Method Only |
Exclude_From_Price_Reductions__c |
Multi-select picklist that prevents specific reduction types from applying to this product. Available values are discounts, promotions, and manual |
Review whether any products should use a non-default payment capture type or should be excluded from price reductions. If you are using Advanced Promotions, use Exclude_From_Price_Reductions__c to prevent promotions from applying to specific products.
Review: New fields on PricebookEntry
| New field | Purpose |
|---|---|
Exclude_From_Price_Reductions__c |
Per-entry override for price reduction exclusions. When blank, inherits the value from the product |
Variable_Pricing_Min_Amount__c |
The minimum amount a customer can pay when variable pricing is enabled on this entry |
Variable_Pricing_Max_Amount__c |
The maximum amount a customer can pay when variable pricing is enabled on this entry |
Minimum_Deposit_Amount__c |
The minimum deposit amount required when purchasing this entry via the POS |
Minimum_Deposit_Percent__c |
The minimum deposit percentage required when purchasing this entry via the POS |
Minimum_Deposit_Points__c |
The minimum deposit points required when purchasing this entry via the POS |
Review whether any of these fields should be added to your PricebookEntry page layouts.
Liquid template changes
Review: cart.create Liquid action
v21 adds a cart.create Liquid action, which allows templates to programmatically create a cart and associate it with an sc_id. This is useful for custom flows where a cart needs to be created before checkout is initiated.
No changes to existing templates are required. Review this if you maintain custom Liquid templates that manage cart creation.
Review: Custom objects in Liquid
Salesforce custom objects can now be synced to the web store and queried in Liquid templates. This enables data from any synced custom object to be surfaced on store pages without requiring a standard StoreConnect object.
See Custom Objects for documentation on setting up and querying custom objects in Liquid.
Action required: Product JSON-LD template renamed
The product structured data snippet has been renamed from snippets/products/product/json-ld.liquid to snippets/products/product/rich_data_json.liquid. For now, the old filename still works — StoreConnect automatically forwards requests for the old file to the new one behind the scenes. But this forwarding is temporary, so custom themes referencing the old filename should be updated before the next theme deployment.
- In Site Builder, search your theme files for
json-ld.liquid. If found, update the reference torich_data_json.liquid. - If you have not customized this template, no action is needed — StoreConnect manages the structured data output automatically.
- Update the reference before your next theme deployment to avoid breakage when the forwarding is removed.
See Product rich data snippet for the updated template reference.
Review: Liquid request headers
Liquid templates can now access HTTP request headers. This enables template logic based on headers such as user agent, referrer, or custom headers passed by integrations.
No changes to existing templates are required unless you want to use this capability.
Was this article helpful?
Thanks for your feedback! It helps us improve our docs.