Remove Delivery Settings API, Enhance Counts, Adjust Metafield Filtering

1/18/2026, 12:01:05 AM

The deliverySettings query and the DeliverySetting type and input have been removed, so the shop‑wide shipping configuration can no longer be retrieved or updated through the GraphQL API. The deliverySettingUpdate mutation now has no arguments, reflecting the removal of the DeliverySettingInput and simplifying the payload. BulkOperations now defaults to sorting by created_at with newest first, and this behavior is described in its updated description. ProductsCount queries (and Channel.productsCount) now accept an optional limit argument (default 10000) to bound the count returned. Metafield lookups on many objects, including AppInstallation, Article, Blog, Channel, Collection, Customer, and others, no longer default to the app‑reserved namespace; if namespace is omitted all namespaces are returned, which removes implicit filtering. Finally, deliveryShippingOriginAssign has been deprecated and will be removed in a future version as single‑origin shipping mode is retired.

Query Changes

➖ Removed Queries (1)

deliverySettings

Returns the shop-wide shipping settings.

🔄 Modified Queries (3)

bulkOperations

Returns the app's bulk operations meeting the specified filters. Defaults to sorting by created_at, with newest operations first.

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 (2)

deliverySettingUpdate

Set the delivery settings for a shop.

- Removed argument: setting
deliveryShippingOriginAssign

Assigns a location as the shipping origin while using legacy compatibility mode for multi-location delivery profiles.
Deprecated as of 2026-04 and will be removed in a future version as single origin shipping mode has been retired.

⚠️ Deprecated: Single origin shipping mode is no longer supported.

Type Changes

➖ Removed Types (4)

🏗️DeliveryLegacyModeBlocked➖ RemovedOBJECT

Whether the shop is blocked from converting to full multi-location delivery profiles mode. If the shop is blocked, then the blocking reasons are also returned.

Fields: blocked, reasons
📋DeliveryLegacyModeBlockedReason➖ RemovedENUM

Reasons the shop is blocked from converting to full multi-location delivery profiles mode.

Values: MULTI_LOCATION_DISABLED, NO_LOCATIONS_FULFILLING_ONLINE_ORDERS
🏗️DeliverySetting➖ RemovedOBJECT

The DeliverySetting object enables you to manage shop-wide shipping settings.
You can enable legacy compatibility mode for the multi-location delivery profiles feature
if the legacy mode isn't blocked.

Fields: legacyModeBlocked, legacyModeProfiles
📥DeliverySettingInput➖ RemovedINPUT_OBJECT

The input fields for shop-level delivery settings.

🔄 Modified Types (47)

