2026-10: Release notes
The 2026-10 release focuses on order, metafield, customer account, tax, analytics, and Storefront API changes.
Several changes in this version require code updates, especially around order taxes, draft order discounts, metafield filters, and customer account checkouts. Review and adjust affected integrations before adopting 2026-10.
2026-10 is available as a release candidate for development testing until October 1, 2026, when it becomes stable:
- 2026-10RCStableUnsupported
Learn more about API versioning
| Stable version | Release date | Accessible until | Status |
|---|---|---|---|
| 2026-10 | October 1, 2026 | October 16, 2027 15:00 UTC | Release candidate |
Anchor to GraphQL Admin APIGraph QL Admin API
GraphQL Admin API changes affect order imports, taxes, draft order discounts, metafield filters, and carrier services.
Anchor to InventoryInventory
Inventory quantity mutations remove an obsolete stocking error.
The obsolete ITEM_NOT_STOCKED_AT_LOCATION error is removed from InventoryAdjustQuantities, InventoryMoveQuantities, and InventorySetOnHandQuantities, and from the InventorySetQuantitiesUserErrorCode enum. Remove app logic that handles this specific error.
inventoryShipmentReceive now accepts a CANCELED reason for shipment units that won't arrive. InventoryShipment.totalCanceledQuantity and InventoryShipmentLineItem.canceledQuantity report canceled units, and inventory_shipments/receive_items webhook payloads include canceled quantities.
Anchor to OrdersOrders
Update order integrations for imports, tax recalculation, draft order discounts, subscription contract calculations, and fulfillment statuses.
OrderCreateFulfillmentInput now includes trackingNumbers, so orderCreate can attach multiple tracking numbers when importing orders with multi-package fulfillments. If both trackingNumber and trackingNumbers are provided, trackingNumber takes precedence.
Changing the shipping address on an unfulfilled order with orderUpdate or the REST Admin API order update endpoint now recalculates taxes for the new destination. After updating, query updated taxLines, totalTaxSet, totals, and compare balances to handle payment or refund differences.
The deprecated priceRule field is removed from DraftOrderDiscountNotAppliedWarning. The legacy PriceRule object and related types are also removed from the public schema. Update queries from draftOrderCalculate, draftOrderCreate, and draftOrderUpdate to select discountTitle and discountCode instead.
The GraphQL Admin API adds SubscriptionContractCalculation as the successor to SubscriptionDraft for creating, updating, and editing subscription contracts. It replaces the multi-step draft workflow with a stateless calculate → poll → commit lifecycle through Shopify’s checkout engine.
Order.displayFulfillmentStatus and other fields typed as OrderDisplayFulfillmentStatus can now return FULFILLMENT_NOT_REQUIRED for orders with zero remaining fulfillable quantity, instead of UNFULFILLED. Handle the new enum value if you exhaustively map fulfillment statuses.
The new paymentInstrumentSendAddEmail mutation emails a customer a link to add a payment method to a specific subscription contract, order, or draft order, without requiring them to sign in. Apps need the write_customers access scope to call it.
Anchor to Products and collectionsProducts and collections
Products and collections changes affect exchange line item queries and metafield filters.
The GraphQL Admin API now returns an error when a query filters by a metafield that isn't valid for filtering, instead of silently ignoring the predicate. Update affected metafield filter queries before you upgrade. Check that definitions support filtering and comparison operators.
ExchangeLineItem now includes productId, title, variantSku, and variantTitle fields, so apps can access product and variant details directly when querying exchange line items.
ProductVariant now has a barcodes connection for up to 20 typed barcodes, and ProductVariant.barcode is deprecated. Update integrations that sync product identifiers to read barcodes, because barcode returns only the first entry.
Apps with the read_markets access scope can traverse a store's market hierarchy with the new marketRelationships query and the parentMarkets and childMarkets fields on Market. Poll marketRelationshipsStatus.version to detect when the asynchronously rebuilt relationships change.
ProductVariantContextualPricing.auditTrail returns the ordered price adjustments Shopify applied to a contextual variant price, each with a type, value, resulting price, and display label. An empty priceAdjustments list means no complete audit trail is available.
The Metafield object now has a non-null translatable field that reports whether a metafield's value can be translated. Read it instead of querying translatableResources with the deprecated TranslatableResourceType.METAFIELD value.
Anchor to Shipping and fulfillmentShipping and fulfillment
Carrier services no longer add rates to the General shipping profile by default.
Creating carrier services with carrierServiceCreate or POST /admin/api/{version}/carrier_services.json now registers only the service. It doesn't add rates to the General shipping profile. Configure carrier-calculated rates in a shipping profile for checkout visibility.
Anchor to Shopify PaymentsShopify Payments
Shopify Payments adds per-fee details and a currency conversion balance transaction type.
The new feeDetails query returns individual Shopify Payments fees recorded on a shop's transactions, with each fee's name, amount, rates, tax, settlement amount, and related OrderTransaction. It requires the read_billing access scope.
The ShopifyPaymentsTransactionType enum now includes CURRENCY_CONVERSION, so ShopifyPaymentsBalanceTransaction.type can identify currency conversions in a shop's Shopify Payments balance transactions.
Anchor to Customer Account APICustomer Account API
Customer Account API removes deprecated incomplete checkout fields.
The deprecated Customer.lastIncompleteCheckout field is removed, along with the unreachable Checkout type subtree. Remove any queries for Customer.lastIncompleteCheckout or nested Checkout fields before upgrading; there is no Customer Account API replacement.
CustomerAddressInput and CustomerAddress now include countryCode, which takes two-letter codes such as US from the CountryCode enum. territoryCode is deprecated but keeps working, and countryCode takes precedence when an address input sets both.
Anchor to FunctionsFunctions
Shopify Functions adds access to customer creation dates.
The Customer object in Shopify Functions now exposes createdAt. Request createdAt from Cart.buyerIdentity.customer when Function logic needs the date and time a customer account was created. Continue handling guest buyers where customer data is unavailable.
Functions can now read metafields on delivery options: request metafield(namespace:, key:) on CartDeliveryOption in input queries. Delivery Customization Functions can read data that a delivery option generator or carrier service attached, instead of parsing option titles or handles.
Anchor to PolarisPolaris
Polaris updates remove a deprecated staff member field from POS UI extensions.
POS UI extensions remove a deprecated Session API field, so extensions that still read it need an update.
The deprecated session.currentSession.staffMemberId field is removed from the POS UI extensions Session API. Read session.staffMember.value?.id instead, or subscribe to the session.staffMember signal to react when a different staff member pins in.
Anchor to ShopifyQLShopify QL
ShopifyQL adds app analytics capabilities for modeling, querying, embedding, and enriching analytics data.
Apps can now model Shopify Analytics data with analytics-queryable metafields and the App Events API, query it with the ShopifyQL API, embed analytics web components, and add annotations and metric targets to charts.
Jul 21, 2026Anchor to Storefront APIStorefront API
Storefront API adds sales channel context for queries.
@inContext directive now accepts an optional channelId argument to apply a sales channel’s context across a query, including channel-specific product availability and pricing.