What changes between versions, and what it breaks
PrestaShop 8 raised the PHP requirement and cleaned up a decade of legacy, which is exactly where old modules fail. PrestaShop 9 goes further: a current Symfony, PHP 8.1 or newer, a new Admin API, and Hummingbird as the supported modern theme, built on Bootstrap 5 without the jQuery that half of the module ecosystem still assumes.
The practical effect is that an upgrade is never just running the upgrade module. It is an audit of every installed module against the target version, a decision for each one - update, replace, rewrite or drop - a theme port or rebuild, a server that runs the new PHP, and a test plan for checkout, payments, shipping and the admin flows your team uses daily.
- Module compatibility audit with a verdict per module: keep, update, replace, rewrite or drop
- Theme path: patch Classic for the target version, or port to Hummingbird and lose the jQuery debt
- PHP and server move, including the AWS side if that is where you run
- Custom code and overrides ported to hooks and services that survive the next release
- Data preserved end to end: catalog, combinations, customers, orders, invoices, URL rewrites
How the migration runs without touching the live shop
The upgrade happens on a full staging copy - database, files, modules, server configuration. I run the upgrade there, fix what breaks, and rerun it from a fresh copy until the run is clean and repeatable. Only then is it scheduled against production, with a tested rollback and a maintenance window sized to the real duration, not a guess.
Search rankings are treated as data to preserve, in the same list as orders. Every URL that has impressions in Search Console is checked before and after: same address, same canonical, same hreflang, same structured data. Where a URL must change, it gets a 301 and stays on the redirect list until Google has moved on.
Migrating to PrestaShop from somewhere else
Moving into PrestaShop from WooCommerce, Magento, OpenCart or a custom shop follows the same discipline with a different first step: mapping the old data model onto PrestaShop categories, combinations, features and customer groups before a single row is imported. The catalog import is scripted and rerunnable, the URL map is written before launch, and the old shop stays frozen as a reference until the numbers match.
If you are leaving PrestaShop for Shopify, that is its own page under the Shopify cluster - the reasoning is different and so is the work.
When not to upgrade yet
Sometimes the honest answer is to wait. A store on 1.7 with a stable, patched module set and a busy season ahead has no business migrating in October. A store on 1.6 has no such luxury: it is out of support, and every month it stays there is a month of unpatched exposure. The audit tells you which of those you are, and I will say so even when it means no project.