# Shopify to PrestaShop Migration — Complete guide

> 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…

- Page: <https://www.datafirefly.com/en/documentation/migration-shopify-prestashop/>
- Language: en
- Last updated: 2026-07-01
- Other languages: [fr](https://www.datafirefly.com/documentation/migration-shopify-prestashop/index.md), [es](https://www.datafirefly.com/es/documentation/migration-shopify-prestashop/index.md), [de](https://www.datafirefly.com/de/documentation/migration-shopify-prestashop/index.md), [it](https://www.datafirefly.com/it/documentation/migration-shopify-prestashop/index.md), [pl](https://www.datafirefly.com/pl/documentation/migration-shopify-prestashop/index.md), [pt](https://www.datafirefly.com/pt/documentation/migration-shopify-prestashop/index.md), [nl](https://www.datafirefly.com/nl/documentation/migration-shopify-prestashop/index.md)
- Index: <https://www.datafirefly.com/en/documentation/llms.txt>

## 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

1. PrestaShop back office → **Modules → Module Manager → Upload a module**.
2. Select the `dfmigrateshopify.zip` file and install.
3. 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:

1. **Settings → Apps and sales channels → Develop apps → Create an app**.
2. **Configuration** tab → **Admin API integration → Configure**.
3. Check the scopes: `read_products`, `read_inventory`, `read_product_listings`, `read_customers`, `read_orders`, `read_content`.
4. 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:

1. **Count** — verifies the connection and displays volumes.
2. **Custom collections** then **Smart collections** — creates the categories.
3. **Products + variants + images** — the longest step. Shopify variants become attribute combinations; each variant receives its image; brands are created from the vendor field.
4. **Customers** — automatic deduplication by email. A random password is assigned: invite your customers to use "Forgot password".
5. **Orders** — only after products and customers. Reference format `SH-{number}`.
6. **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).
