What changed
Shopify's API version 2026-10 moved from release candidate to the latest stable version on October 1, 2026. Its final official release notes retain the consequential order tax recalculation, removed draft-order and customer-account GraphQL fields, and carrier-service behavior documented during the September RC. They also flag breaking customer segment query syntax: segment functions use MATCHES and NOT MATCHES instead of = true and = false, with date offsets replacing named relative dates. CustomerPhoneNumber adds structured smsMarketingConsent and deprecates flat consent fields. Discount types now expose a rollouts connection, and apps must request read_rollouts to see schedules and effective traffic allocation: startsAt/endsAt alone no longer describe when a discount is active under a rollout. The stable API is documented as accessible until October 16, 2027 at 15:00 UTC.
Why it matters
The migration is now a production choice, not a preview test. Apps that edit unfulfilled-order addresses can change tax balances; apps with obsolete draft-order or customer-account selections can fail schema validation; segment builders can produce invalid filters; and discount tools that inspect only nominal start/end dates can misrepresent live eligibility during traffic-split rollouts. Operators should test each affected workflow before changing the API version, while remaining on supported stable versions until ready.
2026-10 has moved from release candidate to production
Shopify lists October 1, 2026 as the stable release date and October 16, 2027 at 15:00 UTC as its access cutoff. The September release-candidate window has ended; existing apps can continue using a supported older version until their migration is tested.
Order edits and removed GraphQL fields remain migration hazards
Updating an unfulfilled order's shipping address recalculates taxes for the destination, so integrations should re-read tax lines, totals and balances. Draft-order warnings no longer expose priceRule and legacy PriceRule types are removed. The Customer Account API removes Customer.lastIncompleteCheckout and its Checkout subtree without a direct replacement.
Customer segments and SMS consent require query and field changes
Segment functions now use MATCHES/NOT MATCHES instead of = true/= false, and older named date tokens are deprecated in favour of offsets such as -12m. CustomerPhoneNumber exposes structured smsMarketingConsent; flat SMS consent fields are deprecated. Apps constructing segment expressions or synchronising consent should update generated queries and tests.
Discount rollouts change what 'active' means
Discount types expose a rollouts connection with schedules and effective traffic allocation. Apps need read_rollouts permission to inspect this data. A discount's startsAt and endsAt fields alone cannot establish its effective availability during a rollout, so reporting and promotion logic must account for rollout allocation.
Carrier services still require explicit shipping-profile setup
Creating a carrier service registers it but no longer automatically adds rates to the General shipping profile. Apps should configure the appropriate carrier-calculated rate and verify checkout visibility separately.