GraphQL Storefront API: companyRoles filter renamed to searchTerm
The filters argument of customer.activeCompany.companyRoles now takes searchTerm instead of search, so it matches the searchTerm filter on searchProducts.
- Renamed filter:
CompanyRolesFiltersInput.searchis nowCompanyRolesFiltersInput.searchTerm. It still takes a free-text term that narrows the list of roles. - Breaking change: queries that send
filters: { search: ... }fail validation. ReplacesearchwithsearchTerm. - Scope: only the
companyRolesfilter changes.companyRoleswas introduced in the October 28, 2026 Company user management entry, and the other fields it announced are unchanged.
For details, see List the assignable Company roles.
Import coupon codes into bulk coupon promotions from a CSV file
The Promotions V3 API now supports importing coupon codes from a CSV file into a bulk coupon promotion and reports the import’s progress through a promotion task.
- Import coupon codes: the new
POST /promotions/{promotion_id}/import-codesendpoint accepts a.csvfile of up to 20 MB. Each row contains a code and, optionally, its usage limits and validity window. The whole file is validated before any codes are created, and invalid rows are listed in the response. - Track the import: the new
GET /promotions/latest-taskendpoint returns the store’s latest import task, which tracks created codes, skipped duplicate codes, and failure information. Poll the endpoint for up-to-date information about the task. - One import at a time: a store runs one import at a time. Uploading another file while an import is queued or processing returns a 429.
For details, see Import Coupon Codes.
Stencil wishlist pages change starting December 8, 2026
Beginning December 8, 2026, the {{wishlist}} object on wishlist details pages and public wishlist share pages will change as described below, including a theme-breaking change to URL fields. The change rolls out gradually, and you will see it on every storefront over the following weeks.
- Absolute URLs: on each item in
{{wishlist.items}},url,add_to_cart_url,pre_order_add_to_cart_url,add_to_wishlist_url, andremove_urlwill include the storefront scheme and domain, and so will eachurlin{{wishlist.pagination.links}}. For example,/wishlist.php?wishlistid=12&page=2will becomehttps://www.example.com/wishlist.php?wishlistid=12&page=2.share_urlwill stay a storefront-relative path. - Action required: if your theme prefixes these URLs with a domain or base path, remove that prefix and render the value as-is. Themes that render the values directly, including Cornerstone, need no changes.
- Hidden products: an item whose product is hidden from the storefront will show as “Product not found” with no price, image, or add-to-cart button, the same way a deleted product shows today.
- Stock:
stock_level,out_of_stock_message,show_cart_action, andadd_to_cart_urlwill reflect the same stock that product and category pages show. Items that appeared out of stock while stock was available will show an add-to-cart button. - Options:
has_optionswill befalsewhen a product’s options don’t appear on its product page, so the item will show an add-to-cart button instead of “Choose options”. - Images: an image that isn’t assigned to the product will no longer appear as the item’s
image, and the theme will show its placeholder instead. An emptyimage.altwill be filled with the product name. Images that share a sort order will be listed inimagesby image ID. - Custom fields:
custom_fieldswill leave out fields the merchant hid, and will benullwhen no visible fields remain. Entries will no longer includeis_visible. - Other properties:
summarywill always be an empty string. Items with a release date will includerelease_date. Items will no longer includebrand_idorcategory_ids, which are always empty today.
For the wishlist properties, see the Stencil object reference.