Tags:
- Action Required
- Admin GraphQL API
- Functions
- 2026-07
New Collection model and APIs now available
The 2026-07 release replaces a collection’s single with a multi-source model in the GraphQL Admin API. Each collection now has one or more objects that define typed inclusion and exclusion conditions, plus manual selections. Shopify Functions also gain variant-level collection membership fields on the type.
In API version 2026-07 and later, collections that use the new sources model are returned from collections queries, collection(id:) lookups, and other collection-returning fields. In earlier API versions, those same collections using new features are filtered out because the legacy shape can’t represent them. Migrate to the 2026-07 API version to see and manage all collections in a shop.
These changes are non-breaking: deprecated members remain queryable in 2026-07 so you can migrate incrementally.
What’s new in the GraphQL Admin API
Collection sources and conditions
A new Collection.sources field returns one or more sources that back the collection. Two concrete types implement the new interface:
: includes products through typed inclusionconditionsplus manualselections, and can optionally exclude products through exclusionconditions. Each source must target eitherPRODUCTSorVARIANTS, set by the newenum.: pulls membership from one or more referenced collections.
Conditions are strongly typed: each condition uses a concrete type with a matching input type. Exclusion conditions include a subset of inclusion conditions or use a collection-based exclusion condition to target specific collections. Matching behavior for a set of conditions is controlled by the new enum: ANY means at least one condition must match; ALL means every condition must match.
To define sources on a collection, and now accept a collection argument typed as the new or . exposes , , and so you can update sources incrementally without replacing the entire collection definition.
Shareable app collection sources
A whose shareable field is true is owned by the calling app and can be linked to many of the shop’s collections. Use three new mutations to manage these shareable sources, and two new top-level queries to discover them:
,, andmanage an app's own shareable sources.returns the shareable sources owned by a specific app.paginates the apps that publish shareable sources for the shop.
To attach a shareable source to a specific collection, use inside the sources or field of the collection’s create or update input. Only the owning app can update or delete its shareable sources. Deleting a shareable source automatically detaches it from every collection that links to it.
Use shareable sources only when the same logic should be reused across multiple collections. If not, use collection mutations to create, update, or delete sources.
Other additions
returns separateinclusionandexclusioneligibility states for using the collection as a sub-collection target, with a stableenum.returns the metafield definitions that can be used in inclusion conditions, scoped to the calling app's access.gains acollectionfield, so you can update a collection-based exclusion condition in place instead of deleting and recreating it.
Variant-level collection membership in Shopify Functions
The type in Shopify Functions gains two new fields:
returnstruewhen the variant is in any of the specified collections.returns per-collection membership for the variant.
A variant is a member of a collection when the variant itself is included in that collection. Existing and continue to return true when the full product is in any of the specified collections, regardless of variant-level membership.
Deprecations
is deprecated in favor ofCollection.sources. Eachrule has an equivalent inclusion condition (for example, a tag rule maps to). Sub-collections, exclusion conditions, and multiple sources aren’t supported in the legacy shape.andare deprecated in favor ofand. The legacyinputargument continues to accept(with itsfield), but only the newcollectionargument can definesources. If both arguments are supplied, thecollectionargument takes precedence.- If your app reads
or writes, switch toCollection.sourcesand the newcollectionargument. The legacy shape can’t express multiple sources, exclusion conditions, or shareable sources, and collections that use those features are filtered out of pre-2026-07 query results. - If your Function needs variant-level collection membership, call
oron. The existingandfields continue to return product-level membership.