La migration PrestaShop 8 vers PrestaShop 9 concerne les boutiques qui ont déjà quitté la 1.7. Les produits, les commandes, les clients sont sur un socle plus proche. Il reste assez pour casser un tunnel de vente : modules 8 incompatibles, thème à reprendre, PHP à monter, hooks déplacés. Cet article complète celui sur le passage 1.7 → 9. Ici, on parle de ceux qui sont déjà en 8 : inventaire plus court, risques différents, bascule plus serrée.
🧭 8 → 9 n'est pas 1.7 → 9

Depuis PrestaShop 8, une partie du runtime Symfony et des APIs est déjà là. On ne reconstruit pas tout le métier. On monte de version avec une copie, une vérification, un gel court. Les boutiques 1.7 ont un article dédié, plus long, plus cher.
Le piège : croire que 8 → 9 est un one-click du back-office. Sur une boutique avec 25 modules et un thème enfant, c'est une migration courte, pas une mise à jour de plugin.
📋 Inventaire plus court, pas inexistant
Modules : compatibilité PrestaShop 9 officielle, forks, overrides. Thème 8 : souvent à adapter, rarement à coller tel quel. PHP : PrestaShop 9 accepte PHP 8.1 à 8.4, visez 8.3 ou 8.4. Paiements et transporteurs : retest sandbox obligatoire.
Overrides `/override` : toujours une dette. On les liste avant. Un override oublié, c'est un prix faux le lundi.
- Modules premium : page de compatibilité 9
- Overrides et classes locales
- Thème enfant : diff, pas copier-coller
- Paiement + transporteur en sandbox
🎨 Thème et front

Les TPL et les assets ont bougé. Un thème 8 « premium » attend souvent une version 9 payante. Un thème sur-mesure se porte à la main : hooks, variables, JS du tunnel. On vérifie mobile avant le DNS.
Si le thème 8 était déjà un empilement de surcharges, 9 est l'occasion de maigrir. Pas l'obligation. On le dit avant de développer.
🔄 Bascule
Le staging est une copie de la boutique 8. On y installe la 9 (ou on met à jour la copie, selon le chemin retenu) et on vérifie produits, commande, mail et SAV. On gèle le catalogue, on reprend le delta des commandes, puis on bascule le DNS. Le retour arrière consiste à revenir au vhost 8, pas à « corriger en live ».
Plus court qu'un 1.7. Toujours un week-end tenu, pas un mardi entre deux réunions.
PrestaShop 9 n'efface pas une TMA absente. Une 8 mal tenue devient une 9 mal tenue, plus vite.
✅ Après J0
Sondes commandes, 404, paiements. TMA : mises à jour, monitoring. Les modules « on verra plus tard » se voient à la première promo.
Si vous tenez déjà une 8 propre, le devis 8 → 9 tient en jours ou quelques semaines. Si la 8 est sale, on nettoie d'abord, ou on assume le coût.
✅ Parcours de validation de la montée vers PrestaShop 9
On liste les modules, leur compatibilité avec la version 9, le thème et la version de PHP. Chaque élément incompatible a une décision : mise à jour, remplacement ou abandon.
Sauvegarde complète restaurée une fois pour de vrai, accès à votre nom. Puis 24 h de suivi renforcé après la bascule : commandes, paiements, e-mails. Sans ce suivi, un module défaillant peut rester ignoré.
- Modules et PHP vérifiés avant la montée
- Migration complète sur une copie
- Une étape de bascule à la fois
- Commande réelle testée puis 24 h de suivi
📌 Ce que je refuse sur ce sujet

Je refuse de migrer une boutique sans copie de test. Je refuse de garder des modules abandonnés par commodité. Je refuse de basculer en pleine période de soldes.
Je refuse aussi de me taire : si rester en version 8 un an de plus est raisonnable, je le dis. Cet article n'est pas un prétexte pour vendre une migration immédiate.
🧭 Questions fréquentes
Faut-il migrer tout de suite ? Oui si votre version 8 arrive en fin de support ou si un module essentiel exige la 9. Sinon, planifiez la montée hors période de forte vente.
Peut-on migrer sans copie de test ? Non : la migration s'essaie d'abord sur une copie de la boutique, avec ses vraies commandes et son thème. La production n'est touchée qu'une fois la copie validée.
Combien de temps ? Quelques jours à deux semaines selon les modules et le thème, plus une période de gel avant la bascule. Un devis en une journée suppose une boutique sans modules.








