Enhanced Descriptions, Added Types, and Updated Channel Count

8/28/2025, 2:17:16 PM

The GraphQL API now features more detailed, developer‑facing descriptions across key fields. The deprecated collectionByHandle query’s description has been expanded to explain its use as a URL‑friendly getter and to clarify the recommendation to use collectionByIdentifier. productResourceFeedback has an enriched description that explains its role in guiding app‑specific product optimization, with concrete examples and use‑case scenarios. Query arguments on both products and productsCount have updated descriptions clarifying the list of possible operators and example usage, while retaining the same signature. New object types MarketRegionProvince and its nested MarketRegionProvinceCountry have been added for market‑region data. A new enum value LOCATION_NOT_ACTIVE is now available in InventoryTransferSetItemsUserErrorCode. The Channel.productsCount field has been re‑described as “ChannelProductsCount” to emphasize that it returns the count of published products for a particular channel, with a limited default cap of 10 000. Lastly, the productParents fields on both Product and ProductVariant have clearer descriptions of their relationship to constituent components or parent products.

Query Changes

🔄 Modified Queries (4)

collectionByHandle

Retrieves a collection by its unique handle identifier. Handles provide a URL-friendly way to reference collections and are commonly used in storefront URLs and navigation.

For example, a collection with the title "Summer Sale" might have the handle summer-sale, allowing you to fetch it directly without knowing the internal ID.

Use CollectionByHandle to:

  • Fetch collections for storefront display and navigation
  • Build collection-based URLs and routing systems
  • Validate collection existence before displaying content

Handles are automatically generated from collection titles but can be customized by merchants for SEO and branding purposes.

Learn more about collections.

productResourceFeedback

Retrieves product resource feedback for the currently authenticated app, providing insights into product data quality, completeness, and optimization opportunities. This feedback helps apps guide merchants toward better product listings and improved store performance.

For example, an SEO app might receive feedback indicating that certain products lack meta descriptions or have suboptimal titles, enabling the app to provide specific recommendations for improving search visibility and conversion rates.

Use ProductResourceFeedback to:

  • Display product optimization recommendations to merchants
  • Identify data quality issues across product catalogs
  • Build product improvement workflows and guided experiences
  • Track progress on product listing completeness and quality
  • Implement automated product auditing and scoring systems
  • Generate reports on catalog health and optimization opportunities
  • Provide contextual suggestions within product editing interfaces

The feedback system evaluates products against various criteria including SEO best practices, required fields, media quality, and sales channel requirements. Each feedback item includes specific details about the issue, suggested improvements, and priority levels.

Feedback is app-specific and reflects the particular focus of your application - marketing apps receive different insights than inventory management apps. The system continuously updates as merchants make changes, providing real-time guidance for product optimization.

This resource is particularly valuable for apps that help merchants improve their product listings, optimize for search engines, or enhance their overall catalog quality. The feedback enables proactive suggestions rather than reactive problem-solving.

Learn more about product optimization.

products

Retrieves a list of products
in a store. Products are the items that merchants can sell in their store.

Use the products query when you need to:

  • Build a browsing interface for a product catalog.
  • Create product searching, sorting, and filtering experiences.
  • Implement product recommendations.
  • Sync product data with external systems.

The products query supports pagination
to handle large product catalogs and saved searches
for frequently used product queries.

The products query returns products with their associated metadata, including:

  • Basic product information (for example, title, description, vendor, and type)
  • Product options and product variants, with their prices and inventory
  • Media attachments (for example, images and videos)
  • SEO metadata
  • Product categories and tags
  • Product availability and publishing statuses

Learn more about working with Shopify's product model.

~ Modified argument: query
productsCount

Count of products. Limited to a maximum of 10000 by default.

~ Modified argument: query

Mutation Changes

🔄 Modified Mutations (9)

collectionAddProducts

