← All articles

October 11, 2026 · Ahmed · More by Ahmed

Shopify's Market-Driven Shipping Delivery Profile Trap

API 2026-07 moves merchant shipping to Markets. deliveryProfile reads go stale, writes fail silently — what readers and writers must change.

What market-driven shipping actually moves

Starting with API version 2026-07, Shopify is moving merchant-owned shipping configuration off the legacy delivery profile APIs and onto the Markets API. Under the new model, a merchant's shipping is configured per Market through Market.delivery.shipping, set via the existing marketCreate and marketUpdate mutations using delivery.shipping (and delivery.removeShipping to clear a market-level override so it inherits from its parent). Shipping options are typed — flat-rate, value-based, weight-based, or carrier-calculated — and reading them requires the read_markets scope, with write_markets added for mutations.

This only affects merchant-owned configuration. App-owned delivery profiles — the ones your app creates and manages with deliveryProfileCreate and deliveryProfileUpdate — are explicitly unaffected, and as of this change they can use a new coversAllItems flag to cover every item in the shop instead of a specific product subset.

Why this breaks without an error

The dangerous part is the failure mode. Shopify's changelog states that once a shop is on market-driven shipping, the legacy merchant-owned delivery profile APIs — deliveryProfile, deliveryProfiles, deliveryProfilesCount, deliveryProfileLocationGroup, deliveryProfileLocationGroups, deliveryProfileCreate, deliveryProfileUpdate, and deliveryProfileRemove — stop reflecting live state. Reads can return a stale snapshot of the old configuration. Writes "succeed without errors but will not update the merchant's live shipping settings." Nothing throws, nothing shows up in a webhook or error log — a 3PL, OMS, or rate sync that still assumes one shop equals one delivery profile keeps running against data that quietly stopped being true.

Two upgrade paths, depending on which side you're on

If your app only reads merchant shipping, Shopify's recommended path is Contextual Product Feeds, which return delivery option estimates already contextualized to a market — no branching between legacy and market-driven required. The fallback is reading Market.delivery.shipping directly through the Markets API. If your app writes merchant shipping, the recommended path is becoming an app-profile integration: create your own delivery profile with deliveryProfileCreate, now with coversAllItems, and stop writing to the merchant's profile — no new scopes required. The fallback for writers is going through marketCreate and marketUpdate directly, which needs both read_markets and write_markets.

Detecting which model a merchant is on

During the transition, branch on the marketDrivenShipping field on ShopFeatures rather than guessing from API behavior. Merchant rollout opened October 1, 2026; Shopify won't move merchants on your app automatically until it confirms compatibility, but any merchant who opts in manually before you've upgraded will hit the silent-failure case above. Full default rollout is set for July 1, 2027, after which the legacy deliveryProfiles branch becomes unnecessary entirely.

Sources

Operations & Fulfillment

ASSOSIATIX works on this every day. See our Shopify Operations Automation service

$./start-project.sh

READY TO BUILD
WHAT'S NEXT?

Tell us where you are and where you want to go. We'll help you choose the right path—storefront, system, product, or a focused growth sprint.