"Free shipping" is the most requested promotion in e-commerce, and the most misunderstood. Amazon trained shoppers to expect it, so customers read a shipping line at checkout as a penalty rather than a cost of doing business. But shipping is never actually free — someone pays the carrier. The only question is whether you absorb that cost in a way that wins you more orders than it costs you in margin, or whether you hand a silent subsidy to the exact customers who cost you the most to serve. This post is about drawing that line precisely: when free shipping earns its keep, when it quietly bleeds you, and how to configure conditional free shipping in PrestaShop so the line holds automatically instead of depending on your goodwill.

If you're still deciding between free shipping, a flat rate, and live-calculated rates as your overall model, that head-to-head comparison lives in free vs flat rate vs calculated — what works best. This post assumes you've decided free shipping is on the table and you want to know where to draw the threshold and how to enforce it.

Free shipping is a psychological lever, not a logistics decision

Shipping cost is consistently reported as a leading cause of cart abandonment, and the reason isn't the euros — it's where they land. A €50 product with €5 shipping feels more expensive than the same item priced at €55 with "free" shipping, even though the customer pays the identical €55. The charge that appears after they've mentally committed reads as a surprise tax; the same money baked into the sticker price reads as the price. The word "free" removes a decision point at the worst possible moment — the last screen before payment.

So the real job of free shipping isn't to save customers money. It's to remove a moment of friction near the finish line. That reframing matters because it tells you where free shipping is worth paying for (anywhere a late shipping charge causes hesitation) and where it's pure waste (a customer who would have bought anyway, on a heavy item, at no extra conversion benefit). Everything below is about pointing the subsidy at the first group and starving the second.

When free shipping makes sense

High-margin products. If an item costs you €10 and sells for €80, absorbing €5–8 of shipping barely dents the margin and removes the abandonment trigger entirely. Apparel, accessories, cosmetics, and low-weight high-value goods usually sit here. The shipping cost is a rounding error against the markup, so there's no reason to make the customer think about it.

Above a minimum order value. "Free shipping over €75" is the workhorse, and for good reason: it removes the friction on larger baskets while keeping your protection on the small, shipping-heavy orders that would otherwise lose money. It also nudges average order value upward, because a customer sitting at €62 will often add an item to cross the line. This is the single most defensible free-shipping policy for a small store, and it's the one PrestaShop supports most cleanly — covered in the implementation section below.

As a competitive floor. If every competitor in your niche shows "free shipping" and you don't, you lose customers on a perceived cost difference even when your delivered price is lower. In that situation free shipping isn't a promotion, it's table stakes — and you may need to raise product prices slightly to fund it rather than eat it raw.

For specific customer groups. Free shipping for wholesale, VIP, or returning customers rewards the relationships worth keeping without giving the subsidy away to one-time bargain hunters. PrestaShop's customer-group system makes this a precise lever rather than a blanket — a cart rule restricted to a group applies free shipping only to those customers, which is exactly how you reward loyalty without funding everyone.

When free shipping eats your margin

Heavy or bulky goods. Furniture, building materials, ceramics, anything that costs €30+ to ship — blanket free shipping on these is a structural loss. A customer who orders a single heavy item collects the largest subsidy you offer, and they're the least likely to have been deterred by a visible shipping charge anyway. If your catalogue is weight-driven, free shipping belongs behind a high threshold or not at all.

Thin-margin products. If your markup is 20% and shipping runs 10% of the product price, free shipping cuts your profit in half on every order. The promotion costs more than the conversion lift can return. Here a flat or subsidised rate (below) keeps the friction low without the bleed.

International orders. Domestic free shipping can pay for itself; extending it to cross-border lanes where parcels cost €15–25 rarely does for a small store. The clean move is to scope free shipping to a domestic zone and let international fall back to calculated or flat rates — PrestaShop's zone system makes this a configuration, not a compromise. The mechanics of zone-scoped carriers and free-shipping rules sit in the complete shipping configuration guide.

Setting the threshold — calculate it, don't guess

The free-shipping threshold is the most important number in this whole decision, and most stores pick it by copying a competitor. Derive it from your own economics instead:

  • Start from your average order value (AOV). PrestaShop surfaces it as the Average order value KPI on the Dashboard (and in the Stats overview), or you can read it from your analytics. This is your baseline — most orders cluster near it.
  • Set the threshold roughly 20–30% above AOV. High enough that crossing it requires adding something, low enough that it feels achievable rather than punitive. A threshold a customer can never reach is just a hidden shipping charge with extra steps.
  • Pressure-test the margin on the gap. Ask whether the products a customer adds to cross the line generate enough margin to cover the shipping you're now eating. If the add-on items are themselves thin-margin, the threshold isn't funding itself.

A worked example: AOV of €60, average shipping cost €6, threshold set at €75. A customer at €60 adds roughly €15 of product to qualify. If that €15 carries even a 40–50% margin, the €6–7 of additional margin covers most or all of the shipping you just gave away — and you've lifted the order value on top. The threshold pays for itself out of the behaviour it creates, not out of your pocket. (Treat these figures as illustrative; the only numbers that matter are your own AOV and your own per-parcel cost.)

Implementing conditional free shipping in PrestaShop

PrestaShop gives you two distinct mechanisms for free shipping, and confusing them is where most stores go wrong. They behave differently and they stack differently.

Route 1 — a global free-shipping threshold

The fastest way to "free shipping over €X" is the built-in price/weight threshold. Go to Shipping → Preferences in the back office. There you'll find Free shipping starts at with two fields — an order price trigger (stored as PS_SHIPPING_FREE_PRICE) and an order weight trigger (PS_SHIPPING_FREE_WEIGHT). Set the price field to your calculated threshold and every cart that crosses it ships free, store-wide, automatically. No cart rule, no expiry, no code for the customer to enter. This is the right tool when free shipping is a permanent policy rather than a campaign.

