A free-shipping bar in the cart drawer ("Spend $12 more for free shipping") is the cheapest upsell a Shopify store can run, and the easiest to get wrong: a threshold set from a guess, a bar that promises what checkout does not give, or a script that costs more in page speed than it earns. This guide shows how to pick the threshold from your own orders, which two messages belong together in the cart, what Shopify and its free themes do natively and where that stops, how thresholds behave in several currencies, what a bar costs in load time, and how MixMaxer draws it on every plan.
Pick the threshold from your orders, not from a rule of thumb
There is no universal percentage above the average order that works; the right number depends on your basket sizes and your shipping cost. Three steps:
- Export the last 90 days of orders (Orders › Export) and sort by subtotal. Find the median, not the average; a few large orders pull the average up. Note how many orders sit just below round numbers.
- Set the first threshold just above the median basket. If the median is $38 and the typical product is $15, a $50 threshold asks most customers for one more item; a $75 threshold asks for three, which fewer will add. The right threshold is the one a typical customer can reach with a single extra product.
- Check the margin on the extra item against the shipping you give away. If your average shipping cost is $7 and the item most customers add to cross the line earns $9 of gross margin, the threshold pays for itself on the first order; if the item earns $4, it does not, and the threshold should move up or the gift should replace free shipping.
Then run two thresholds for two weeks each (or as an A/B test if your app supports it) and compare profit per order, not just the share of orders above the line. The numbers come from your own export, not from a rule of thumb.
The two messages that belong together
A bar that only tracks free shipping leaves the easiest upsell on the table. Three messages work as a set, and a good cart bar shows the ones that apply in a sensible order:
| Message | When it shows | What it asks for |
|---|---|---|
| "Add 1 more to save 15%" with a one-click button | A volume tier or mix & match set is one unit away | The same product again, the most natural add |
| "Spend $32 more to get the Tote free" | A spend-threshold gift is set and not yet reached | Anything, with a visible reward |
| "Spend $12 more for free shipping" with a progress bar | The subtotal is below the free-shipping threshold | Anything, with a visible saving |
The order matters. If a customer with two bags of coffee is one bag away from the three-bag price and $12 from free shipping, "add 1 more bag" answers both at once and should sit first; the free-shipping line goes under it. Once an offer unlocks, the bar should say so ("You unlocked 15% off") rather than vanishing, because the confirmation is what stops the customer removing the item. Set the threshold and the tier so they land close together. Volume discount tiers that make profit covers choosing the tier, and auto-adding a gift on Shopify covers the gift line.
What Shopify gives you natively
- The free-shipping discount itself. Discounts › Create discount › Free shipping › Method: Automatic discount, with a minimum purchase amount (or minimum quantity). It exists natively, needs no code, and shows at checkout as a shipping line of $0. Alternatively, a shipping rate with a minimum order price in Settings › Shipping and delivery does the same job through the rate table.
- A bar in the cart. We checked Dawn's cart drawer source (the official Shopify repository): it has no free-shipping threshold setting and no progress bar. Dawn shows a shipping note ("shipping calculated at checkout"), not progress toward a threshold; check the other free Shopify themes in their cart settings. Many paid themes do include a free-shipping bar in the cart drawer, with the threshold typed into theme settings; check your theme's cart section settings before installing anything.
- Where native stops. A theme's bar knows one number: the threshold you typed. It does not know that the customer is one unit from a volume tier, that a gift is waiting, or that the subtotal checkout will use excludes an item already discounted by another offer. And a threshold typed into a theme setting is a second copy of the number in your shipping rate; when one changes and the other does not, the bar lies.
Thresholds in several currencies
A threshold is an amount, so it has the same problem as every fixed price under Shopify Markets: $50 converts to an odd number in euros and moves with the exchange rate. Three things to know:
- The native free-shipping automatic discount takes its minimum in the store currency; what a customer in another market sees depends on conversion, so check the checkout in each market.
- Spend-threshold gift offers ("spend $100, get the tote") can carry an explicit amount per market in an app that supports it, so the bar reads "Spend €90 more" instead of "€91.73".
- A free-shipping bar that compares the subtotal in the store currency should hide itself for carts in another presentment currency rather than show a converted number that may not match the shipping rate. Ask the vendor what it does; the honest answer for MixMaxer is below.
Bundle and tier prices per currency with Shopify Markets explains explicit prices per market.
Page speed: an app embed, not a script
A cart bar runs on every page that has a cart drawer, which is every page. How it loads decides what it costs:
- A script tag from the app's servers on every page load: the bar appears after the page paints, often shifting the layout, and depends on a third-party domain answering.
- A theme app embed: Shopify serves it as part of the theme, it renders only where the cart drawer is, and the data it needs (thresholds, offers) can come from a metafield on your store instead of a request to the vendor.
Measure before and after installing with PageSpeed Insights on a product page and on the home page; is your bundle app slowing down your store has the ten-minute procedure and the questions to ask a vendor.
With MixMaxer
The cart upsell bar is part of every plan, including Free, and is a theme app embed.
- Enable it twice. Theme editor › App embeds › MixMaxer cart bar, and MixMaxer › Settings › General › Cart upsell bar. It mounts in the cart drawer and on the cart page of any Online Store 2.0 theme that uses the standard Cart AJAX API (Dawn and its relatives do).
- Free-shipping goal. Set the threshold in Shopify first (a shipping rate with a minimum order price, or the native free-shipping discount), then enter the same amount in Settings › General › Free-shipping goal. MixMaxer does not create the shipping rate; it mirrors the number you enter. The subtotal is compared before shipping, taxes and discount codes, in the store currency. Carts in another presentment currency do not show the free-shipping line; spend-threshold gift offers can carry an explicit amount per market under Prices per market.
- "+1" button. When a volume tier or mix & match set is one unit away, the bar says "Add 1 more to save 15%" with a one-click "+1" button for the right product; when a gift is waiting it shows an Add button; when an offer unlocks it says so. The free-shipping line is the only message when no offer applies, otherwise it appears as a second line under the offer message.
- Re-reads the cart after every change, so the numbers follow each add, remove or quantity change, and the bar respects the same offer priority as checkout: a product priced by a higher offer is never promised by a lower one.
- Recommended products row. Settings › General › Recommend products in the cart adds "Frequently bought with your items" under the bar: up to three products learned from your orders, each with an Add button. Items already in the cart, sold out or gift cards are never suggested.
- Texts are editable per language and market (Settings › Widget text), with automatic right-to-left layout for Arabic, Hebrew and Persian storefronts.
Full details and the problems you might hit are in the cart upsell bar help article.
FAQ
Does the Dawn theme have a free shipping progress bar?
No. Dawn's cart drawer has no threshold setting or progress bar; it shows a note that shipping is calculated at checkout. Many paid themes include one; otherwise an app embed adds it.
How do I set a free shipping threshold on Shopify without an app?
Discounts › Create discount › Free shipping › Automatic discount with a minimum purchase amount, or a shipping rate with a minimum order price under Settings › Shipping and delivery. Both apply at checkout; neither shows progress in the cart.
What threshold should I set for free shipping?
Just above your median order value, so a typical customer reaches it with one more item, and only where the margin on that item covers the shipping you give away. Export your orders and test two thresholds rather than copying a percentage.
Why does the bar say free shipping is unlocked but checkout charges shipping?
The threshold in the bar differs from the minimum in your shipping rate or discount, or the rate is limited to certain zones. Make the two numbers equal, and check whether the bar compares the subtotal before or after discounts.
Is the MixMaxer cart bar free?
Yes. The cart upsell bar, the free-shipping goal and the recommended products row are on every plan including Free; no plan is capped by orders or revenue.
MixMaxer: a cart upsell bar on every plan that says "add 1 more to save", shows the free-shipping progress bar and the gift countdown, and re-reads the cart after each change, as a theme app embed. Install from the Shopify App Store · The cart upsell bar. Last checked 2 November 2026.