How these estimates are built
The ranges come from migrations I’ve shipped, not from a published rate card. The biggest single input is the source platform, because that determines how much translation the catalog needs before it can enter Shopify’s data model. A WooCommerce store with clean product data is a different job from a Magento Commerce instance with a decade of EAV attributes nobody documented.
SKU count matters less than people expect above a certain point. Moving 2,000 products and moving 20,000 products use the same scripts. What changes is the reconciliation effort and the number of edge cases you find. The cost curve flattens; it does not scale linearly.
What the estimate includes
- Pre-migration data audit and mapping document
- Product, customer, and order data transformation
- Theme build or configuration at the scope you selected
- 301 redirect map covering every indexable URL
- Integration rebuild and testing for the count you selected
- Staging QA, a real test order, and cutover execution
- 30-day post-launch watch
What it excludes
- Shopify subscription and app licence costs
- Content rewriting or new photography
- Paid ad account migration and re-tagging
- Ongoing retainer work after the 30-day window
Where estimates go wrong
The single biggest source of overrun is an unaudited source catalog. On one 50,000-SKU Magento migration, the pre-migration audit surfaced roughly 4,200 attribute variants bound to a legacy price rule that nobody on the merchant’s team knew existed. Finding that in week one is a scripting task. Finding it at import time is a schedule slip.
That is why the audit is a paid first phase on every migration I run rather than a free discovery call. The full sequence is in the zero-downtime migration checklist. If you want the estimate pressure-tested against your actual catalog, the platform migration service starts with exactly that audit.