Adds multiple products to an existing collection in a single operation. This mutation provides an efficient way to bulk-manage collection membership without individual product updates.

For example, when merchants create seasonal collections, they can add dozens of related products at once rather than updating each product individually. A clothing store might add all winter jackets to a "Winter Collection" in one operation.

Use CollectionAddProducts to:

  • Bulk-add products to collections for efficient catalog management
  • Implement collection building tools in admin interfaces
  • Organize collection membership during bulk product operations
  • Reduce API calls when managing large product sets

The mutation processes multiple product additions and returns success status along with any errors encountered during the operation. Products are added to the collection while preserving existing collection settings.

This operation only works with manual collections where merchants explicitly choose which products to include. It will return an error if used with smart collections that automatically include products based on conditions.

Learn more about collection management.

collectionDelete

Deletes a collection and removes it permanently from the store. This operation cannot be undone and will remove the collection from all sales channels where it was published.

For example, when merchants discontinue seasonal promotions or reorganize their catalog structure, they can delete outdated collections like "Back to School 2023" to keep their store organized.

Use CollectionDelete to:

  • Remove outdated or unused collections from stores
  • Clean up collection structures during catalog reorganization
  • Implement collection management tools with deletion capabilities

Products within the deleted collection remain in the store but are no longer grouped under that collection.

Learn more about collection management.

collectionRemoveProducts

Removes multiple products from a collection in a single operation. This mutation can process large product sets (up to 250 products) and may take significant time to complete for collections with many products.

For example, when ending a seasonal promotion, merchants can remove all sale items from a "Summer Clearance" collection at once rather than editing each product individually.

Use CollectionRemoveProducts to:

  • Bulk-remove products from collections efficiently
  • Clean up collection membership during catalog updates
  • Implement automated collection management workflows

The operation processes asynchronously to avoid timeouts and performance issues, especially for large product sets.

Learn more about collection management.

discountAutomaticDelete

Deletes an existing automatic discount from the store, permanently removing it from all future order calculations. This mutation provides a clean way to remove promotional campaigns that are no longer needed.

For example, when a seasonal promotion ends or a flash sale concludes, merchants can use this mutation to ensure the discount no longer applies to new orders while preserving historical order data.

Use DiscountAutomaticDelete to:

  • Remove expired promotional campaigns
  • Clean up test discounts during development
  • Delete automatic discounts that conflict with new promotions
  • Maintain a clean discount configuration

The mutation returns the ID of the deleted discount for confirmation and any validation errors if the deletion cannot be completed. Once deleted, the automatic discount will no longer appear in discount lists or apply to new customer orders.

discountCodeActivate

Activates a previously created code discount, making it available for customers to use during checkout. This mutation transitions inactive discount codes into an active state where they can be applied to orders.

For example, after creating a "SUMMER20" discount code but leaving it inactive during setup, merchants can activate it when ready to launch their summer promotion campaign.

Use DiscountCodeActivate to:

  • Launch scheduled promotional campaigns
  • Reactivate previously paused discount codes
  • Enable discount codes after configuration changes
  • Control the timing of discount availability

The mutation returns the updated discount code node with its new active status and handles any validation errors that might prevent activation, such as conflicting discount rules or invalid date ranges.

discountCodeDeactivate

Temporarily suspends a code discount without permanently removing it from the store. Deactivation allows merchants to pause promotional campaigns while preserving the discount configuration for potential future use.

For example, when a flash sale needs to end immediately or a discount code requires temporary suspension due to inventory issues, merchants can deactivate it to stop new redemptions while keeping the discount structure intact.

Use DiscountCodeDeactivate to:

  • Pause active promotional campaigns timely
  • Temporarily suspend problematic discount codes
  • Control discount availability during inventory shortages
  • Maintain discount history while stopping usage

Deactivated discounts remain in the system and can be reactivated later, unlike deletion which persistently removes the code. Customers attempting to use deactivated codes will receive appropriate error messages.

