Shopify to PrestaShop Migration — Complete guide
Installation, Shopify connection, configuration, and the complete migration procedure to PrestaShop 8 and 9.
Overview
dfmigrateshopify imports an entire Shopify store into PrestaShop 8 or 9: products with variants and images, customers with addresses, historical orders, collections converted to categories, 301 redirects, and customer reviews. The module is read-only on the Shopify side: zero writes, zero modifications to the source store.
Installation
- PrestaShop back office → Modules → Module Manager → Upload a module.
- Select the
dfmigrateshopify.zipfile and install. - A new screen appears under Advanced Parameters → Shopify Migration.
Installation creates 4 tables prefixed dfmigshop_: mapping (Shopify ↔ PrestaShop correspondences), log, redirect, and job.
Create the Shopify token
In your source Shopify store admin:
- Settings → Apps and sales channels → Develop apps → Create an app.
- Configuration tab → Admin API integration → Configure.
- Check the scopes:
read_products,read_inventory,read_product_listings,read_customers,read_orders,read_content. - Install the app in the store and copy the Admin API access token (it starts with
shpat_).
Shopify displays the token only once. Keep it somewhere safe.
Connection
In the module’s Connection tab: enter the domain (my-store.myshopify.com, without https://), the token, and the API version (default 2024-10). Click Test connection: the store name should display in green.
Configuration
- Batch size — number of items processed per AJAX call (default 50, max 250). Reduce it if your hosting is slow.
- Download images — disable for a quick test migration without images.
- Drafts — import or skip Shopify products in draft status.
- Default parent category — Shopify collections will be created under this category.
- Carrier and payment module — assigned to imported orders.
- Status mapping — map each Shopify status (pending, paid, fulfilled, delivered, cancelled, refunded) to a PrestaShop order state.
Run the migration
In the Migration tab, follow the order:
- Count — verifies the connection and displays volumes.
- Custom collections then Smart collections — creates the categories.
- Products + variants + images — the longest step. Shopify variants become attribute combinations; each variant receives its image; brands are created from the vendor field.
- Customers — automatic deduplication by email. A random password is assigned: invite your customers to use “Forgot password”.
- Orders — only after products and customers. Reference format
SH-{number}. - 301 redirects — fetches Shopify URL Redirects. Product/collection redirects were already created automatically in the previous steps.
Every step can be safely re-run: the mapping table prevents duplicates. If interrupted, simply click the button again and the migration resumes where it stopped.
Import reviews
Shopify has no native API for reviews. Export to CSV from your review app (Judge.me, Loox, Yotpo, Product Reviews app…) then import the file in the Reviews tab. The module automatically detects your backend: dfreviews (priority) or productcomments.
Expected columns (case-insensitive, , or ; delimiter): product_handle or shopify_product_id or sku, email, reviewer_name, rating, title, body, created_at, verified.
301 redirects
Every front-office request is intercepted by the actionDispatcherBefore hook: if the requested URL matches a stored source (e.g. /products/my-product), the visitor is 301-redirected to the equivalent PrestaShop URL. No Apache or Nginx configuration needed. The 301 Redirects tab lets you export the full list as CSV.
Mapping and re-runs
The Mapping tab shows the number of imported items per resource type. The Clear button removes the mappings of a type: the items remain in PrestaShop, but a new migration will re-import them as new (possible duplicates — use knowingly).
Troubleshooting
- 429 or 503 errors — the module automatically handles Shopify rate limiting (retry respecting the Retry-After header). No action required.
- Slow migration — reduce the batch size, or disable image download for a first test pass.
- Errors in the log — the Logs tab shows each error with the affected resource and Shopify ID. Fix the cause then re-run the step: only failed items will be reprocessed.
- Historical order prices — orders are imported as an accounting archive; Shopify totals are kept as-is, without PrestaShop tax recalculation.
Uninstallation
Uninstalling removes the module’s 4 tables and hooks. Imported products, customers, orders, and categories remain in place. 301 redirects stop working (they are served by the module).