WooCommerce CRO Technique
How to set a WooCommerce free-shipping threshold above AOV with a progress bar
This technique uses WooCommerce’s built-in Free shipping method with a minimum order amount in the right shipping zone, then makes the goal visible with a live “you’re £X away” message or progress bar in the cart, side cart or mini-cart. It helps most when shipping cost friction is real, basket-building is plausible, and you can absorb free shipping only when the larger basket protects contribution margin.
Summary
Bottom Line: Start by testing a WooCommerce free-shipping threshold slightly above your current AOV, then validate it against real shipping cost and gross margin
- Extra costs such as shipping, tax and fees are still the leading preventable checkout abandonment reason in Baymard’s data, by 39% of abandoning shoppers.
- Conditional free shipping can increase basket size, but it is a margin trade-off: academic and practitioner evidence both show that thresholds set too low can erode profitability, while thresholds set too high can reduce orders or feel unfair when the target seems out of reach.
- Shoppers do respond to thresholds: 51% of online shoppers in NRF research said they add items to meet a shipping minimum, and older UPS/Comscore studies found 58%. The 58% figure is older and vendor-backed, so treat it as directional rather than current universal truth.
- In WooCommerce core, free shipping is configured per Shipping zone, and eligibility can be based on a minimum order amount, a coupon, or both. WooCommerce also lets you decide whether the threshold is checked before or after coupon discount.
- On newer WooCommerce builds, Cart and Checkout Blocks are the default for new installs from WooCommerce 8.3, and block-based customisation uses a different extensibility model from classic shortcode/templates. That matters when choosing how to display the progress bar.
How To Implement
Baseline the current position before you touch the threshold
Pull at least one clean pre-change period in GA4 and your order-margin view. At minimum, note current AOV, RPV, conversion rate, checkout completion, shipping cost per order, and how many orders already clear your proposed threshold. Because WooCommerce shipping methods are zone-based, read the baseline for the zone or country where you will actually apply the offer rather than sitewide first if your rates vary materially by destination.
Choose an initial threshold that is above AOV, but still feels reachable
The academically safer principle is “slightly above the average basket”, and current practitioner heuristics commonly start around 15–30% above AOV. Treat that percentage as a starting test range, not doctrine. Then pressure-test it against your actual shipping cost and gross margin so you are not simply subsidising orders you would have won anyway.
Configure the WooCommerce core rule first
In WooCommerce → Settings → Shipping → Shipping zones, edit the relevant zone, click Add shipping method, choose Free shipping, and set Free Shipping Requires to A minimum order amount. If discounts are common, decide whether to tick Apply minimum order rule before coupon discount. This choice matters because customers notice very quickly when the bar says they have qualified but checkout says they have not.
If shipping economics differ by geography, set thresholds per zone rather than forcing one global number
WooCommerce matches customers to one shipping zone only, and it uses the first matching zone in the list, so zone order matters. Put more specific zones above broader ones, then set threshold logic per zone where needed.
Add the bar on the cart surface you actually use
Pick one route and make sure the display reads the same threshold as WooCommerce core:
- CartFlows Modern Cart: install/activate Modern Cart, then go to WooCommerce → Modern Cart. The documentation shows the free-shipping bar is a built-in feature, and the label text is controlled under Text Settings, where Free Shipping Bar Text supports the {amount} placeholder. This is best if you already want a slide-out cart experience.
- FunnelKit Cart: the official path for a reward bar is FunnelKit → Cart → Rewards. FunnelKit’s documentation also shows a fkcart_free_shipping filter if you deliberately want the reward bar without relying on WooCommerce’s native free-shipping method, but for most stores the simpler route is to keep the actual shipping rule in WooCommerce and use FunnelKit for the side-cart presentation.
- Dedicated cart-progress plugin / official extension: WooCommerce’s own Shipping Progress Bar extension is configured at WooCommerce → Settings → Shipping Progress Bar. It supports display rules, automatic placement, and a manual shortcode, [shipping_progress_bar], for custom positions. It also warns that its threshold and “calculate based on” logic must match WooCommerce’s shipping rule.
Handle classic shortcode pages and Blocks differently
- On classic cart/checkout templates, you can use the legacy page shortcodes [woocommerce_cart] and [woocommerce_checkout], place shortcodes inside a Shortcode block, or inject custom content with classic PHP hooks such as woocommerce_before_cart.
- On Cart & Checkout Blocks, front-end extensibility is JavaScript-based, not the old PHP hook layer. Since WooCommerce 8.3, Blocks are the default for new installs, so do not assume older hook-based snippets will appear where you expect. If your header uses the Mini-Cart block, a side-cart plugin with native support is usually safer than forcing an old template-hook solution.
Write the message as a currency shortfall, not vague promo fluff
Older UPS research explicitly recommends prompting shoppers with the incremental spend needed to meet the threshold. In practice that means copy such as “Add £12 more for free delivery”, then switching to a success message once the goal is met.
Roll out safely and review the threshold when basket behaviour changes
Start with one major zone or one cart surface, annotate the go-live in GA4, and compare against the baseline. If your store is using HPOS and an older extension is not fully compatible yet, WooCommerce recommends keeping compatibility mode on while you test and synchronise order storage.
How To Measure
The main KPI is AOV, with RPV as the commercial sense-check. In GA4, make sure you are sending the ecommerce events that let you see the funnel clearly: view_cart, begin_checkout, add_shipping_info, and purchase. Use the Ecommerce purchases report for revenue and item performance, then a funnel or Exploration view to compare the path from cart to purchase before and after launch. Read the data in the segment where the threshold applies — ideally by the relevant shipping country / shipping-zone market, and separately on mobile versus desktop if traffic mix differs.
Success looks like higher AOV and higher or stable RPV, while conversion rate and checkout completion stay flat or improve. Guardrail metrics are: conversion rate, checkout completion, gross margin per order, shipping cost absorbed per order, refund / return rate, and if the bar adds extra front-end code, LCP, INP and CLS. Google’s current Core Web Vitals thresholds remain LCP ≤ 2.5s, INP ≤ 200ms, and CLS ≤ 0.1 at the 75th percentile.
If the bar raises AOV but purchase rate drops, or if more customers hit “free shipping” without enough extra margin to cover the delivery cost, that is not a win. Academic work and retailer evidence both show the threshold is a trade-off between larger baskets and fewer or less profitable orders, so the correct read is always AOV + RPV + conversion + margin together, not AOV in isolation.
Pitfalls
- Myth: the progress bar is the tactic. The stronger independent evidence is for upfront shipping clarity and putting free-shipping information where shoppers make the decision. Baymard’s research shows many users look for shipping cost on the product page and many miss free-shipping information when it sits only in banners or headers. Progress bars can help, but mostly because they communicate the threshold plainly.
- Mistake: setting the threshold too low, or just below where most orders already land. That usually means you are paying shipping on orders customers would have placed anyway. Wharton / UPenn research found that a lower threshold could reduce profitability considerably, and recommended setting the threshold slightly above the average basket amount.
- Mistake: setting the threshold so high that it feels unattainable. Research on contingent free shipping shows higher thresholds can motivate some shoppers to top up, but they can also deter others, lower purchase incidence, and hurt willingness to pay or perceived fairness when the target is out of reach.
- Mistake: letting the bar and WooCommerce disagree. The biggest practical cause of false positives is logic mismatch: subtotal versus total, before-coupon versus after-coupon, or a display threshold that does not match the actual shipping-zone rule. WooCommerce and the Woo Shipping Progress Bar docs both call this out directly.
- Mistake: compensating for free shipping with hidden unavoidable fees later. In the UK, the CMA’s current price-transparency guidance says mandatory charges should be included upfront and that hiding unavoidable charges later in the journey is illegal drip pricing.
Examples
FAQs
Yes: the safest starting point is a threshold slightly above current AOV, because the aim is to create a realistic top-up incentive rather than give away shipping on your existing basket mix. A 15–30% uplift above AOV is a common heuristic, but it is still only a starting range and must be checked against margin and actual basket distribution.
They can help, but mostly because they make the threshold visible and concrete. Independent evidence is stronger for shipping-cost transparency and clear threshold messaging than for the bar UI in isolation; when you do see uplift numbers for progress bars, they are often vendor or single-brand case studies rather than broad independent benchmarks.
Pick one logic and make WooCommerce and the bar match exactly. WooCommerce lets you decide whether the minimum order rule is checked before or after coupon discount, and any plugin bar should use the same basis or customers will see contradictory messages.
Yes. WooCommerce free shipping is configured per Shipping zone, and customers are matched to one zone based on shipping address, so you can set different thresholds where shipping economics genuinely differ.
Sources & Further Reading
Want us to implement this for you?
We run measured CRO consultancy for WooCommerce. If you want help prioritising, testing & implementing these improvements, tell us about your store.
Book PilotAbout This Page
- Written By: Eliot Webb – Founder & WooCommerce CRO Consultant
- Last Reviewed: 22 Jun 2026
- Last Updated: