{"title":"Package v21.14 - 13 October 2026","slug":"package-v21-14","url":"https://support.storeconnect.com/articles/package-v21-14","url_markdown":"https://support.storeconnect.com/articles/package-v21-14.md","subtitle":null,"summary":"Package release v21.14 adds product fields for search engine rich results (color, size, ratings, shipping, warranty, and return policy), fills the product attribute fields from existing traits on upgrade, and adds fields for excluding a product from a sales channel and for accepting form submissions from cached pages. It also fixes POS sign-in for staff whose Salesforce user never synced, rental fulfillments that failed to sync, and Web Domain problems in refreshed sandboxes.","type":"Release_Notes","video_url":"","keywords":"v21, v21.14, release notes, package, rich results, structured data, schema.org, product attributes, color, material, size, pattern, rating, review count, warranty, return policy, shipping cost, excluded channels, alternative verification methods, cached pages, shipment state, on loan, returned, outlet user, POS sign-in, web domain, get sandbox, content change, Winter 27","last_modified":"2026-10-16T02:04:56+0000","body_markdown":"This release mostly prepares Salesforce for storefront features that arrive with v22. Products gain fields that describe them to search engines (color, size, ratings, shipping, warranty, and return policy), and the four product attribute fields fill themselves in from the traits you already have. Products also gain a field for hiding them from a sales channel, and forms gain a setting for accepting submissions from cached pages. Several fixes target setup and sync: POS staff who could not sign in, rental fulfillments that failed to sync, and Web Domain records in a refreshed sandbox that could affect your production site.\n\n## Breaking changes and cautions\n\n**Get sandbox now deletes the Web Domain records copied from production**\n\nA sandbox refresh copies your production **Web Domain** records into the sandbox. Running **Get sandbox** now deletes those copies, so the refreshed sandbox no longer holds records for your production domains. Before you run **Get sandbox**, saving a new **Web Domain** in the refreshed sandbox is refused with a message telling you to complete setup first.\n\nIf the sandbox store had a custom domain, create the **Web Domain** record again after setup, as described in [set up your store again after a sandbox refresh](refresh-a-storeconnect-sandbox). [PKG-10753]\n\n**Several new fields do nothing until v22**\n\nThe following fields are in your org from this release, but only the v22 storefront reads them:\n\n- **Excluded Channels** on a product\n- **Alternative Verification Methods** on a form\n- The rating, shipping, warranty, and return policy fields on a product and the return policy fields on a store, described under Enhancements\n\nYou can fill them in now. Doing so changes nothing on your storefront or POS until you are on v22. [PKG-10204, PKG-9880, PKG-7505]\n\n### If you use Color, Material, Size, or Pattern traits\n\nThis applies if any of your products has a trait whose **Trait Type** is named `Color` (in either the US or British spelling), `Material`, `Size`, or `Pattern`, ignoring case. Only a trait type whose **Value Type** is Text, Number, Decimal, Currency, Percent, or Checkbox is copied; a Date, Email, URL, or Long Text Area Markdown trait type leaves the field blank.\n\nProducts gain four attribute fields, **Color**, **Material**, **Size**, and **Pattern** (`Product2.s_c__Color__c`, `s_c__Material__c`, `s_c__Size__c`, `s_c__Pattern__c`), in a new **Product Attributes** section. Each one takes the value of the matching trait, so you do not need to fill them in. Like the other new product fields, they change nothing on your storefront yet.\n\n**The upgrade updates every product with a matching trait, and the variants that inherit from those products.** After the upgrade, a background job copies trait values into the new fields, updating each of those products and variants once. A product whose fields already hold the right values is not written. Your own automation on Product runs for each update, including record-triggered flows, Apex triggers, and validation rules. **Last Modified** changes on each product, and if your sync is connected, each one is sent to your store. A product that fails one of your validation rules is skipped, and the attribute fields on it stay blank. If you have automation on Product that should not run for a bulk update, review it before you upgrade.\n\n**After the upgrade, traits keep the fields up to date.** The value is copied in whenever a trait of that type is added or changed, and removing the trait clears the field. A variant with no trait of its own takes the value from its master product. A value typed by hand stays until a trait of that type next changes, so type values only on products that have no trait of that type. [PKG-7505]\n\n## Enhancements\n\n**Product fields for search engine rich results**\n\nProducts gain fields that the v22 storefront publishes as structured data, the machine-readable description of a product that search engines use for rich results such as star ratings, shipping costs, and return windows:\n\n- **Rating Value**, **Review Count**, and **Best Rating**, in the **SEO** section. A rating is published only when both **Rating Value** and **Review Count** are set, and **Rating Value** is no higher than **Best Rating** (5 when blank).\n- **Shipping Charges** (`Free` or `Billed`) and **Shipping Cost**, in the **Shipping Information** section. These describe shipping to search engines only. Checkout shipping still comes from your shipping rates.\n- **Warranty Duration** and **Warranty Unit** (`Day`, `Week`, `Month`, or `Year`, with `Month` used when blank), in the **Page Content** section. The warranty is published only when the product also has **Product Warranty** text.\n- **Return Policy Category**, **Return Window Days**, **Return Policy Country**, and **Restocking Fee**, in a new **Return Policy** section.\n- **Color**, **Material**, **Size**, and **Pattern**, in a new **Product Attributes** section. Type values in, or let traits fill them as described in [if you use Color, Material, Size, or Pattern traits](#if-you-use-color-material-size-or-pattern-traits).\n\nStores gain **Default Return Policy Category**, **Default Return Window Days**, and **Default Return Policy Country**, in a new **Return Policy** section on the **Store** record. A product uses the store's values unless it sets its own. **Return Policy Category** takes one of `Finite Return Window`, `Returns Not Permitted`, `Unlimited Return Window`, or `Return Policy Unspecified`, and `Finite Return Window` also needs a number of days.\n\n**Return Policy Country** must be a two-letter upper-case country code, such as `US`, `GB`, or `AU`, on both products and stores. A value in any other form is refused when you save. A return policy is published only when a country is set on the product or the store.\n\nThe new fields are available to the StoreConnect Administrator, Sync, Order Manager, and Content Change Approver permission sets. They appear on the StoreConnect **Product** and **Store** Lightning record pages after you upgrade. If your org uses its own record pages or a classic page layout for products or stores, add the fields there yourself. [PKG-7505]\n\n**Hide a product from a sales channel**\n\nProducts gain **Excluded Channels** (`Product2.s_c__Excluded_Channels__c`), a multi-select list of the channels a product should not be sold through, `Web` or `POS`. Leave it blank to sell the product everywhere. The field sits next to **Payment Capture Type** on the **Product** record. It has no effect until v22 (see Breaking changes and cautions). [PKG-10204]\n\n**Accept form submissions from cached pages**\n\nForms gain **Alternative Verification Methods** (`s_c__Form__c.s_c__Alternative_Verification_Methods__c`), which sets how the store checks a submission that arrives without a security token. A submission from a page served from the cache carries no token, so it is rejected by default. Selecting **Same-site origin (cached pages)** accepts such a submission when it comes from your store's own website. Leave the field blank to keep requiring the token.\n\nBecause the setting relaxes a security check, changes to it are recorded in the form's field history. It is available to the StoreConnect Administrator, Content Manager, and Sync permission sets. An upgrade does not add it to your **Form** page layout, so add it there yourself to see it on the record. It has no effect until v22, which adds cached pages (see Breaking changes and cautions). [PKG-9880]\n\n**New shipment states for upcoming fulfillment features**\n\nThe **Status** field on a **Shipment** (`s_c__Shipment__c.s_c__State__c`) gains **Preparing** and **Cancelled**. The v22 storefront writes `preparing` for takeaway orders being prepared at a fulfillment station, and `cancelled` for the open fulfillments of a cancelled order. Adding the values now means those updates sync once you are on v22. The same change fixes rental fulfillments, described under Fixed bugs. [PKG-10773]\n\n## Deprecated fields\n\nNo fields are removed or deprecated in this release.\n\n## Fixed bugs\n\n**POS staff could not sign in when their Salesforce user had never synced**\n\nA Salesforce user only reached your store when the user record itself changed. A user created before your store's sync was connected, or one copied into a sandbox, was never sent, so a staff member linked to that user through an **Outlet User** record failed to sign in to POS with an `Incorrect username` error until someone edited their user record.\n\nSaving an **Outlet User** now also sends the linked Salesforce user to your store, so the staff member can sign in as soon as the update reaches it. If a staff member still cannot sign in after you upgrade, open their **Outlet User** record and save it. [PKG-10052]\n\n**Rental fulfillments marked On loan or Returned failed to sync**\n\nThe **Status** field on a **Shipment** did not include the `on_loan` and `returned` values that POS writes for rental fulfillments, so Salesforce rejected those updates and they appeared as sync errors. Both values are now accepted, labeled **On loan** and **Returned**. To clear errors raised before the upgrade, retry them from the [sync error tool](sync-error-tool). [PKG-10773]\n\n**Flows that update StoreConnect records could fail with \"Invalid field sC_Id__c\"**\n\nA flow or other automation in your org that updated a record StoreConnect manages, such as an Order Product, could fail with `Invalid field sC_Id__c` because Salesforce did not always recognize the field name StoreConnect uses to identify the record. StoreConnect now names the field in full, so those updates save. [PKG-10453]\n\n**Deleting a Web Domain record in a refreshed sandbox could take your production site offline**\n\nUntil **Get sandbox** is run, a refreshed sandbox still carries your production **Web Domain** records and production connection details. Deleting one of those records in that window removed the domain from your production store, which took the production site offline. Deleting a **Web Domain** record now affects your store only when the org is connected to its own store, and **Get sandbox** removes the copied records (see Breaking changes and cautions). [PKG-10753]\n\n**Creating a Web Domain showed a JSON error when the domain service was unavailable**\n\nWhen StoreConnect's domain service could not be reached, saving a new **Web Domain** record showed a `JSONException` instead of a useful message. It now shows a message that the provisioning service did not respond, with the reference `PROVISIONER_UNAVAILABLE`, and confirms your DNS settings are not the cause. If you see it, contact StoreConnect Support with the message. [PKG-10801]\n\n**Content change filters and search returned nothing on Salesforce Winter '27**\n\nSalesforce Winter '27 changed how text matching works in the queries the Console uses to list content changes. In the record explorer, every object type filter reported \"Nothing matches these filters\", and a content change search containing an underscore (`_`) or percent sign (`%`) reported \"No matching changes found\" even when changes matched. Both work again on Winter '27 and earlier Salesforce releases.\n\nIn the content change search, `_` now matches any single character and `%` matches any run of characters, so a search for `50%` also finds \"50 chairs\". A backslash typed into the search is ignored. [PKG-10776]"}