One thing to know about the price trigger: PrestaShop evaluates it against the core cart total, and that comparison is driven by core cart-total logic (commonly the tax-inclusive total) rather than by your customer-group price-display setting — so verify the threshold fires at the figure you intend by testing a borderline cart at the tax-inclusive and tax-excluded edges, not by assuming.

Route 2 — cart rules for scoped or promotional free shipping

When free shipping needs conditions the global threshold can't express — a specific customer group, a date window, a carrier restriction, a category requirement — use a cart rule. Under Catalog → Discounts create a new rule, and on the Actions tab tick Free shipping. The Conditions tab is where the precision lives: restrict by customer group (VIP/wholesale free shipping), by date range (a Black Friday weekend), by minimum amount, by country (domestic only — or restrict to a carrier that serves a given zone rather than scoping by zone directly), or by carrier (free on the slow economy carrier, paid on express).

Cart rules are the tool for anything time-bound or audience-bound. The trade-off versus the global threshold is that a cart rule can require a voucher code or be set to apply automatically, and you have to manage its lifecycle — set an expiry so a "summer" promo doesn't quietly run into autumn. For combinations the global setting can't do at all — say, free shipping only on orders containing a specific category, or free on one carrier and not another — you'll lean entirely on cart rules, sometimes more than one.

Free shipping on the carrier itself

There's a third, often-missed lever: in a carrier's own settings (Shipping → Carriers → edit carrier → Shipping costs) you can set the relevant carrier range/zone price to 0, or use a carrier-scoped cart rule. This lets you make one carrier free while others charge — useful when you want "free standard delivery, paid express." For the full mechanics of carrier ranges, zones, and per-carrier pricing, see setting up carrier modules in PrestaShop.

Displaying it so it actually converts

A free-shipping threshold the customer never sees is money spent with no conversion return. Surface it in three places:

  • A site-wide banner — "Free shipping on orders over €75," visible on every page, so the threshold is in the customer's head before they shop.
  • A cart-page progress nudge — "Add €12 more for free shipping." This is the highest-leverage placement in the entire flow: it converts the threshold from a passive policy into an active prompt to add one more item, and it's where you'll see the AOV lift actually land.
  • The product page — a "free shipping" badge or a line showing the shipping cost next to the price, so the customer isn't surprised at checkout either way.

The cart progress message does double duty: it nudges add-on purchases and it reassures, which is why a visible "you're almost there" beats a silent threshold every time. Pairing it with a clear delivery estimate removes the other half of checkout hesitation — see estimated delivery dates: setting realistic expectations. When a customer can see both what shipping costs (or that it's free) and when the parcel lands, the shipping line stops being a sticking point.

Alternatives when free shipping doesn't fit your margins

Free shipping isn't binary. If the math doesn't work, lower the friction without eating the whole cost:

ApproachHow it worksBest when
Flat-rate shippingOne predictable price (e.g. €4.99) regardless of basket sizeYou want simplicity and your parcel costs are consistent
Subsidised shippingCharge €2.99 when true cost is €7 — you absorb part, not allMargins are too thin for free but you want to soften the charge
Free on first orderFree shipping only on a customer's first purchase — native cart rules have no reliable built-in "first order only" condition, so this needs manual customer targeting, a customer group/workflow, or a moduleAcquisition is the priority and repeat orders carry the margin
Loyalty / membership free shippingFree shipping reserved for repeat or VIP customers (group-scoped cart rule)You'd rather reward retention than subsidise one-time buyers

Each of these maps onto a PrestaShop cart rule or a flat-rate carrier, so you can run them without custom code. The deeper question of how aggressively a small store should price shipping overall — balancing cost against the speed customers expect — is its own decision, worked through in shipping strategy for small stores.

Measure whether it's actually profitable

Free shipping is one of the few promotions that can increase orders while decreasing profit, which makes it the one you must measure rather than assume. Before you turn it on, record your baseline: conversion rate, AOV, and your average per-order shipping cost. After it's live, watch the same three for at least 30 days and a meaningful order count — long enough to see a trend rather than a noisy week. The number that matters isn't "did orders go up," it's "did contribution margin per order hold after the shipping subsidy." If conversion rises but margin per order falls below your floor, the threshold is set too low and you tighten it.

To answer that honestly you need shipping cost tracked as a real line against revenue, not a vibe. If you're running recurring free-shipping campaigns and want to see whether each one paid for itself, our Financial Revolution module pulls the cost and revenue side together so you can read campaign profitability from the back office instead of reverse-engineering it from a spreadsheet — which is the difference between knowing a promotion worked and hoping it did.

The honest summary: free shipping is a conversion tool, not a logistics one, and it's worth paying for exactly where a late shipping charge would have cost you the order — high-margin items, baskets above a calculated threshold, the customers and zones you've chosen on purpose. PrestaShop gives you the controls to draw that line and hold it automatically: the global threshold for a standing policy, cart rules for scoped and seasonal offers, per-carrier free shipping for "free standard, paid express." Set the threshold from your own AOV and parcel costs, show it where customers will act on it, and then check the margin — because the version of free shipping that quietly eats your business looks identical, on the order screen, to the version that grows it.

Share this post:
David Miller

David Miller

Over a decade of hands-on PrestaShop expertise. David builds high-performance e-commerce modules focused on SEO, checkout optimization, and store management. Passionate about clean code and measurable results.

Enjoyed this article?

Get our latest tips, guides and module updates delivered to your inbox.

Comments

No comments yet. Be the first!

Be the first to ask a question or share useful feedback.

Loading...
Back to top