Skip to content
Cart
SHOPIFY DEVELOPMENT

Shopify API 2026-10: What Changed, What Breaks, and Your Upgrade Checklist

2026-10 is the latest stable Shopify API version, 2025-10 is already unsupported, and a handful of quiet breaking changes will catch integrations that skip the release notes.

JA
Jatin Sangani October 2026 11 min read SHOPIFY DEVELOPMENT
In this article:

    The short version

    • 2026-10 is the latest stable Shopify API version, released October 1, 2026. Shopify supports it for production use through at least October 1, 2027.
    • 2025-10 is already unsupported. An app still pinned to it is served by the oldest accessible stable version, so responses can change without any change to your code.
    • 2026-10 has real breaking changes: metafield filters that now error, removed PriceRule fields, removed Customer Account API checkout fields, and POS extension changes.
    • Next Gen Events, the successor to classic webhooks, is generally available. Classic webhooks keep working, so you migrate on your own schedule.

    Last verified against Shopify's release notes and versioning docs on October 15, 2026.

    Shopify ships a new API version every quarter, and every quarter some integration somewhere breaks because nobody read the release notes. The Shopify API 2026-10 release deserves a proper read. It changes how order taxes recalculate, how metafield filters behave, and what your POS and checkout extensions can do.

    It also makes Events, the successor to classic webhooks, generally available. This guide is for developers, agencies and merchants running custom apps or integrations. It covers which versions are supported, what breaks in 2026-10, whether to adopt Events, and a checklist to upgrade without a surprise during Black Friday week.

    Which Shopify API versions are supported right now?

    Shopify API version: a date-based release of Shopify's versioned APIs, named by year and month, such as 2026-10. Shopify publishes one every three months at 5pm UTC on the first day of the quarter, and each stable version is supported for a minimum of 12 months.

    Version Status on October 15, 2026 What to do with it
    2027-01 Release candidate. Scheduled to become stable on January 1, 2027. Early testing only. It can include backwards-incompatible changes.
    2026-10 Latest stable. Available for production through at least October 1, 2027. Target for new work and upgrades
    2026-07, 2026-04, 2026-01 Stable Fine for production today. Plan to move up.
    2025-10 Unsupported Move off it now

    Here is the part that catches teams out. When your app targets a version that is no longer accessible, Shopify doesn't return an error. It falls forward and answers with the oldest accessible stable version, which on today's table is 2026-01. Fields get removed, enums gain values and behaviour shifts, all while your config still says 2025-10.

    The only tell is the X-Shopify-API-Version response header. If it differs from the version you requested, you have been fallen forward. The checklist later in this guide shows how to check it in one command.

    There are two harder consequences. Shopify delists apps from the App Store that keep using unsupported resources after an upgrade deadline, and blocks new installs for at least seven days. And for Polaris UI extensions (checkout, customer account, POS and admin), Shopify CLI refuses deploys that target versions older than 12 months.

    What breaks in Shopify API 2026-10?

    Shopify's own release notes say several changes require code updates, especially around order taxes, draft order discounts, metafield filters and customer account checkouts. Here is the full action list, grouped by where it bites.

    Area What changed What to do
    Admin API: metafield filters A query that filters by a metafield that isn't valid for filtering now returns an error. Before, the filter was silently ignored. Audit every metafield filter. Confirm the definition supports filtering and the operator you use.
    Orders: shipping address updates Changing the shipping address on an unfulfilled order with orderUpdate or the REST update endpoint now recalculates taxes for the new destination. Re-query taxLines, totalTaxSet and totals after the update, and reconcile any payment or refund difference.
    Draft orders: PriceRule priceRule is removed from DraftOrderDiscountNotAppliedWarning. The legacy PriceRule object and related types leave the public schema. Select discountTitle and discountCode instead.
    Orders: fulfilment status displayFulfillmentStatus can return FULFILLMENT_NOT_REQUIRED instead of UNFULFILLED when nothing is left to fulfil. Handle the new enum value anywhere you map statuses exhaustively.
    Inventory ITEM_NOT_STOCKED_AT_LOCATION is removed from the inventory quantity mutations. Delete the code paths that handle that error.
    Shipping: carrier services carrierServiceCreate no longer adds rates to the General shipping profile. It only registers the service. Configure carrier-calculated rates in a shipping profile, or checkout won't show them.
    Customers Segment query functions use MATCHES and NOT MATCHES. Named dates such as 30_days_ago are deprecated for offsets like -12m. Flat SMS consent fields on CustomerPhoneNumber are deprecated for smsMarketingConsent. Update segment queries and consent integrations.
    Products: barcodes ProductVariant.barcode is deprecated for a barcodes connection of up to 20 typed barcodes. The old field returns only the first. Update product sync integrations to read barcodes.
    Customer Account API Customer.lastIncompleteCheckout and the Checkout type subtree are removed, with no replacement. Remove those queries before upgrading.
    POS UI extensions session.currentSession.staffMemberId is removed. Cart mutations such as applyCartDiscount, bulkCartUpdate and setCustomer now reject when POS doesn't confirm the change. Read the new staff field (below). Add rejection handling to every cart mutation before you change api_version.
    Checkout and customer account UI extensions Metafield declarations accept an owner_type, such as PRODUCT or CUSTOMER, so Shopify fetches only what the extension needs. Add owner_type to each declaration now. Later API versions block deployments that omit it.

    The POS fix is one line:

    // Removed in 2026-10
    const staffId = session.currentSession.staffMemberId;
    
    // Replacement
    const staffId = session.staffMember.value?.id;

    You can also subscribe to the session.staffMember signal to react when a different staff member pins in.

    The metafield filter change is the one I'd test first. An invalid filter used to be ignored, which means the query ran without the condition you thought it had. If one of your integrations is built on a filter that was being ignored, 2026-10 will expose it, and an error is better than quietly wrong data.

    Two more to watch. The tax recalculation on address updates changes money, so test it against orders with discounts and partial payments. And the carrier service change fails quietly: the service still exists, but checkout shows no rates until someone adds them to a profile.

    What are Next Gen Events, and should you replace classic webhooks?

    Next Gen Events are generally available with the 2026-10 API version across 18 topics. With a classic webhook, Shopify tells you something changed and your app fetches the rest. With Events, you tell Shopify which changes you care about and what data you need, and it sends the change, the affected resource IDs and the result of your GraphQL query in one delivery.

    You configure a subscription in shopify.app.toml with three parts:

    • triggers: which changes matter, such as a product joining a collection or a variant price changing.
    • query: a GraphQL Admin API query whose result is included in the payload, including related data and metafields.
    • query_filter: which results your app should receive, for example only products with an ACTIVE status.

    A minimal subscription, adapted from Shopify's collection membership example, looks like this:

    [events]
    api_version = "2026-10"
    
    [[events.subscription]]
    handle = "collection-membership"
    topic = "Collection"
    actions = ["update"]
    triggers = ["collection.products"]
    uri = "/api/events/collections"
    
    query = """
      query CollectionMembership($collectionId: ID!, $productsId: ID!) {
        collection(id: $collectionId) {
          id
          hasProduct(id: $productsId)
        }
      }
    """

    The 18 topics cover Product, Collection, Customer, Company, Order, FulfillmentOrder, Refund, Return, InventoryItem, InventoryShipment, InventoryTransfer, Location, Article, Blog, Page, MetafieldDefinition, Metaobject and MetaobjectDefinition.

    Should you migrate? Selectively, yes. Classic webhook integrations continue to work, an app can use both side by side, and you can move one workflow at a time. Keep classic webhooks for any topic or pattern Events doesn't support yet.

    Start with the handler that throws away most of what it receives, or makes a follow-up API call on every delivery. Don't copy your old payload into a query and subscribe to everything, because that carries over the work your app was already doing. Track three numbers per workflow before and after: deliveries per day, payload size, and follow-up API calls per delivery. Those tell you whether the move paid off.

    You need Shopify CLI 4.83 or later. If you used the developer preview, change your events API version from unstable to 2026-10, including any subscription-level overrides, then test and redeploy.

    What is new in Shopify API 2026-10 that is worth adopting?

    Not everything in this release is a fix. These additions are worth a look once your upgrade is stable:

    • SubscriptionContractCalculation API. Replaces the multi-step SubscriptionDraft workflow with a stateless calculate, poll and commit lifecycle through Shopify's checkout engine, and supports Shopify Functions during calculation. SubscriptionDraft remains available but won't get these capabilities.
    • Buyer-requested order edits. Buyers can request removal of unfulfilled line items. The Admin API adds RequestedOrderEdit with create, resolve, decline and calculate mutations. The Customer Account API adds orderRequestEdit, and three requested_order_edit webhook topics report the lifecycle.
    • Discounts and Rollouts. Discount types expose a read-only rollouts connection, which needs the read_rollouts scope. A discount's startsAt and endsAt don't describe its availability when it is part of a rollout, so discount integrations need to read the rollout schedule too.
    • Shopify Functions. The Customer object exposes createdAt, so request it from Cart.buyerIdentity.customer and keep handling guest buyers. Functions can also read metafields on CartDeliveryOption, so Delivery Customization Functions can use data a carrier service attached instead of parsing option titles.
    • Order and inventory webhooks. Order line items now include selling_plan_id, which removes a follow-up call for subscription lines. inventory_shipments payloads include inventory_transfer_id.
    • ShopifyQL and Storefront API. parseWarnings sits alongside parseErrors to flag upcoming deprecations on queries that still run. New Shop Campaign metrics and dimensions break sales down by campaign and country. The Storefront API @inContext directive accepts a channelId.

    If any of this maps to a project on your roadmap, our Shopify Functions and checkout extensions work is where we'd start.

    How do you upgrade to Shopify API 2026-10 without breaking production?

    1. Find out which version you are actually on. Don't trust your config. Send a request and read the header:
      curl -s -D - -o /dev/null \
        -X POST "https://YOUR-STORE.myshopify.com/admin/api/2025-10/graphql.json" \
        -H "X-Shopify-Access-Token: $TOKEN" \
        -H "Content-Type: application/json" \
        -d '{"query":"{ shop { name } }"}' | grep -i x-shopify-api-version
      If the header shows a different version from the one in the URL, Shopify fell forward and your app is already running on something else.
    2. Check your Dev Dashboard alerts. Shopify flags deprecated calls and the deadline for fixing them, and attributes each call to the app whose access token made it. Don't reuse an app's token in Postman or a support script, or the alert lands on your app.
    3. Diff your code against the release notes. Search for the symbols in the table above:
      grep -RInE "priceRule|lastIncompleteCheckout|staffMemberId|ITEM_NOT_STOCKED_AT_LOCATION|carrierServiceCreate|\.barcode\b" src/ extensions/
      Then review every metafield filter by hand, because grep can't tell you which ones are invalid.
    4. Test against 2026-10 on a development store. Point a second branch at the 2027-01 release candidate to see next quarter's breaking changes early. The release candidate is for testing only.
    5. Update your extensions first. Add owner_type to checkout and customer account metafield declarations. Add rejection handling to POS cart mutations before you bump api_version.
    6. Roll out in order of risk. Read-only integrations first. Order, tax and subscription handling last. Watch the version header, error rates and Dev Dashboard alerts after each step.
    7. Put the next upgrade on the calendar. 2027-01 lands January 1. Moving one version per quarter keeps every upgrade small.

    Timing matters this quarter. Do the audit and read-only upgrades before November 13. Freeze production API version bumps from November 16 through Cyber Monday on November 30. Schedule order, tax and checkout extension upgrades for December 2 onward, ahead of 2027-01.

    Script tags have a deadline of their own this quarter, and it overlaps with this one. Our guide to Shopify script tag migration covers that work, and the two audits are worth running together.

    If your stores are on a retainer, the upgrade fits naturally into ongoing app and theme updates. For custom apps and POS extensions, our bespoke app development and Shopify POS integration teams handle the extension changes. And if you are weighing who should own this work, our guide on how to choose a Shopify development agency lists the questions worth asking.

    Common questions about Shopify API 2026-10

    What is the latest stable Shopify API version?

    The latest stable Shopify API version is 2026-10, released October 1, 2026. Shopify supports it for production use through at least October 1, 2027. The 2027-01 release candidate is available for testing and is scheduled to become stable on January 1, 2027.

    What happens if my Shopify app uses an unsupported API version?

    Shopify does not return an error. It falls forward and responds using the oldest accessible stable version, so behaviour can change without any change to your code. Check the X-Shopify-API-Version response header to see which version actually served the request.

    Does Shopify API 2026-10 have breaking changes?

    Yes. The 2026-10 release notes call for code updates around order tax recalculation, draft order discounts, metafield filters and customer account checkouts. Invalid metafield filters now return an error, the PriceRule fields are removed from draft order warnings, and the Customer Account API drops lastIncompleteCheckout. POS UI extensions also lose the staffMemberId field and now reject unconfirmed cart writes.

    Are Shopify webhooks being replaced by Events?

    Next Gen Events are generally available with the 2026-10 API version across 18 topics, and Shopify describes them as the successor to classic webhooks. Existing classic webhook integrations continue to work, and an app can use both and move workflows over one at a time. Keep classic webhooks for any topic or subscription pattern Events doesn't support yet.

    How often does Shopify release a new API version?

    Shopify releases a new API version every three months, at 5pm UTC on the first day of the quarter. Each stable version is supported for a minimum of 12 months, with at least nine months of overlap between consecutive versions. Shopify recommends updating to the latest stable version each quarter and always specifying a version in your requests.

    Can an agency handle our Shopify API upgrade for us?

    Yes. BrainBox Infoway provides Shopify development and AI automation for ecommerce from Ahmedabad, India, with ~20 specialists serving merchants and agencies in the US, EU, AUS, and CAN. The team audits your apps and integrations, flags what breaks on 2026-10, and fixes it in a staging environment before it reaches production. Agencies can hand the work over under a white-label arrangement, or you can get a free quote for your store.

    Running custom apps on an older API version?

    We audit every integration, flag what breaks on 2026-10, and fix it in staging before it reaches production.

    Get a Free Quote
    JA

    Jatin Sangani

    Founder, BrainBox Infoway

    Jatin has worked on Shopify projects since 2014 - first as a freelance developer, then as co-founder of a prior agency, and since 2023 as founder of BrainBox Infoway. He leads a team of ~20 Shopify specialists serving merchants and agencies in the US, EU, AUS, and CAN markets.

    View all articles by Jatin

    Keep Reading

    More from the Shopify Development cluster

    Your store isn't going to fix itself.

    Tell us what you're building or solving. We'll scope it honestly and respond within 24 hours.