discountCodeDelete

Removes a code discount from the store, making it permanently unavailable for customer use. This mutation provides a clean way to eliminate discount codes that are no longer needed or have been replaced.

For example, when a seasonal promotion ends or a discount code has been compromised, merchants can delete it entirely rather than just deactivating it, ensuring customers cannot attempt to use expired promotional codes.

Use DiscountCodeDelete to:

  • persistently remove outdated promotional codes
  • Clean up discount code lists after campaigns end
  • Eliminate compromised or leaked discount codes
  • Maintain organized discount management

Once deleted, the discount code cannot be recovered and any customer attempts to use it will fail. This differs from deactivation, which preserves the code for potential future reactivation.

productReorderMedia

Asynchronously reorders the media attached to a product, changing the sequence in which images, videos, and other media appear in product displays. This affects how media is presented across all sales channels.

For example, merchants can move their best product photo to the first position or reorder images to tell a better product story, with changes appearing in storefronts once processing completes.

Use ProductReorderMedia to:

  • Optimize media presentation order for better customer experience
  • Implement drag-and-drop media management interfaces
  • Automate media sequencing based on performance or quality metrics

The operation processes asynchronously to handle products with large media collections without blocking other operations.

Learn more about product media.

productVariantAppendMedia

Appends existing media from a product to specific variants of that product, creating associations between media files and particular product options. This allows different variants to showcase relevant images or videos.

For example, a t-shirt product might have color variants where each color variant displays only the images showing that specific color, helping customers see exactly what they're purchasing.

Use ProductVariantAppendMedia to:

  • Associate specific images with product variants for accurate display
  • Build variant-specific media management in product interfaces
  • Implement automated media assignment based on variant attributes

The operation links existing product media to variants without duplicating files, maintaining efficient media storage while enabling variant-specific displays.

Learn more about product variants.

Type Changes

➕ Added Types (2)

🏗️MarketRegionProvince➕ AddedOBJECT

A province of a country which comprises a market.

Fields: code, country, id, name
🏗️MarketRegionProvinceCountry➕ AddedOBJECT

A country that a province belongs to.

Fields: code, name

🔄 Modified Types (12)

🏗️Channel🔄 Modified
🔄 Field modified: productsCount
🏗️InventoryTransferSetItemsUserErrorCode🔄 Modified
Enum value added: LOCATION_NOT_ACTIVE
🏗️Product🔄 Modified
🔄 Field modified: productParents
🏗️ProductVariant🔄 Modified
🔄 Field modified: productParents
🏗️Publication🔄 Modified
🔄 Field modified: includedProducts
🔄 Field modified: includedProductsCount
🔄 Field modified: products
🏗️ReturnLineItem🔄 Modified
🔄 Field modified: returnReason
🏗️ReturnLineItemType🔄 Modified
🔄 Field modified: returnReason
🏗️Shop🔄 Modified
🔄 Field modified: products
🏗️ShopFeatures🔄 Modified
Field added: subCountryMarketsEnabled

Whether a shop is eligible for Sub Country Markets.

🏗️ShopifyPaymentsPayoutSummary🔄 Modified
Field added: usdcRebateCreditAmount

Total amount for all usdc rebate credit balance adjustments.

🏗️UnverifiedReturnLineItem🔄 Modified
🔄 Field modified: returnReason
🏗️WebhookSubscriptionTopic🔄 Modified
Enum value removed: SUPPLIERS_CREATE
Enum value removed: SUPPLIERS_UPDATE
Enum value removed: SUPPLIERS_DELETE
Enum value removed: PURCHASE_ORDERS_CREATE
Enum value removed: PURCHASE_ORDERS_MARK_AS_ORDERED
Enum value removed: PURCHASE_ORDERS_RECEIVE
Enum value removed: PURCHASE_ORDERS_DELETE
Enum value removed: PURCHASE_ORDERS_UPDATE