Complex rule condition schema clarifies nullable variant_id

The Catalog Products reference now marks variant_id as nullable in complex rule condition responses, matching what the API actually returns.

  • Nullable variant_id: complex rules created through the v2 API or the control panel can return conditions without a variant_id, so the field may be null in GET and PUT responses.

For details, see the Complex Rules reference.


GraphQL Schema Updates

The Storefront GraphQL API adds a vault access token mutation for stored payment instruments and a way to list the company members who have placed orders. Both additions are alpha and marked deprecated in the schema: do not use them in production.

Storefront GraphQL

  • Vault access tokens: a new storedPaymentInstruments field on CustomerMutations exposes the new StoredPaymentInstrumentMutations type, whose createVaultAccessToken mutation issues a vault access token for the authenticated customer.
    • Result shape: CreateVaultAccessTokenResult returns the vaultAccessToken, its expiresAt timestamp, and an errors list of CreateVaultAccessTokenError. Empty errors indicates success.
  • Company members with orders: a new customersWithOrders field on ActiveCompany returns a paginated CompanyCustomerConnection of company members who have placed at least one order.
    • Customer details: the new CompanyCustomer type exposes each member’s entityId, firstName, lastName, and email.
    • Filtering: the new CustomerWithOrdersFiltersInput narrows the list by companyIds.

For schema details, browse the Storefront GraphQL API reference.


Clarified what updates a product’s date_modified

The product documentation now explains exactly which changes update the date_modified timestamp on a product, so you can avoid a common pitfall when detecting changes.

  • Product record changes update date_modified — editing a product’s name, description, pricing, categories, custom fields, images, options, modifiers, or variants updates the timestamp.
  • Inventory changes do not always update date_modified — because inventory is a separate entity, stock updates processed by the Inventory API (including stock edits from the control panel Products list) leave date_modified unchanged. Inventory updates processed by the Catalog API, such as a PUT that sets inventory_level, do update it.
  • Use webhooks instead of polling — subscribe to the store/product/updated and store/product/inventory/updated webhooks to reliably detect product and stock changes.

For details, see Inventory adjustments.


Storefront Foundations Updates

Updates the Storefront Foundations course to cover Stencil’s new multi-language storefront support and to keep a hands-on lab in sync with its underlying code.

  • About Stencil now mentions that a single Stencil storefront can present multiple languages, with catalog and checkout data translated using the Translations Admin GraphQL API or the control panel’s Localization tab.
  • Add a Subcategory Listing in Stencil lab syncs its code snippets with the current lab source, including the full category page markup and the component partial filename.

For more information, see About Stencil.