
If your free shipping bar says an order qualifies but checkout still charges delivery, the bar and the shipping rule are probably reading different conditions. A storefront progress bar displays a message; Shopify calculates the actual rate. Check the discounted subtotal, eligible destination, shipping profile and rate threshold before editing the design. A quick four-cart test can reveal exactly where the promise breaks.
Why is a free shipping bar not matching checkout?
The storefront and checkout perform different jobs. A bar may compare cart merchandise to a number you entered in the theme editor. Checkout then evaluates Shopify's shipping profiles, locations, zones and rates for the buyer's address. If those rules are not identical, a perfect-looking progress bar can still make a false promise. Shopify's shipping-rate troubleshooting guide names profiles, locations, zones and rate conditions as separate checks.
For example, imagine a bar set to “Free shipping at $75.” A buyer adds $80 of products, then applies a $10 discount. The bar might still show the original $80, while a price-based shipping rate evaluates a $70 discounted cart total. According to Shopify's rate guidance, price-based rates use the total after discounts and before taxes. Neither display is a bug; the mismatch is in what each rule measures.
Which shipping rule is your store actually using?
Identify the source of the free-shipping promise before changing the bar. A $0 price-based shipping rate and a free-shipping discount are different mechanisms. The first belongs in shipping settings; the second belongs in discounts. Shopify explains that a free-shipping discount's minimum purchase counts product prices but excludes taxes, while a conditional $0 rate applies only when its price or weight tier qualifies.
| What you set up | Where the real rule lives | What the bar must reflect |
|---|---|---|
| $0 rate above an order total | Shipping profile and zone | Applicable order value after discounts, for eligible destinations |
| Free-shipping discount code | Discounts | Whether the code is entered and its conditions are met |
| Automatic shipping discount | Discounts | Whether the offer is active, combinable and eligible |
| Free shipping on certain items | Product/profile rules | Which items, locations and delivery methods are covered |
The table is a diagnosis aid, not a replacement for checkout testing. A cart containing products from two shipping profiles can produce a combined rate. Shopify warns that shipping rates from different profiles can be combined, and naming differences can make the result surprising.
How do you test the threshold without placing a live order?
Create fresh checkouts around the exact boundary. In a draft storefront or safe test environment, use the same address and products for every case, then change one variable at a time:
- Add products just below the threshold and record the bar message and checkout rate.
- Add products just above it; confirm a qualifying $0 rate actually appears.
- Apply a discount that moves the cart below the threshold; compare the bar again.
- Change only the destination to a second shipping zone; check whether the offer still applies.
- Mix a product from a custom shipping profile with a general-profile product.
- Repeat with a new checkout after each settings change. Shopify says an abandoned checkout may retain the rates from when it was created.
Write the result down as a tiny test sheet: cart value before discount, value after discount, shipping address, bar claim and checkout price. This is more useful than refreshing the theme preview. The checkout decides the charge; the visual bar must be corrected to match it, never the other way around.
What else can make checkout reject free shipping?
An eligible cart still needs an eligible delivery route. First confirm the shipping address belongs to a zone with the intended rate. Then check the products' shipping profiles and the fulfillment locations tied to those profiles. Weight-based rates also depend on product weight, units and the default package weight; a gap between rate tiers can select an unexpected rate. Shopify lists each of these in its troubleshooting checklist.
Cross-border stores need one more check. A minimum discount configured in the store currency may be converted for the customer's market at checkout. Shopify's Markets guidance describes this behavior for free-shipping discounts. Do not hard-code a converted figure into a bar unless the displayed threshold follows the buyer's currency and the same eligibility rule.
When should you change the bar, not the rate?
Change the bar when checkout is correct and the message overpromises. If only domestic standard shipping is free, say “Free standard shipping in eligible regions over $75,” rather than “Free shipping everywhere.” If a discount code is required, say so. And if the bar cannot follow a complex multi-profile or multi-currency rule, consider a simpler message instead of a precise countdown.
We checked Shopify's published rules and Shoptimity's feature list; we did not access a live merchant's shipping configuration. Shoptimity lists a free-shipping bar among its storefront tools, but a display widget does not override shipping settings. For related storefront choices, see which tools a theme can replace and how to avoid overpaying for apps. The right fix depends on your own rate setup.
Ready to build a faster, higher-converting store?
Every Shoptimity theme ships with conversion widgets built in — so you get speed and features without stacking apps.
7-day free trial · all themes included · cancel anytime
Continue Reading

Top Shopify Theme for Wholesale: A 2026 Buyer's Guide
You've just spent weeks sourcing inventory and building supplier relationships. But when you launch ...

Ecommerce Return Status Updates: Separate Request and Refund
Ecommerce return status updates should separate request, label, receipt, inspection and refund so sh...

Ecommerce Delivery Delay Updates: Show the New Reality
Ecommerce delivery delay updates should replace stale promises with a dated revised estimate, clear ...