Shipping rates not showing at checkout › Market-driven shipping

Shopify checkout diagnostics

Market-driven shipping: what can break at checkout

Shopify is moving every store's shipping configuration out of delivery profiles and into Markets. Rollout started on 1 October 2026. For most stores it will be uneventful. The risk is concentrated in one situation: you switch before the apps that touch your shipping are ready — and nothing tells you they have stopped working.

The timeline

DateWhat happens
July 2026Feature preview for developers. Admin API version 2026-07 adds market-level shipping configuration.
1 August 2026The merchant-owned delivery profile APIs are deprecated for stores on market-driven shipping.
1 October 2026Merchant rollout begins. Existing merchants can opt in. Merchants installing an app not yet marked compatible see a warning.
1 July 2027All merchants are on market-driven shipping.

What actually changes

The failure that makes no noise

Apps that read or edit your shipping settings — rate tables, shipping rules, ERP and 3PL syncs that push rates into Shopify — have been doing it through the delivery profile API. For a store on market-driven shipping, Shopify's developer changelog is explicit about what happens to an app that has not been upgraded:

“Reads may return a stale snapshot of the legacy configuration, and writes may succeed without errors but will not update the merchant's live shipping settings.”

Read that from the merchant's side. The app's dashboard keeps showing your old rates, because it is reading a frozen copy. When it pushes a change, it gets a success response, so it reports success to you. Your checkout never receives the change. Nothing errors, anywhere.

Shopify's own guidance to developers is that it will not move a store automatically until the store's apps are confirmed compatible, so breakage only happens if a merchant opts in manually before an app has been upgraded. Which is exactly the merchant who reads the announcement and switches early.

Your admin is not evidence either During the transition, "the setting is there" and "buyers get the rate" are two different claims. Only the second one makes you money, and it can only be checked from the buyer's side.

Before you opt in

  1. List every app that touches shipping. Not just rate apps: anything that syncs rates, edits profiles, or assigns products to profiles.
  2. Ask each vendor one question: is the app marked compatible with market-driven shipping? Developers mark compatibility through a form Shopify provides, so the answer is yes or no, not "we're looking into it".
  3. Record what buyers see today. For each country you sell to, note which delivery options a cart gets, with their prices. This is your baseline; without it you cannot tell what changed.
  4. After switching, check the same carts again — twice, a few minutes apart, because configuration changes take time to settle.

Checking from the buyer's side

First rule out the cause that has nothing to do with shipping: whether the product is sellable in the destination's market at all. The quickest way is our free store check.

Then ask the Storefront API for the delivery options a real cart would get. This creates a throwaway cart — oneTimeUse keeps the address from being saved — and returns what the checkout would offer:

mutation($input: CartInput!) {
  cartCreate(input: $input) {
    cart {
      deliveryGroups(first: 10) {
        edges { node {
          deliveryOptions {
            title
            estimatedCost { amount currencyCode }
          }
        } }
      }
    }
    userErrors { message }
    warnings { message }
  }
}
{
  "input": {
    "lines": [{ "merchandiseId": "gid://shopify/ProductVariant/…", "quantity": 1 }],
    "buyerIdentity": { "countryCode": "DE" },
    "delivery": { "addresses": [{
      "address": { "deliveryAddress": {
        "address1": "Unter den Linden 1", "city": "Berlin",
        "zip": "10117", "countryCode": "DE"
      }},
      "selected": true,
      "oneTimeUse": true,
      "validationStrategy": "COUNTRY_CODE_ONLY"
    }]}
  }
}

Two practical details. Use a plausible address rather than a country code alone: for countries with provinces, such as the US and Canada, a bare country code is not enough to price shipping. And rates from carrier-calculated services are not returned by this simple form of the query; it covers the rates you configure in Shopify itself.

Run it per country before switching, save the output, run it again after. Any option that disappears, or changes price without you meaning it to, is your answer.


Related


Last checked 2 October 2026 against Shopify's developer changelog (“Merchant-owned delivery profile APIs are deprecated for market-driven shipping”, “Market-driven shipping Admin API”) and the guide “Upgrade your app for market-driven shipping”. The Storefront query above is the one we run against a live store.