← All articles

October 1, 2026 · Muhammad Rehan · More by Muhammad Rehan

Shopify's Collection.sources Model: The Silent Break for Sync Tools

Shopify's 2026-07 Collection.sources model doesn't error on old API versions — it just hides collections from your queries. Here's what to check.

Shopify's Collection.sources Model: The Silent Break for Sync Tools — ASSOSIATIX Journal

The ruleSet field is being replaced, not just extended

In Shopify's 2026-07 stable API release, Collection.ruleSet — the single field integrations have used for years to read a collection's smart-collection rules — is deprecated in favor of Collection.sources, a multi-source model. Each collection can now carry one or more CollectionSource objects: typed CollectionConditionsSource entries (inclusion and exclusion conditions, plus manual selections) and CollectionSubCollectionsSource entries that pull membership from other collections. Conditions support ANY/ALL matching, and sources can target either products or variants.

Shopify describes the change as non-breaking, and for merchants it is: deprecated fields keep working. For integrations, the risk sits elsewhere.

The failure mode is silence, not an error

This is the detail worth stopping on. On API versions before 2026-07, a collection built using the new sources model — exclusions, sub-collections, multiple sources, or a shareable app-owned source — doesn't throw an error when queried. It's filtered out entirely from collections queries and collection(id:) lookups. A sync job, ERP connector, or reporting pipeline enumerating a shop's collections can run clean, log success, and still never see collections a merchant created or edited in the admin using features the legacy ruleSet shape can't represent. There's no exception to catch and no warning in the response — the collection is simply absent from the result set.

Any integration still pinned to a pre-2026-07 API version and still reading Collection.ruleSet should treat that as a correctness bug waiting to surface, not a deprecation to schedule for later.

What migrating actually touches

For reads: move queries from Collection.ruleSet to Collection.sources, and pin the integration to API version 2026-07 or later so new-model collections show up at all. Each legacy ruleSet rule maps to an equivalent inclusion condition — a tag rule becomes a CollectionSourceInclusionConditionProductTag, for example.

For writes: collectionCreate(input:) and collectionUpdate(input:) are deprecated in favor of collectionCreate(collection:) and collectionUpdate(collection:). The new CollectionUpdateInput adds sourcesToCreate, sourcesToUpdate, and sourcesToDelete, so an incremental update to one source no longer requires replacing the whole collection definition — useful for any sync tool that currently does a full overwrite on every pass.

A capability worth knowing about

The new model also introduces shareable sources: a CollectionConditionsSource with shareable: true is owned by the calling app and can be linked to many of a shop's collections at once, managed independently of any single collection. For an app maintaining the same inclusion logic across dozens of collections, that's a structural simplification over duplicating conditions per collection — though Shopify's documentation doesn't specify adoption limits or performance characteristics beyond the mutation and query shapes themselves.

Shopify Functions also picked up variant-level collection membership — ProductVariant.inAnyCollection and inCollections — separate from the existing product-level fields, relevant to any Function gating on collection membership at the variant rather than the product level.

Sources

Integrations & APIs

ASSOSIATIX works on this every day. See our Shopify Systems Integration: ERP, PIM, 3PL & CRM service

$./start-project.sh

READY TO BUILD
WHAT'S NEXT?

Tell us where you are and where you want to go. We'll help you choose the right path—storefront, system, product, or a focused growth sprint.