PrestaShop Marketing & Promotions

dffreegift — Cadeau offert au-delà d’un seuil panier pour PrestaShop 8 & 9

Cadeau offert au franchissement du seuil panier — propre, mesurable, sans hack sur les prix.

« Ajoutez 12 € pour recevoir votre cadeau » : sur la page panier, une barre de progression chiffre exactement ce qu'il manque pour déclencher l'offre. Au franchissement du seuil, le produit cadeau est ajouté automatiquement au panier au prix de zéro. Si le visiteur retire un article et que le panier redescend sous le seuil, le cadeau est retiré dans la foulée. Le module s'appuie sur le mécanisme natif CartRule de PrestaShop (champ gift_product) : aucun calcul de prix bidouillé, compatibilité complète avec vos promotions existantes, vos codes promo, vos taxes et votre multidevise.

PrestaShop 8.0 → 9.x PHP 8.1+ CartRule natif Auto-ajout & auto-retrait Barre de progression Multi-boutique
  • Remboursement 30 jours
  • 12 mois de mises à jour
  • Support 24h
www.datafirefly.com/
dffreegift — Cadeau offert au-delà d'un seuil panier pour PrestaShop 8 & 9
v1.0.0 · mis à jour 2026-05-15
Ce que ça fait

La version courte.

01

Auto-ajout et auto-retrait au franchissement du seuil

Sur chaque sauvegarde de panier (hook actionCartSave), le module recalcule le total selon votre configuration (HT ou TTC, avec ou sans frais de port) et attache ou détache la règle cadeau. Le visiteur n'a rien à cocher, aucune case à valider — le cadeau apparaît ou disparaît tout seul. La transition vers le seuil atteint déclenche aussi une animation visuelle dans le bloc de progression.

02

Bloc de progression visuel sur la page panier

Affichage automatique d'un bandeau avec image du produit cadeau, message dynamique (« Ajoutez 12,40 € pour recevoir votre cadeau » ou « Cadeau ajouté à votre panier ! »), et barre de progression colorée. Le message bascule du gris-orange (en attente) au vert (objectif atteint) au franchissement. Responsive, accessibilité ARIA, et compatible avec tous les thèmes utilisant le hook standard displayShoppingCart.

03

Mécanisme natif PrestaShop — pas de hack sur les prix

Le module crée et maintient une CartRule fantôme (code DFFREEGIFT_xxxxxxxx) avec gift_product configuré. Quand la règle est attachée à un panier, PrestaShop insère lui-même la ligne cadeau (gift = 1, prix = 0) — exactement comme pour une règle promotionnelle créée à la main dans le back-office. Conséquence directe : compatibilité native avec les autres promotions, les codes promo, les taxes, le multidevise, le multiboutique, le checkout et la conversion en commande. Le snapshot historique des commandes passées reste également intact.

04

Configuration fine : seuil, taxe, port, stock, groupes clients

