Миграция с Magento на Shopify
DataEase переносит магазин на Magento 2 (Magento Open Source, Adobe Commerce или Mage-OS) в Shopify напрямую через REST API Magento - без расширений, CSV-экспорта и таблиц. Вы создаёте интеграцию в Magento, вставляете её ключи, выбираете, что перенести, а остальное DataEase сделает сам. Он также создаёт редиректы со старых URL, чтобы ссылки и позиции в поиске продолжали работать после смены домена.
Что переносится
Section titled “Что переносится”| Magento | Shopify | Подробности |
|---|---|---|
| Простые, виртуальные и загружаемые товары | Товары | Название, описание, статус, видимость, первая категория как тип товара, изображения (сначала основное), SKU, цена и специальная цена (как цена для сравнения), себестоимость, вес, налоговый класс, остаток (на основной локации), предзаказ, бренд (manufacturer), страна производства, SEO-заголовок и описание. |
| Конфигурируемые товары | Товары с вариантами | Конфигурируемые атрибуты (Color, Size, …) становятся опциями (до 3), каждый включённый дочерний товар становится вариантом со своим SKU, ценой, остатком и изображением. |
| Категории | Коллекции | Ручные коллекции с товарами категории, описанием, изображением и SEO. Вложенные категории становятся отдельными коллекциями. |
| Клиенты | Клиенты | Имя, email, телефон, все адреса (сначала адрес доставки по умолчанию), подписка на рассылку. Группа клиента добавляется как тег, например magento-group-wholesale. |
| Заказы | Заказы | Историческая копия с позициями (связаны с перенесёнными вариантами по SKU), опциями вариантов, доставкой, скидкой, налогом, оплатой и возвратами. Клиентам не отправляются никакие письма. |
| Правила скидок корзины (cart price rules) | Скидки | Правила с купоном становятся кодами скидок, правила без купона - автоматическими скидками: процент, фиксированная сумма на товар или на корзину, бесплатная доставка, минимальная сумма или количество, страна доставки, условия по товарам и категориям, даты и лимиты использования. |
| CMS-страницы | Страницы | Заголовок, содержимое, статус, SEO. |
| Старые URL | URL-редиректы | Товары и категории (с суффиксом .html из настроек вашего магазина), CMS-страницы, корзина, личный кабинет клиента и поиск перенаправляются на свои адреса в Shopify. |
- Изображения внутри описаний и страниц копируются в Shopify → Content → Files, а ссылки обновляются, так что ничего не сломается, когда старый магазин отключится.
- Шаблонные теги Magento преобразуются:
{{media url="…"}}становится адресом изображения,{{store url="…"}}- ссылкой; виджеты и CMS-блоки удаляются. - Magento ID каждой записи сохраняется в метаполе
magento.id. - Отключённые товары переносятся как черновики. Товары, которые не видны по отдельности или не привязаны к сайту магазина, переносятся, но не публикуются в Online Store.
Не переносятся: темы и дизайн, расширения и их данные (блоги, отзывы, бонусные баллы), комплекты (bundle), сгруппированные товары и подарочные карты, настраиваемые опции (customizable options), многоуровневые цены и цены каталога, представления магазина (store views) на других языках, настройки оплаты, доставки и налогов, пароли клиентов (клиенты задают новый пароль в Shopify).
Перед началом
Section titled “Перед началом”- Magento 2.3 или новее (Magento Open Source, Adobe Commerce или Mage-OS).
- Администратор Magento, который может создавать интеграции (System → Extensions → Integrations).
- Магазин должен быть доступен из интернета - DataEase не может подключиться к
localhostили адресу во внутренней сети. Держите его онлайн до конца миграции: изображения загружаются с него. - Магазин Shopify должен использовать ту же валюту, что и Magento - цены копируются как есть, без пересчёта.
Шаг 1. Создайте интеграцию в Magento
Section titled “Шаг 1. Создайте интеграцию в Magento”- В админке Magento откройте System → Extensions → Integrations и нажмите Add New Integration.
- Введите название, например
DataEase, и свой пароль администратора в поле Your Password. - Откройте вкладку API и установите Resource Access в значение All.
- Нажмите Save, затем нажмите Activate рядом с новой интеграцией и Allow.
- Magento покажет четыре ключа: Consumer Key, Consumer Secret, Access Token и Access Token Secret. Скопируйте все четыре.
Ключи дают доступ только к API и могут быть отозваны в любой момент. DataEase только читает данные - он ничего не меняет в Magento.
Хотите дать меньше доступа? Вместо All можно выбрать отдельные ресурсы: магазины (stores), каталог (товары, категории и остатки), клиенты и группы клиентов, заказы, правила скидок корзины и CMS-страницы. Если чего-то не хватает, DataEase покажет, какой ресурс Magento нужно добавить.
Шаг 2. Подключите магазин в DataEase
Section titled “Шаг 2. Подключите магазин в DataEase”- В Shopify откройте DataEase → Store transfers.
- Выберите вкладку From Magento.
- Введите адрес магазина (например,
https://myshop.com) и четыре ключа интеграции. - Нажмите Check connection.
DataEase покажет название магазина, представление магазина (store view), из которого читаются данные, и сколько записей каждого типа есть в магазине.
Шаг 3. Выберите, что перенести, и начните
Section titled “Шаг 3. Выберите, что перенести, и начните”- Отметьте данные, которые хотите перенести - по умолчанию выбрано всё, что найдено в магазине.
- Нажмите Start migration.
Миграция выполняется в фоне - страницу можно закрыть. В списке Transfers видно, какие данные переносятся прямо сейчас, и в любой момент можно нажать Cancel.
Шаг 4. Проверьте результат
Section titled “Шаг 4. Проверьте результат”Когда миграция завершится, в списке будет видно, сколько записей каждого типа перенесено, с предупреждениями, ошибками и их причинами - например, Orders: 1250 ⚠3. Типичные предупреждения - правила скидок корзины с условиями, которые Shopify не поддерживает, или записи, уже перенесённые ранее.
После миграции
Section titled “После миграции”- Проверьте товары, коллекции и цены в админке Shopify.
- Настройте оплату, доставку и налоги - они не переносятся.
- Выберите и настройте тему, затем добавьте перенесённые страницы и коллекции в меню навигации.
- Подключите домен к Shopify. Старые ссылки вида
/joust-duffle-bag.htmlтеперь перенаправляются на/products/joust-duffle-bag. - Удалите интеграцию в Magento (System → Extensions → Integrations). DataEase удаляет ключи из своей базы данных сразу после завершения миграции.
Повторная миграция
Section titled “Повторная миграция”Миграцию можно запустить снова в любой момент - например, прямо перед сменой домена, чтобы подхватить новые заказы. Существующие записи обновляются, а не дублируются:
- товары, коллекции, клиенты и страницы сопоставляются по handle или email и обновляются;
- ранее перенесённые заказы, существующие коды скидок, автоматические скидки с тем же названием и существующие редиректы пропускаются (вы увидите предупреждение с их количеством);
- изображения, уже скопированные в Shopify Files, используются повторно.
Как сопоставляются данные
Section titled “Как сопоставляются данные”Товары
Section titled “Товары”- Handle: URL-ключ товара (URL key), так что адреса товаров остаются узнаваемыми.
- Статус: Enabled → Active; Disabled → Draft.
- Цены: действующая специальная цена становится ценой в Shopify, а обычная цена - ценой для сравнения. Даты действия специальной цены учитываются на момент миграции.
- Остатки: количества попадают на основную локацию. Товары с разрешённым предзаказом (backorders) продолжают продаваться, когда закончились на складе.
- Опции: атрибуты конфигурируемого товара становятся опциями в том же порядке, значения - в порядке вариантов атрибута. Shopify поддерживает до 3 опций и 2048 вариантов на товар; товары с бо́льшим числом опций пропускаются с предупреждением. Отключённые дочерние товары не переносятся.
- Налог: товары с налоговым классом None не облагаются налогом.
- Краткое описание сохраняется в метаполе
magento.short_description.
Заказы
Section titled “Заказы”| Состояние в Magento | Статус оплаты в Shopify | Выполнение |
|---|---|---|
| Pending (new), On hold | Pending (или Paid, если выставлен счёт) | Unfulfilled |
| Processing | Paid (или Partially paid) | Unfulfilled, или Fulfilled, если всё отгружено |
| Complete | Paid | Fulfilled |
| Closed | Refunded (или Partially refunded) | - |
| Canceled | Voided | - |
Статус оплаты рассчитывается по суммам, которые Magento записал как оплаченные и возвращённые. Заказы в статусах Pending payment и Payment review не переносятся. Каждый перенесённый заказ получает тег magento и тег magento-<status> (например, magento-complete) и сохраняет свой номер из Magento (#000000145).
Правила скидок корзины
Section titled “Правила скидок корзины”| Magento | Shopify |
|---|---|
| Правило с конкретным купоном (Specific Coupon) | Код скидки |
| Правило без купона | Автоматическая скидка |
| Percent of product price discount | Скидка в процентах |
| Fixed amount discount | Фиксированная сумма с каждой подходящей позиции |
| Fixed amount discount for whole cart | Фиксированная сумма со всего заказа |
| Бесплатная доставка (сумма скидки 0) | Скидка на бесплатную доставку |
| Условие Subtotal equals or greater than | Минимальная сумма покупки |
| Условие Total items quantity | Минимальное количество товаров |
| Условие Shipping country (бесплатная доставка) | Доставка в выбранные страны |
| Условие действия SKU или Category | Определённые товары или коллекции |
| Uses per coupon / Uses per customer = 1 | Лимит использований / Одно использование на клиента |
| Discard subsequent rules | Не сочетается с другими скидками |
DataEase никогда не делает скидку шире, чем она была в Magento. Правила, ограниченные отдельными группами клиентов, правила с условиями, которые Shopify не может выразить (способ оплаты, атрибуты корзины, комбинированные условия), и правила Buy X get Y пропускаются с предупреждением - создайте их заново вручную. Неактивные правила и автоматически сгенерированные коды купонов не переносятся.
Решение проблем
Section titled “Решение проблем”| Сообщение | Что делать |
|---|---|
| Magento rejected the integration keys | Проверьте все четыре ключа и убедитесь, что интеграция активна (Active). Если вы повторно авторизовали её, скопируйте новые Access Token и Access Token Secret. |
| The consumer isn’t authorized to access … | Отредактируйте интеграцию, установите Resource Access в значение All (или добавьте ресурс из сообщения) и сохраните. |
| Magento REST API endpoint … was not found | Проверьте адрес магазина - используйте адрес витрины, а не URL админки. |
| returned a non-JSON response | Файрвол, режим обслуживания или кеш блокирует REST API. Разрешите запросы к /rest/ на время миграции. |
| must be reachable from the internet | Используйте публичный адрес магазина, а не localhost или внутренний IP. |
| Image … was not copied | URL изображения был недоступен. Страница сохраняет старую ссылку - загрузите изображение в Content → Files вручную. |
Получают ли клиенты письма? Нет. Клиенты и заказы создаются без уведомлений и приглашений.
Изменяется ли мой магазин на Magento? Нет. DataEase только читает из него данные.
Хранятся ли ключи интеграции? Только во время миграции, в зашифрованном виде. Они удаляются, когда миграция завершается, падает с ошибкой или отменяется.
У меня несколько сайтов (websites) или представлений магазина (store views). Какое из них переносится? Представление магазина по умолчанию на сайте по умолчанию: его названия, описания, цены и URL.
Переезжаете с WordPress или переносите данные между двумя магазинами Shopify? См. Миграция с WordPress / WooCommerce и Перенос между магазинами.