PrestaShop Marketing & Promotions

Free Shipping Bar – Per-country and per-state thresholds PrestaShop 8 & 9

One threshold per country, one per state, and no promise the checkout will not honour.

Free shipping above a certain amount is an effective way to lift average order value — provided the promise is accurate. Free Shipping Bar shows in real time how much is left to spend, with a threshold set per country but also per state. Offering free shipping on the mainland and Corsica but not overseas? Clear the five overseas departments and the bar disappears for them, without inheriting the France threshold.

At a glance
  • Per-country and per-state thresholds, with explicit territory exclusion
  • Carrier filtering, stored against the reference so it survives edits
  • Independent from PS_SHIPPING_FREE_PRICE: drive free shipping through carrier ranges
  • Compatible with PrestaShop 8 and 9, Classic and Hummingbird themes
  • Native multistore, translated into 6 languages
PrestaShop 8 & 9 Per-state thresholds Carrier filtering Hummingbird Multistore 6 languages
  • 30-day refund
  • 12 months updates
  • 24h support
www.datafirefly.com/en/
Free shipping bar with per-country thresholds on PrestaShop
v2.1.0 · updated 2026-08-06
What it does

The short version.

01

Per-country and per-state thresholds

Resolution follows a cascade: the address state, then the country, then the global fallback if you enable it. A cleared territory hides the bar without inheriting the level above — essential for overseas departments attached to France.

02

Carrier filtering

Allow list or deny list based on the selected carrier. Rules are stored against id_reference rather than id_carrier, so they survive edits — PrestaShop recreates a carrier every time one is modified.

03

Configurable address requirement

Before an address is entered the state is unknown. Three modes: never, always, or only for countries that have states. The recommended mode keeps the incentive everywhere except where it would be risky.

04

PrestaShop 9 and Hummingbird

WidgetInterface implementation for free placement, hooks dedicated to the Hummingbird theme, and price formatting through the Locale service with a PrestaShop 8 fallback.

The long version

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.

§ 01

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.

§ 02

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.

§ 03

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.

§ 04

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.

§ 05

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.

§ 06

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.