Shopify GraphQL Schema Change Log

Track changes across API versions with diffs, summaries, and details.

API unstableProxy: shopify.dev/admin-graphql-direct-proxy/unstable📡 RSS Feed

Metaobject filter, mandate, translation, and payment updates

9/5/2025, 8:31:44 PM

Developers should note that metaobjects now expose an "adminFilterable" capability, with new types MetaobjectFieldCapabilityAdminFilterable and MetaobjectFieldDefinitionCapabilities added. CustomerPaymentMethod gains a paginated "mandates" field for payment mandates and the previous resourceId/resourceType fields are removed; the MandateResourceType enum changes, dropping CARD_ON_FILE and adding CREDENTIAL_ON_FILE. Images and MediaImage now include a "translations" field that supports locale and marketId filtering. The stagedUploadsCreate mutation’s description adds a 10 MB payload limit, and the metafieldsSet mutation also notes the same limit. Queries such as channel, domain, market, orders, and sellingPlanGroup have updated descriptions for clarity, though channel remains deprecated in favor of publication. Finally, new enum values (COLLECTION_NOT_FOUND, MANUALLY_SORTED_COLLECTION, INVALID_MOVE) appear in CollectionReorderProductsUserErrorCode, and PaymentTerms receives a new "canPayEarly" boolean field. These changes affect how your queries and mutations construct request payloads and handle responses in the latest unstable schema.

📊 6 query changes🔧 5 mutation changes📦 23 type changes

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.

📊 4 query changes🔧 9 mutation changes📦 14 type changes

Deprecate Market Currency Update, Add Detailed Errors and Mandate Types

8/23/2025, 12:01:09 AM

The mutation `marketCurrencySettingsUpdate` has been deprecated and will be removed in a future release; developers should now use `marketCreate` for creating a market and `marketUpdate` for updating its currency settings. A new error type `CollectionReorderProductsUserError` replaces the generic `UserError` in the `CollectionReorderProductsPayload`, providing a more specific error code `TOO_MANY_ATTEMPTS_TO_REORDER_PRODUCTS`. The `CustomerPaymentMethod` type now includes a `resourceId` and a `resourceType` (`MandateResourceType` enum) to represent the specific resource the payment method was created for (e.g., Order, Subscriptions). The `MandateResourceType` enum lists supported resource types: CARD_ON_FILE, CHECKOUT, DRAFT_ORDER, ORDER, and SUBSCRIPTIONS. The `MarketUserErrorCode` enum gains three new values – `PROVINCE_DOES_NOT_EXIST`, `MISSING_PROVINCE_CODE`, and `INVALID_PROVINCE_FORMAT` – to signal province‑related validation issues. The `SubscriptionBillingAttemptErrorCode` enum is extended with `PAYMENT_METHOD_NOT_SPECIFIED` to indicate missing payment methods during billing attempts. Existing queries remain unchanged, but developers should adjust mutations and error handling to align with these new types and deprecations.

🔧 1 mutation changes📦 7 type changes

Refactor Collection Reorder Mutation for Incremental Moves

8/19/2025, 3:25:48 PM

The `collectionReorderProducts` mutation’s description and arguments were rewritten to clarify that only moved products should be sent, that moves are applied sequentially, and that `newPosition` is a zero‑based index evaluated after each prior move; the mutation now returns a job object. The `moves` list’s documentation was updated to emphasize sending only changed products, allowing non‑unique `newPosition` values and moving items to the end if the value exceeds the list length. The mutation’s return type remains `CollectionReorderProductsPayload`. Additional schema changes include converting `CheckoutAndAccountsAppConfiguration.brandingConfiguration` from a raw JSON scalar to a typed `CheckoutBranding` object, removing the `resourceType` field from `CustomerPaymentMethod`, and adding several new enum values for various error codes (`TAG_EXCEEDS_MAX_LENGTH`, `ACTIVATION_FAILED`, etc.). A new field `disputeEvidence` was added to `ShopifyPaymentsDispute` to expose dispute evidence details, and a set of LENDING‑related transaction types was added to `ShopifyPaymentsTransactionType`. The enum `StagedUploadTargetGenerateUploadResource` now includes `DISPUTE_FILE_UPLOAD`. Finally, the entire `MandateResourceType` enum was removed from the schema. Developers must adjust mutation payloads for collection reordering, update type handling for the new branding object, and account for the removed field and added enums in error handling and transaction logic.

🔧 1 mutation changes📦 13 type changes

Add discount context, ordersCount limit, and metafield query support

8/12/2025, 12:00:46 AM

1. The order‑count query (`ordersCount`) now accepts a `limit` argument (default 10,000) to cap how many results are returned. 2. The `orders` and `ordersCount` query arguments gained a new filter key: `metafields.{namespace}.{key}` allowing queries by metafield values. 3. Discount types now expose a `context` field (union `DiscountContext`) that replaces the previously used `customerSelection`. 4. The `customerSelection` field is deprecated with a note to use `context` instead. 5. New enum `DiscountBuyerSelection` and helper object `DiscountBuyerSelectionAll` were added to describe “all buyers” scenarios. 6. The Shop type’s `orders` field is deprecated in favor of using the root `orders` query, so developers should migrate queries accordingly. 7. The description of the `Shop.orders` field still mirrors the root query but will be removed in a future release. 8. All updated descriptions remain unchanged but the added filters and fields should be considered in API calls.

📊 2 query changes📦 15 type changes

MandateResourceType Enum Added, Theme Files Expanded

8/11/2025, 2:54:34 PM

The `dispute` query’s description now states it returns a `ShopifyPaymentsDispute` resource by ID, and the `disputeEvidence` query similarly clarifies it returns a `ShopifyPaymentsDisputeEvidence`. A new enum, `MandateResourceType`, is added to list resource types for payment mandates (CARD_ON_FILE, CHECKOUT, DRAFT_ORDER, ORDER, SUBSCRIPTIONS). The `CustomerPaymentMethod` type now includes a `resourceType` field that references this new enum, indicating the specific resource a mandate supports. The `OnlineStoreTheme` type’s `files` field now allows up to 2,500 items per page (instead of 250) while keeping the same filename filtering and pagination arguments. The `ProductStatus` enum now contains an additional value, `UNLISTED`. These changes are mostly descriptive and structural; existing functionality remains unchanged, but developers should update field selections and pagination limits to take advantage of the new enum and expanded file list capacity.

📊 2 query changes📦 4 type changes

Remove callbackUrl from webhookSubscriptions; extend product query options

8/7/2025, 3:52:43 PM

The webhookSubscriptions query no longer accepts the callbackUrl argument, simplifying subscription filtering. A parentRelationship field has been added to AbandonedCheckoutLineItem along with a new AbandonedCheckoutLineItemParentRelationship type that exposes the parent line item through its parent property. The Publication type now contains an includedProductsCount field, which counts included products and accepts optional filtering and a limit variable. Both the includedProducts and products connection fields on Publication have been extended with sortKey, query, and savedSearchId arguments; products additionally gain the same sortKey as their existing filters. Enumeration ShopifyPaymentsTransactionType now includes four new members for managed markets dispute fee debit/credit and their reversals. Minor description changes on several query return types have been made for consistency.

📊 3 query changes📦 5 type changes

Initial Schema (unstable)

8/3/2025, 1:56:42 AM

Initial schema snapshot for API version unstable