Tout est paramétrable depuis Modules → Configurer : ID du produit cadeau et déclinaison spécifique, montant du seuil avec calcul HT ou TTC, inclusion ou exclusion des frais de port, vérification du stock (l'auto-ajout est suspendu si rupture), restriction aux groupes clients de votre choix, et bascule indépendante du message et de la barre de progression. Tout est multi-langue côté frontend.

La version longue

Tout ce que vous voudriez savoir avant d'installer.

Un regard détaillé sur le fonctionnement de dffreegift — Cadeau offert au-delà d'un seuil panier pour PrestaShop 8 & 9, pourquoi nous l'avons conçu ainsi, et la réflexion derrière les fonctionnalités ci-dessus.

§ 01

Le levier le plus mesurable sur le panier moyen

Sur une boutique e-commerce, deux variables font le chiffre d'affaires : le nombre de commandes et le panier moyen. Le coût d'acquisition d'une nouvelle commande est devenu très élevé (publicité, SEO, retargeting). À l'inverse, faire monter le panier d'un visiteur déjà sur le point d'acheter coûte presque rien — c'est un upsell sur un trafic déjà payé. Le cadeau au seuil panier est l'une des mécaniques les plus efficaces pour ça : le visiteur ajoute volontairement quelques euros pour ne pas passer à côté de l'offre. À condition que la mécanique soit visible, chiffrée, et instantanée. C'est exactement ce que fait dffreegift.

§ 02

Le bloc de progression : la mécanique psychologique au centimètre près

Sur la page panier, le module affiche en permanence un bandeau dédié avec l'image du produit offert, son nom, et un message qui chiffre la distance restante au centime près : « Ajoutez 12,40 € pour recevoir votre cadeau ». Une barre de progression colorée passe progressivement du gris-orange au vert au fur et à mesure que le seuil approche. Au franchissement, le bandeau bascule en vert avec le message « Cadeau ajouté à votre panier ! » et une animation pulse confirme visuellement la réussite. Cette dramaturgie en temps réel est ce qui transforme une simple promotion conditionnelle en levier de comportement : le visiteur voit la jauge se remplir, calcule mentalement l'effort à fournir, et bascule.

§ 03

Sous le capot : le mécanisme natif PrestaShop, propre

La grande majorité des modules cadeaux du marché manipulent directement les prix produits via le hook actionProductPriceCalculation, créent des lignes panier avec un prix forcé à zéro, ou injectent des SpecificPrice temporaires. Cette approche casse plus tard la compatibilité avec d'autres modules de promotion, génère des incohérences dans les exports comptables, et complique le débogage. dffreegift fait l'inverse : à l'installation, il crée une CartRule classique (visible dans Catalogue → Réductions → Règles panier) avec un code DFFREEGIFT_xxxxxxxx et un gift_product initialisé à zéro. Sur chaque sauvegarde de panier, le module synchronise gift_product et gift_product_attribute avec votre configuration, puis attache ou détache la règle au panier via les méthodes natives Cart::addCartRule et Cart::removeCartRule. PrestaShop prend ensuite tout en charge : insertion de la ligne cadeau (gift = 1, price = 0), affichage panier, totaux, conversion en commande, snapshot historique. Aucun appel direct sur les prix, aucune injection invasive — d'où la compatibilité native avec vos autres mécanismes promotionnels.

§ 04

Trois triggers de synchronisation, plus une auto-réparation

La logique principale s'exécute sur le hook actionCartSave, qui est appelé par PrestaShop à chaque sauvegarde du panier — c'est-à-dire à chaque ajout, modification ou retrait de produit, mais aussi au login client (fusion de panier) et lors de certaines actions back-office. Un drapeau statique anti-récursion empêche que la modification du panier par le module ne re-déclenche le hook en boucle. En parallèle, le hook actionObjectCartRuleDeleteBefore surveille la suppression manuelle de notre CartRule depuis le back-office : si un admin supprime la règle par inadvertance, la configuration est remise à zéro et la prochaine synchronisation recréera une règle propre. Enfin, à chaque sauvegarde de configuration depuis l'écran Configurer, le module re-synchronise gift_product et gift_product_attribute sur la règle existante — vous n'avez jamais à toucher manuellement à la règle dans la zone Réductions.

§ 05

Configuration : seuil, taxe, port, stock, groupes

L'écran Modules → DataFirefly Free Gift → Configurer regroupe tout. Un switch master pour activer ou désactiver l'ensemble. L'ID du produit cadeau (saisi à la main, avec le nom affiché en aide après enregistrement). Une liste déroulante des déclinaisons du produit (l'auto-remplissage se fait après avoir d'abord enregistré l'ID produit, le module relit alors les combinaisons disponibles). Le seuil de déclenchement en montant, avec deux switches associés : Calcul TTC (sinon HT) et Inclure les frais de port (sinon produits uniquement). Un switch Vérifier le stock du cadeau, qui suspend l'auto-ajout si le produit est en rupture (respecte la stratégie out of stock configurée globalement dans PrestaShop). Une grille de cases à cocher pour restreindre l'offre à certains groupes clients — si aucune n'est cochée, tous les clients sont éligibles, visiteurs non identifiés inclus. Deux switches d'affichage indépendants pour le message de progression et la barre de progression.

§ 06

Cas d'usage typiques

Boutique de cosmétique avec marge confortable : offrir un échantillon parfum au-dessus de 40 € TTC pour pousser les paniers de 28-35 € vers 40 €. Mode et accessoires : pochette en cadeau dès 80 € TTC, calculé hors frais de port, pour fidéliser les premiers achats. B2B équipement : porte-clés ou clé USB au-dessus de 200 € HT, restreint au groupe Professionnels. Marketplace alimentaire : produit dégustation gratuit dès 50 € TTC port inclus, pour absorber le coût de livraison gratuite et l'amener à la rentabilité. Dans tous ces cas, la mécanique est identique : un seuil clair, un cadeau désirable, une progression visible, un ajout automatique. dffreegift gère tout ça sans intervention manuelle.

§ 07

Compatibilité PrestaShop 8 et 9 — testée, pas promise

Le module utilise uniquement les API stables cross-version : Module, Hook, Configuration, CartRule, Cart, HelperForm, Smarty. Aucune utilisation des onglets produit Symfony de PrestaShop 9 (qui ont introduit des incompatibilités sur de nombreux modules tiers), aucune injection dans le checkout one-page, aucune dépendance à des classes dépréciées en PS 9. L'écran d'administration utilise HelperForm — composant stable et identique en PS 8 et PS 9. Côté frontend, le hook displayShoppingCart est présent et fonctionnel sur les deux versions, et le helper getCurrentLocale (utilisé pour le formatage des prix) est disponible depuis PrestaShop 1.7.6. Vous installez le module en PS 8 aujourd'hui, vous migrez en PS 9 quand vous le souhaitez : aucune intervention de votre part sur le module.

§ 08

Multi-boutique, multilingue, code lisible

Le module fonctionne avec la configuration multi-boutique de PrestaShop sur le contexte boutique par défaut. Les messages frontend sont traduisibles via le mécanisme PrestaShop standard (Modules.Dffreegift.Shop pour le frontend, Modules.Dffreegift.Admin pour le back-office), avec FR, EN, ES et DE pré-positionnés. Le code source est livré en clair (PHP non chiffré, conforme aux conventions PrestaShop standard), avec des commentaires français en tête de chaque méthode importante. La logique principale tient dans un fichier dffreegift.php de moins de 700 lignes — lisible et auditable en moins d'une heure. Vous pouvez le modifier, l'étendre via vos propres hooks, ou le forker pour un besoin métier spécifique.