Why is Shopify checkout showing no shipping options for a product that's obviously physical?

A product's "requires shipping" flag or a missing weight can silently stop checkout from returning any shipping rate at all — here's how to find and fix it across your catalog.

shippingproductsrequires-shippingfulfillmentweight

What's going on

A customer gets to checkout and no shipping methods show up, or an order comes through that you can't fulfill because Shopify is treating it as if it doesn't need a shipment. In almost every case the cause is the same: somewhere on the product, the "This is a physical product" (requires shipping) setting is off, or the product has no weight set. Shopify's checkout deliberately skips shipping-rate calculation for anything flagged as digital, a service, or otherwise non-physical — that's correct behavior for genuinely non-physical items like downloads or gift cards, but it silently breaks checkout when a real, shippable product ends up with that flag turned off by mistake.

This typically slips in through product imports (a CSV or migration tool that didn't map the shipping or weight columns), a duplicated product that copied a template with shipping disabled, or a staff member unchecking the box while troubleshooting something unrelated. Because the setting lives per product (and can vary per variant), it's easy for a handful of SKUs to quietly drift out of sync with the rest of the catalog while everything else keeps working — which is why this tends to surface as a recurring, hard-to-pin-down support complaint rather than a one-time outage.

It usually shows up as shipping that seems to fail "randomly" — some orders go through fine, others get stuck — because it only affects carts containing the misconfigured products, and a mixed cart can mask the problem if at least one other item in it does require shipping. The fastest way to confirm this is the cause is to add the suspect product to a cart by itself and check whether any shipping rate appears at checkout.

Why it happens

Shopify's checkout only requests and returns shipping rates for line items marked as requiring shipment. The "This is a physical product" setting in each product's Shipping section tells checkout whether to include that item in rate calculation at all. When it's off, checkout treats the item like a digital good — no weight is contributed, no rate is requested for it, and if every item in the cart is in that state, no shipping method will display. That can make the order impossible to complete, or, if it does complete some other way, impossible to fulfill with a normal shipping label.

Weight compounds the problem: even a correctly flagged physical product needs a nonzero, correctly-unitized weight for weight-based rate tables to return a match. A product left at zero weight because the field was never filled in behaves the same as a dead end for rate calculation as one with shipping turned off outright, since most weight-based rate tiers start above zero.

5 ways to fix it

1

Check "This is a physical product" and the weight field on the affected product

Open the product, scroll to the Shipping section, and confirm "This is a physical product" is checked. Then confirm the weight field has a nonzero value in the correct unit (g, kg, oz, or lb — 0.5 entered as kg is a very different product from 0.5 lb). Save, then add the product to a cart by itself and go to checkout to confirm a shipping rate now appears. This addresses the root cause directly and costs nothing.

2

Audit the rest of your catalog with the bulk editor

From the Products page, select the products you suspect are affected (or your whole catalog if you're not sure), open bulk edit, and add the shipping and weight columns to the table if they aren't already showing. This lets you review and correct requires-shipping and weight across many products in one screen instead of opening each one individually. For very large catalogs, export a CSV, fix the weight and shipping columns in a spreadsheet, and reimport it.

3

Confirm your shipping rates actually cover the corrected weight and location

Turning on "requires shipping" only puts the product back into rate calculation — it doesn't guarantee a rate exists for it. In Settings, under Shipping and delivery, check that your rate conditions (weight brackets, price brackets, zones) actually span the corrected weight, and that the product's inventory location is included in the shipping profile being used. A product with a newly added 1 kg weight can still show no rates at checkout if your cheapest tier starts at 2 kg.

4

If a product genuinely shouldn't ship, keep it unchecked and put it in its own shipping profile

Not every "no shipping required" flag is a mistake — digital downloads, services, and gift cards are supposed to skip shipping calculation. If your catalog mixes physical and non-physical items, separate the non-physical ones into their own shipping profile. That way a cart containing only digital items checks out cleanly, while physical items still get rated correctly whether they're alone or combined with digital ones in the same cart.

5

If this keeps happening, look at a catalog QA app for ongoing prevention

If products keep slipping through without shipping enabled or weight set — usually because multiple people are adding products, or items are imported from another platform — a bulk product-editing or catalog QA app can flag missing weight or shipping fields before a product goes live, instead of after a customer hits a broken checkout.

Bottom line

This is almost always a data problem, not a platform bug: one or more products got created — through an import, a duplicated listing, or a quick manual edit — with "requires shipping" unchecked or weight left blank, and Shopify correctly won't return a shipping rate for something it's been told doesn't need shipping. The fix is free and built in: correct the product's shipping setting and weight, confirm your rate conditions still cover it, and use the bulk editor to check the rest of your catalog. An app is only worth adding if you want ongoing catalog QA to catch this before it reaches customers — for a single incident, you don't need one.

Still Stuck?

Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.