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
          }
        ]
      }
    }
  ]
}