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.
Nothing tells you it broke
A missing shipping rate is not an error. The checkout works perfectly — it just offers nothing to one destination.
Your settings look exactly as they did yesterday.
Shopify does not notify you that a country lost its rates.
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.
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 →
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.
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.
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.
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.
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.
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.
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.
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.
Only one of them pays you
During the market-driven shipping transition, these can disagree — and only the last one is the truth.
May be reading a snapshot of the old configuration.
A write can succeed without reaching live settings.
The only view that decides whether you get the order.
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.
BLOCKEDA cart shipping to France gets no delivery option. Confirmed twice, three minutes apart.
The product is sellable in France, so this is a shipping configuration problem: start in Settings → Shipping and delivery.
You will get one more email when it is back.
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 }
}
}
}
| Result | What it means | Look at |
|---|---|---|
availableForSale: false | Not a shipping problem. Not sellable in that country. | Markets, catalogs, publishing |
requiresShipping: false | No rate is ever calculated. Treated as digital. | Variant: “physical product” |
Both true, still no rates | Now it is a shipping problem. | Settings → Shipping and delivery |