Everything you'd want to know before you install.
A detailed look at how Free Shipping Bar - Per-country and per-state thresholds PrestaShop 8 & 9 works, why we built it the way we did, and the thinking behind the features above.
Communicating free shipping without getting the promise wrong
Free shipping above a threshold is an effective argument for lifting average order value, provided it is visible at the right moment. A progress bar answers that need: the customer always sees how much is left to add. But a mistargeted argument backfires — announcing free shipping to a customer who will be charged for it at checkout produces an abandoned cart and a complaint. That is exactly what this module's territorial resolution prevents.
Why per-country thresholds are not enough
In PrestaShop, Guadeloupe, Martinique, French Guiana, Réunion and Mayotte are states attached to the country France. A threshold set on "France" therefore also applies to those destinations, even though most merchants do not offer free shipping there. The same problem appears elsewhere: the Canary Islands for Spain, Ceuta and Melilla, the Italian island territories. This module treats the state level as a first-class level, taking precedence over the country.
Clear the box rather than empty the amount
Two distinct gestures in the configuration table. Emptying a territory's amount deletes the rule: it then inherits from the parent country — handy for aligning Corsica with the mainland without retyping the amount. Clearing the checkbox hides the bar entirely for that territory, with no inheritance at all. That is the gesture for a territory excluded from your offer.
The carrier is part of the condition
Free shipping is often granted by some carriers only: standard parcel and pickup point yes, express no. The module restricts the display through an allow list or a deny list. One detail that matters: rules are stored against the carrier reference, not its identifier. PrestaShop marks the old carrier as deleted and creates a new one on every rate change — an identifier-based configuration would be lost the first time.
Independent from the native setting
The module works exclusively from its own thresholds, stored in its own tables with a shop identifier. It never reads PS_SHIPPING_FREE_PRICE: you can leave it at 0 and drive your real free shipping through weight or price ranges at carrier level, without the two mechanisms contradicting each other.
PrestaShop 9, Hummingbird and free placement
The module covers 8.0 through 9.x. It implements WidgetInterface, letting you place it wherever you want in your templates with {widget name='dffreeshipbar'}, on top of the banner, navigation, cart and checkout hooks. Price formatting goes through the PrestaShop 9 Locale service with an automatic fallback to the 8 API.
There are no reviews yet.