J'ai déjà écrit le guide général sur comment migrer vers Shopify sans perdre ton référencement, puis le cas WooCommerce. PrestaShop, c'est encore un autre animal.
Ses URLs sont faites de chiffres. Ses déclinaisons ne connaissent aucune limite. Et il sait faire tourner 5 boutiques dans un seul back-office, ce que Shopify ne sait pas faire du tout.
des URLs bâties autour d'un identifiant
PrestaShop colle l'ID de l'objet dans l'adresse. La route produit par défaut, celle qu'on lit dans classes/Dispatcher.php :
{category:/}{id}{-:id_product_attribute}-{rewrite}{-:ean13}.htmlEn clair, /12-robes/45-robe-en-lin.html. La catégorie par défaut devant, l'ID produit, le champ « URL simplifiée » du back-office, et un .html à la fin.
Le reste du catalogue suit la même grammaire :
- catégorie :
{id}-{rewrite}, donc/12-robes - page CMS :
content/{id}-{rewrite} - catégorie CMS :
content/category/{id}-{rewrite} - fournisseur :
supplier/{id}-{rewrite} - marque :
brand/{id}-{rewrite}
Shopify n'a rien de tout ça. Un produit vit sous /products/, une collection sous /collections/, une page sous /pages/. Aucun identifiant, aucune extension, aucun chemin de catégorie devant le produit.
Le bloc {-:id_product_attribute} mérite une minute d'attention. Quand un visiteur choisit une déclinaison, PrestaShop sert /45-231-robe-en-lin.html. La spec officielle dit que la canonique de ces pages pointe vers le produit parent, donc en théorie Google n'indexe que le parent. Exporte quand même tes URLs indexées depuis la Search Console avant de conclure. Sur les boutiques que je reprends, il traîne presque toujours des variantes indexées à cause d'un lien interne oublié.
Il y a un cadeau caché dans cette histoire d'identifiant. Sur WooCommerce, le slug est la seule clé pour rapprocher ancienne et nouvelle URL, et il faut espérer qu'il n'ait pas bougé à l'import. L'ID PrestaShop, lui, est stable et il ressort dans tous les exports. C'est ta clé de jointure pour générer le fichier de redirections par script.
la carte des redirections 301, motif par motif
Voilà les correspondances que je pose sur une boutique 1.7 ou 8 restée sur ses routes par défaut.
| Ancienne URL PrestaShop | Nouvelle URL Shopify |
|---|---|
/12-robes/45-robe-en-lin.html | /products/robe-en-lin |
/45-robe-en-lin.html | /products/robe-en-lin |
/45-231-robe-en-lin.html | /products/robe-en-lin |
/12-robes | /collections/robes |
/content/4-livraison-et-retours | /pages/livraison-et-retours |
/content/category/2-guides | /pages/guides |
/brand/7-atelier-nord | /collections/atelier-nord |
/supplier/3-tissages-du-nord | /collections/tissages-du-nord |
/fr/12-robes | /collections/robes |
/en/12-robes | /en/collections/robes |
/panier | /cart |
Quatre précisions qui font gagner des jours de travail.
Tes routes ne sont peut-être pas celles-là. PrestaShop laisse réécrire chaque schéma dans Configurer, Paramètres de la boutique, Trafic et SEO, et beaucoup de boutiques ont retiré l'ID ou le préfixe {category:/} avec un module de type « pretty URLs ». Un crawl Screaming Frog répond en 15 minutes, et il t'attrape au passage les pages de compte et de commande, dont l'URL réécrite est éditable et traduite langue par langue.
Le .html s'évapore. Un handle Shopify n'accepte que des lettres, des chiffres et des tirets. L'ancienne adresse avec son extension reste parfaitement valable comme source de redirection, elle ne peut simplement pas servir de cible.
Le tableau de redirections Shopify raisonne en chemins exacts. Tu le trouves dans Boutique en ligne, Navigation, Redirections d'URL, avec un import CSV pour le volume. Aucune règle par motif, donc une ligne par ancienne URL. Sur 4 000 références et 2 langues, ça fait 8 000 lignes à générer par script.
La navigation à facettes. Le module ps_facetedsearch produit des adresses à chaîne de requête du type /12-robes?q=Couleur-Bleu. Google en indexe rarement et le tableau Shopify gère mal les paramètres, donc je redirige la catégorie nue. Si une facette précise te rapporte du trafic, elle mérite sa propre collection Shopify plutôt qu'une redirection au jugé.
le préfixe de langue, la moitié du chantier qu'on oublie
Dès qu'une deuxième langue est active, PrestaShop préfixe toutes les URLs avec le code ISO. Ta home devient /fr/, ta catégorie /fr/12-robes, sa version anglaise /en/12-robes. Le préfixe s'applique aussi à la langue par défaut, sauf si quelqu'un a posé un module pour le retirer.
Shopify Markets fonctionne autrement. La langue principale reste à la racine du domaine, les autres passent en sous-dossier. Les balises hreflang sont générées automatiquement à partir de la configuration des marchés et des langues, ce qui est un vrai soulagement quand on vient de PrestaShop où il faut un module pour ça.
Concrètement, si le français est ta langue principale, tout ton /fr/ s'effondre vers la racine et ton /en/ reste en sous-dossier. Le nombre de lignes de redirection est multiplié par ton nombre de langues.
Sur un point je n'ai pas de réponse tranchée. Je ne suis pas certain que le tableau de redirections Shopify traite un chemin préfixé par un sous-dossier de marché exactement comme la racine. Teste sur 5 URLs anglaises avant de charger les 3 000 autres.
Et prévois le budget traduction. Les contenus traduits se remplissent via l'app Translate & Adapt ou un outil tiers, et aucun outil de migration ne les injecte pour toi. Sur 3 langues, c'est le poste qui fait exploser le planning.
tes combinaisons contre les variantes Shopify
PrestaShop empile les groupes d'attributs sans limite pratique. Taille, couleur, matière, longueur, finition, tu ajoutes des groupes et les combinaisons se génèrent toutes seules.
Shopify plafonne à 3 options par produit. Le nombre de variantes est monté à 2 048 le 15 octobre 2025, contre 100 pendant des années, ce qui règle la question du volume. La limite de 3 options, elle, n'a pas bougé d'un pouce.
Le point de rupture est donc le 4e axe. Une chemise taille, couleur, coupe et longueur de manche rentre pile dans PrestaShop et ne tient pas dans une fiche Shopify standard. Deux sorties : basculer un axe en propriété de ligne dans le thème (le choix du client remonte dans la commande, mais sans stock ni prix rattachés), ou acheter une app de personnalisation.
Ce qui passe sans douleur, c'est l'impact prix et l'impact poids par combinaison, qui deviennent le prix et le poids de la variante Shopify. Les références suivent aussi, les deux plateformes gérant un SKU par déclinaison.
Les champs de personnalisation produit de PrestaShop (le texte libre et le fichier à téléverser, onglet Personnalisation de la fiche) n'ont pas d'équivalent dans l'admin Shopify. Ils se recodent en propriétés de ligne dans le thème, ou s'achètent en app.
groupes de clients, prix spécifiques et règles de panier
C'est le morceau qui coûte le plus cher à traduire, et celui que les devis de migration sous-estiment le plus.
PrestaShop superpose 3 mécanismes de prix. Les prix spécifiques, qui modulent le prix d'un produit selon le groupe de clients, le pays, la devise ou la quantité. Les règles panier, les fameux bons de réduction, appliquées au moment du paiement. Et les règles de prix catalogue, qui touchent directement le prix affiché sur un ensemble de produits.
Côté Shopify, la traduction se fait pièce par pièce. Les règles de prix catalogue deviennent des réductions automatiques. Les groupes de clients deviennent des tags puis des segments de clientèle, et Cart2Cart les migre d'ailleurs en tags. Les bons simples deviennent des codes de réduction.
Le vrai prix par groupe passe par les catalogues B2B. Les plans Basic, Grow et Advanced en autorisent 3 actifs, Plus en autorise un nombre illimité avec affectation directe aux entreprises et à leurs sites. Si tu as 8 groupes tarifaires dans PrestaShop, fais ce calcul avant de choisir ton plan, pas après.
Les règles panier tordues du genre « le 3e article offert sur cette catégorie, hors soldes, pour les clients pro » deviennent des Shopify Functions. C'est du développement, à budgéter comme tel.
ce que les outils de migration laissent derrière
Deux outils font le gros du travail sur PrestaShop, LitExtension et Cart2Cart. Les deux passent les produits, les combinaisons, les catégories, les clients, les commandes, les pages CMS et les codes promo.
Matrixify, le troisième nom qu'on te citera, a un statut différent. Son parcours de migration dédié couvre Magento, BigCommerce, Lightspeed, WooCommerce et WordPress. PrestaShop n'y figure pas. Tu peux quand même l'utiliser en exportant toi-même tes données et en les reformatant au modèle Matrixify. Sur un gros catalogue avec des règles métier, c'est souvent le chemin le plus propre, mais compte le temps de préparation des fichiers.
Ce qu'aucun des trois ne fait :
Le thème. Aucun outil ne migre un design PrestaShop vers Shopify. Tu repars d'un thème Shopify que tu adaptes, et c'est une ligne de budget à part entière.
Les modules. LitExtension le dit noir sur blanc, les modules PrestaShop ne peuvent être ni installés ni transférés. Fais l'inventaire tôt, c'est ce qui décide de la faisabilité. Pour chaque module critique, note ce qu'il fait vraiment côté client. La moitié du temps, la réponse est « rien que Shopify ne fasse déjà nativement ».
La TVA. Tes taux et tes règles par pays sont des réglages de boutique, à reconfigurer à la main dans l'admin Shopify. Compte une demi-journée si tu vends dans plusieurs pays de l'UE.
Les mots de passe clients. LitExtension indique qu'ils ne se transfèrent pas, les deux plateformes ne chiffrant pas de la même façon. Cart2Cart annonce l'inverse sur sa page PrestaShop. Je n'ai pas testé ce cas précis, donc prépare le mail d'activation de compte quoi qu'il arrive. 30 minutes de travail, et tes meilleurs clients ne tombent pas sur un formulaire qui refuse leur mot de passe.
LitExtension publie aussi sa propre liste de sujets à revérifier manuellement avant de lancer : groupes de clients, tarifs B2B, données multilingues, multiboutique, champs personnalisés, intégrations tierces. Tu reconnaîtras les sections précédentes.
le multiboutique n'a pas de traduction
PrestaShop fait tourner plusieurs boutiques dans un seul back-office, catalogue partagé et réglages par boutique. Shopify n'a pas cet objet. Une boutique égale un back-office, un abonnement, un thème, un domaine.
Si tes boutiques se distinguent par le pays, la devise ou la langue, Shopify Markets couvre le besoin depuis un seul compte, avec les sous-dossiers et les hreflang évoqués plus haut.
Si elles ont des catalogues franchement différents ou des équipes séparées, il faut plusieurs boutiques Shopify, donc plusieurs abonnements et plusieurs jeux d'apps. J'ai détaillé ce que ça donne dans mon article sur combien coûte une boutique Shopify, et c'est le calcul à faire avant de signer.
Si tu vises Plus, les boutiques d'expansion sont incluses au contrat, ce qui ne devient intéressant qu'à partir d'un certain volume.
après la bascule
Charge les redirections dans Shopify pendant que PrestaShop tourne encore. À la seconde où le DNS bascule, chaque ancienne adresse trouve sa cible, sans fenêtre de 404.
Ensuite, deux surveillances pendant 2 semaines. Le rapport d'indexation de la Search Console tous les jours, pour repérer les motifs d'URL que ton script a ratés (les pages fournisseur et les catégories CMS sont mes suspects habituels). Et le plan de site, que Shopify génère tout seul mais dont le contenu obéit à des règles précises, décrites dans mon article sur le sitemap XML de Shopify.
Si tu as déjà basculé et que les 404 grimpent, ça se rattrape d'autant mieux que tu t'y prends vite. Les redirections en place, celles qui manquent, celles qui pointent au mauvais endroit : c'est la première chose que je déroule quand on me confie une migration déjà lancée.




