For Shopify merchants

Shipping rates not showing at Shopify checkout?

Your store can stop shipping to an entire country — with no error, no email, and no order to tell you.

The buyer sees “Shipping not available” and leaves. Fixing it usually takes minutes. Knowing it happened is the hard part. Below: how to find the cause, and how to hear about it the day it breaks.

What two buyers saw on the same store, for the same product, in the same minute. Recreated from a real probe of our test store on 1 October 2026: the US cart got two options, the French cart got none.

Paste a product page. We check, country by country, whether a buyer gets a delivery option — the way a shopper would.

Why it costs so much

Nothing tells you it broke

A missing shipping rate is not an error. The checkout works perfectly — it just offers nothing to one destination.

✕ No admin banner

Your settings look exactly as they did yesterday.

✕ No email

Shopify does not notify you that a country lost its rates.

✕ No failed order

The sale you never received leaves no trace to investigate.

The usual way to find out is to notice, days later, that revenue from one country went quiet. Or never to notice.

A one-off check only tells you about today

Ours included. It shows what buyers get right now, for one product. The rate that breaks next Tuesday will not announce itself. That is the part we automate →

Why it happens

The 7 causes, in the order worth checking

Every guide says “check your shipping zones”. That is one cause — and the only one you can see from your admin.

1Most guides miss this

The product is not sellable in that country

If your product is not for sale to buyers in a country, they get no delivery options at all. Your shipping can be set up perfectly and never be reached. In our case, Shopify explained it with this message:

"The product 'The Inventory Not Tracked Snowboard' is already sold out."

It could not be sold out: its inventory was not even tracked. The country had an active market, covered by the same shipping zone that served the US fine. The truth only showed up when we checked from the buyer's side: the product was simply not for sale in that country. A merchant reading “sold out” checks stock, finds it, and goes searching shipping settings where nothing is wrong. We lost twenty minutes to it. Our store check reports this case separately.

2

No zone covers the destination

The documented cause, and a real one. A “Rest of world” zone does not necessarily make a country reachable: if the country is not in an active market, the storefront will not sell to it whatever your zones say. Check both.

3

Rate conditions leave a gap

Weight- and price-conditioned rates cover brackets. A rate for 0–20 kg leaves heavier carts with nothing, and the failure only shows for carts that cross the line — which is why it survives testing.

4

Missing or wrong weight

A physical variant with no weight cannot resolve weight-based rates. Check the unit too: grams read as kilograms silently fall outside every bracket.

5New in 2026

Your admin shows a stale copy

Shopify is moving every store to market-driven shipping: rollout began 1 October 2026, all stores by 1 July 2027. For migrated stores, the legacy delivery profile API can return stale snapshots — and writes can succeed without changing anything. “My admin shows the rate” is no longer evidence that buyers see it.

What can break when you switch →

6

Two rates share a name

Legal, and a trap when you audit by eye. Two rates both called Standard at different prices: if one disappears, a visual check will not notice, because the name is still there.

7

You just changed something, and it has not settled

Market, catalog and shipping changes are eventually consistent. We measured a product reporting availableForSale: false for a market, then stably true a few minutes later, with no action in between. Before you conclude anything is broken, measure twice, several minutes apart.

Three views of the same store

Only one of them pays you

During the market-driven shipping transition, these can disagree — and only the last one is the truth.

Your admin
✓ Rate configured

May be reading a snapshot of the old configuration.

Your shipping app
✓ Synced successfully

A write can succeed without reaching live settings.

The buyer's checkout
✕ Shipping not available

The only view that decides whether you get the order.

In development

Know before your customers do

ShipRateGuard checks your checkout from the buyer's side, for every country you have chosen to sell to, and emails you when a delivery option that used to be there is gone — naming it.

  • Watches your markets, not a list someone guessed: the destinations you actually sell to.
  • Separates the causes: “not sellable there” and “no shipping there” send you to different screens.
  • Confirms before alerting, so a change that is still settling does not wake you up.
  • Read-only on your shipping. It never changes your settings.

Not published yet. This page comes first, because the diagnosis above is useful whether or not you ever install anything.

For developers

Check it yourself with one query

What our store check does first, by hand. A product that cannot be sold into a market produces exactly the same symptom as a missing shipping rate. Ask the Storefront API — the buyer's view, not the admin's:

query($id: ID!) @inContext(country: FR) {
  node(id: $id) {
    ... on ProductVariant {
      availableForSale
      requiresShipping
      price { amount currencyCode }
    }
  }
}
ResultWhat it meansLook at
availableForSale: falseNot a shipping problem. Not sellable in that country.Markets, catalogs, publishing
requiresShipping: falseNo rate is ever calculated. Treated as digital.Variant: “physical product”
Both true, still no ratesNow it is a shipping problem.Settings → Shipping and delivery