ShopifymediumBreaking change No date announced · published 4 Oct 2026
As of API version 2027-01 , the metafieldInteger collection source condition inputs and types is removed from GraphQL Admin API. If you use metafieldInteger to create or read collection source conditions, you need to migrate to metafieldInt before you upgrade to API version 2027-01 .
What changed
With metafieldInt , the value field on integer metafield conditions changes type from Int to String , to align with the metafield value field on the Storefront API. For details, see the Storefront Metafield.value field reference .
The following types and fields are replaced:
CollectionSourceInclusionConditionMetafieldInteger is replaced by CollectionSourceInclusionConditionMetafieldInt
CollectionSourceInclusionConditionMetafieldIntegerRelation is replaced by CollectionSourceInclusionConditionMetafieldIntRelation
CollectionSourceInclusionConditionInput.metafieldInteger is replaced by CollectionSourceInclusionConditionInput.metafieldInt
CollectionSourceInclusionConditionUpdateInput.metafi
ShopifymediumBreaking change No date announced · published 4 Oct 2026
As of GraphQL Admin API version 2026-10, functions in the segment query language now use the operators MATCHES / NOT MATCHES instead of = true / = false . For example, the previous query shopify_email.opened() = true would now be represented as shopify_email.opened MATCHES () .
The parameters for each function have also been expanded to use their own operators. For example, the query products_purchased(quantity: 5) = true would now be represented as products_purchased MATCHES (quantity = 5) . This expands the functionality of parameters. For example, the following queries were not possible before: products_purchased MATCHES (quantity != 5) , products_purchased MATCHES (quantity > 5) .
Additionally, the following named dates have been deprecated: 12_months_ago , 90_days_ago , 30_days_ago , 7_days_ago . Instead, the you can use the existing date offsets in your segment queries. For example, the named date 12_months_ago is equivalent to the date offset -12m .
Learn more about customer
ShopifymediumBreaking change No date announced · published 4 Oct 2026
We’re reducing the query complexity limit for Events subscriptions from 250 to 100 points. This change does not affect Classic Webhooks.
Shopify assigns each Events query a complexity score based on the fields it selects, the types of data those fields return, and the number of items requested in connections using first or last, following the GraphQL query cost calculation . The limit applies to each subscription query, and queries executed by Events subscriptions don’t count toward your app’s API rate limits .
What to do
Review subscription queries that exceed 100 points and shape each subscription around the changes your app handles:
Split subscriptions by the work they do : You can configure multiple subscriptions for the same topic, each with its own triggers and query.
Query the changed resource directly : For example, for a variant price change, query the affected variant’s price, SKU, and parent Product ID instead of fetching the Product’s first 250 variants. This avoids re
ShopifyhighBreaking change No date announced · published 4 Oct 2026
The deprecated automaticDiscounts query is removed from the GraphQL Admin API in version 2027-01 . If your app reads a shop’s automatic discounts through automaticDiscounts , you need to move to the discountNodes query with a method:automatic filter before you upgrade to 2027-01 . Apps on 2026-10 and earlier keep working unchanged while those versions are supported.
What changed
As of API version 2027-01 , automaticDiscounts no longer exists on QueryRoot . Requests that include automaticDiscounts on 2027-01 return a validation error instead of data. The DiscountAutomaticConnection and DiscountAutomaticEdge types are also removed, because no other fields in the schema return them.
Use discountNodes instead, with query: "method:automatic" . It returns a connection of DiscountNode objects, each exposing the discount itself on the discount field. discountNodes accepts filters similar to the removed query, including status , discount_type , discount_class , created_at , and starts_at . F
ShopifymediumBreaking change No date announced · published 4 Oct 2026
As of API version 2026-10, the static session.currentSession.staffMemberId field has been removed from the POS UI Extensions Session API. It was deprecated in 2026-07 in favour of session.staffMember, a reactive signal that updates when a different staff member pins into POS.
Before targeting API version 2026-10, replace reads of session.currentSession.staffMemberId with session.staffMember.value?.id. To react to staff changes while your extension is running, subscribe to the signal with session.staffMember.subscribe((staffMember) => { ... }), or read .value during render in a Preact component with @shopify/ui-extensions/preact imported to re-render automatically.
Extensions on 2026-07 and earlier are unaffected. The BaseData session.staffMemberId available to receipt targets is a separate API and is unchanged.
https://shopify.dev/docs/api/pos-ui-extensions/2026-10/apis/session-api
ShopifyhighBreaking change No date announced · published 4 Oct 2026
Starting today, we're updating Events payloads, trigger syntax, and delivery headers. Classic Webhook subscriptions are unaffected.
What's changed
fields_changed now describes how each path changed
The flat array becomes an object containing three arrays: added , updated , and removed .
Developers can distinguish a resource or relationship being added, a value being updated, or a resource or relationship being removed without querying just to infer what happened.
Update payload handling to read fields_changed.added , fields_changed.updated , and fields_changed.removed . Adding a variant to a Product, for example, keeps the Product's action as update and places the variant path in fields_changed.added .
Before:
{
"topic": "Product",
"action": "update",
"fields_changed": [
"product[id: 'gid://shopify/Product/123'].variants[id: 'gid://shopify/ProductVariant/456']"
]
}
After:
{
"topic": "Product",
"action": "update",
"fields_changed": {
"added": [
"product[id: 'gid://shopify/Produ