🏗️AppInstallation🔄 Modified
🔄 Field modified: metafields
🏗️Article🔄 Modified
🔄 Field modified: metafields
🏗️Blog🔄 Modified
🔄 Field modified: metafields
🏗️CartTransform🔄 Modified
🔄 Field modified: metafields
🏗️Channel🔄 Modified
🔄 Field modified: productsCount
🏗️Collection🔄 Modified
🔄 Field modified: metafields
🏗️Company🔄 Modified
🔄 Field modified: metafields
🏗️CompanyLocation🔄 Modified
🔄 Field modified: metafields
🏗️Customer🔄 Modified
🔄 Field modified: metafields
🏗️CustomerSegmentMember🔄 Modified
🔄 Field modified: metafields
🏗️DeliveryCustomization🔄 Modified
🔄 Field modified: metafields
🏗️DeliveryMethod🔄 Modified
🔄 Field modified: metafields
🏗️DeliveryProfile🔄 Modified
➖ Field removed: legacyMode
🏗️DeliverySettingUpdatePayload🔄 Modified
➖ Field removed: setting
🏗️DiscountAutomaticNode🔄 Modified
🔄 Field modified: metafields
🏗️DiscountCodeNode🔄 Modified
🔄 Field modified: metafields
🏗️DiscountNode🔄 Modified
🔄 Field modified: metafields
🏗️DraftOrder🔄 Modified
🔄 Field modified: metafields
🏗️FulfillmentConstraintRule🔄 Modified
🔄 Field modified: metafields
🏗️GiftCardCreditTransaction🔄 Modified
🔄 Field modified: metafields
🏗️GiftCardDebitTransaction🔄 Modified
🔄 Field modified: metafields
🏗️GiftCardTransaction🔄 Modified
🔄 Field modified: metafields
🏗️HasMetafields🔄 Modified
🔄 Field modified: metafields
🏗️Image🔄 Modified
🔄 Field modified: metafields
🏗️InventoryTransfer🔄 Modified
🔄 Field modified: metafields
🏗️LineItem🔄 Modified
🔄 Field modified: suggestedReturnReasonDefinitions
🏗️Location🔄 Modified
🔄 Field modified: metafields
🔄 Field modified: shipsInventory
🏗️Market🔄 Modified
🔄 Field modified: metafields
🏗️MediaImage🔄 Modified
🔄 Field modified: metafields
🏗️MetafieldDefinitionCreateUserErrorCode🔄 Modified
➕ Enum value added: OWNER_TYPE_LIMIT_EXCEEDED_FOR_USE_AS_ADMIN_FILTERS
🏗️MetafieldDefinitionUpdateUserErrorCode🔄 Modified
➕ Enum value added: OWNER_TYPE_LIMIT_EXCEEDED_FOR_USE_AS_ADMIN_FILTERS
🏗️Order🔄 Modified
🔄 Field modified: metafields
🏗️OrderTransactionErrorCode🔄 Modified
➕ Enum value added: AMOUNT_TOO_LARGE
➕ Enum value added: AMOUNT_TOO_SMALL
➕ Enum value added: AUTHENTICATION_FAILED
➕ Enum value added: AUTHENTICATION_REQUIRED
➕ Enum value added: CANCELLED_PAYMENT
➕ Enum value added: CARD_TESTING
➕ Enum value added: DO_NOT_HONOR
➕ Enum value added: FRAUD_SUSPECTED
➕ Enum value added: INCORRECT_NAME
➕ Enum value added: INSUFFICIENT_FUNDS
➕ Enum value added: INVALID_CURRENCY
➕ Enum value added: INVALID_PAYMENT_METHOD
➕ Enum value added: INVALID_PURCHASE_TYPE
➕ Enum value added: MERCHANT_ACCOUNT_ERROR
➕ Enum value added: MERCHANT_RULE
➕ Enum value added: INSTRUMENT_DECLINED
➕ Enum value added: PAYMENT_METHOD_UNSUPPORTED
➕ Enum value added: RETRY_DECLINED
➕ Enum value added: TRANSACTION_LIMIT_EXCEEDED
➕ Enum value added: AUTHORIZATION_EXPIRED
🏗️Page🔄 Modified
🔄 Field modified: metafields
🏗️PaymentCustomization🔄 Modified
🔄 Field modified: metafields
🏗️Product🔄 Modified
🔄 Field modified: metafields
🔄 Field modified: productParents
🏗️ProductVariant🔄 Modified
🔄 Field modified: metafields
🔄 Field modified: productParents
🏗️Publication🔄 Modified
🔄 Field modified: includedProducts
🔄 Field modified: includedProductsCount
🔄 Field modified: products
🏗️SellingPlan🔄 Modified
🔄 Field modified: metafields
🏗️Shop🔄 Modified
🔄 Field modified: metafields
🔄 Field modified: products
🏗️ShopPlan🔄 Modified
🔄 Field modified: publicDisplayName
🏗️ShopPolicy🔄 Modified
🔄 Field modified: createdAt
🔄 Field modified: updatedAt
🏗️ShopifyPaymentsDispute🔄 Modified
🔄 Field modified: evidenceDueBy
🔄 Field modified: evidenceSentOn
🔄 Field modified: finalizedOn
🏗️ShopifyPaymentsTransactionType🔄 Modified
➕ Enum value added: INSTALLMENTS_BALANCE_RECOVERY_CREDIT
➕ Enum value added: INSTALLMENTS_BALANCE_RECOVERY_CREDIT_REVERSAL
➕ Enum value added: MANAGED_MARKETS_NON_TARGET_REVENUE_ADJUSTMENT_PLATFORM_DEBIT
➕ Enum value added: MANAGED_MARKETS_NON_TARGET_REVENUE_ADJUSTMENT_PLATFORM_DEBIT_REVERSAL
🏗️StandardMetafieldDefinitionEnableUserErrorCode🔄 Modified
➕ Enum value added: OWNER_TYPE_LIMIT_EXCEEDED_FOR_USE_AS_ADMIN_FILTERS
🏗️Validation🔄 Modified
🔄 Field modified: metafields
🏗️WebhookSubscription🔄 Modified
🔄 Field modified: includeFields

Directive Changes

{
  "added": [],
  "removed": [],
  "modified": [
    {
      "name": "idempotent",
      "old": {
        "name": "idempotent",
        "description": "Enables idempotent mutation execution using a provided key. Only supported on mutations that explicitly document idempotency support in their description. Example: `@idempotent(key: \"123e4567-e89b-12d3-a456-426614174000\")`.",
        "locations": [
          "FIELD"
        ],
        "args": [
          {
            "name": "key",
            "description": "The key to identify the idempotent mutation.",
            "type": {
              "kind": "NON_NULL",
              "name": null,
              "ofType": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              }
            },
            "defaultValue": null
          }
        ]
      },
      "new": {
        "name": "idempotent",
        "description": "Enables idempotent mutation execution using a provided key. Only supported on mutations that explicitly document idempotency support in their description. Example: `@idempotent(key: \"123e4567-e89b-12d3-a456-426614174000\")`. Note: The idempotency key cannot be an empty string or whitespace only.",
        "locations": [
          "FIELD"
        ],
        "args": [
          {
            "name": "key",
            "description": "The key to identify the idempotent mutation.",
            "type": {
              "kind": "NON_NULL",
              "name": null,
              "ofType": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
              }
            },
            "defaultValue": null
          }
        ]
      }
    }
  ]
}