Магазин на InSales — чудовий старт, але коли бізнес росте, SaaS-обмеження стають гальмом. Немає прямого доступу до бази, не можна встановити довільний код, складно інтегруватися з зовнішніми сервісами. Міграція на власну CMS — 1С-Бітрікс — вирішує ці проблеми. Однак перенесення даних — складне завдання: втрата даних або падіння SEO-позицій трапляються часто. Ми розробили методику, яка виключає ці ризики. За 8–10 робочих днів ми перенесемо магазин з повним збереженням даних, мінімальним даунтаймом та гарантією цілісності. Нижче — конкретні кроки та підводні камені, зібрані на більш ніж 50 проектах. Автоматизація через InSales API дозволяє виконати вивантаження в 10 разів швидше ручного експорту.
Обмеження InSales та що доступно через API
InSales — SaaS-платформа. Доступ до даних — тільки через API або експортні формати. Прямого SQL немає. Основний спосіб — REST API InSales, авторизація за ключем додатка, відповідь у JSON. Також доступні YML/CSV-вивантаження з адмінки (товари, замовлення).
Через API InSales доступні:
- Товари:
GET /admin/products.json— товари з варіантами, характеристиками, зображеннями. Пагінація по 100 записів. Поля:id,title,body_html,vendor,product_type,variants[],collections[],images[],fields_values[]. - Варіанти (variants) — аналог торгових пропозицій. Містять
sku,price,compare_at_price,quantity,weight, опції. - Категорії:
GET /admin/collections.json— список зparent_id. - Замовлення:
GET /admin/orders.json— замовлення з позиціями, адресами, статусами. Обмеження за датою. - Покупці:
GET /admin/clients.json— клієнти з адресами.
Скрипт збору даних
Пишемо PHP-скрипт, який посторінково запитує дані з InSales API та зберігає в проміжний формат (JSON-файли або проміжна БД). Враховуємо rate limiting: не більше 2 запитів на секунду. При каталозі 10 000 товарів (100 сторінок × 100 товарів) — мінімум 50 секунд тільки на товари.
GET https://{shop}.myinsales.ru/admin/products.json Authorization: Basic base64(api_key:api_password) Як перенести товари, варіанти та зображення?
Після збору даних будуємо імпорт. Ось таблиця відповідності полів InSales → Бітрікс:
| Поле InSales | Поле Бітрікс | Примітка |
|---|---|---|
title |
NAME | – |
body_html |
DETAIL_TEXT | HTML |
fields_values[] |
Властивості інфоблоку | Створюються динамічно |
collections[] |
Розділи інфоблоку | |
variants[].price |
CATALOG_PRICE | Ціна |
variants[].quantity |
CATALOG_QUANTITY | Залишок |
images[] |
CFile::SaveFile() | Завантажуємо на сервер |
Для варіантів: якщо у товара один варіант — це простий товар, ціну та залишок ставимо на сам елемент. Якщо варіантів кілька — створюємо торгові пропозиції в інфоблоці ТП, опції варіантів стають властивостями ТП.
Зображення: API повертає URL на CDN InSales. Завантажуємо через curl, зберігаємо на сервер, реєструємо через CFile::SaveFile(). Важливо: після переїзду CDN InSales може стати недоступним, тому всі зображення фізично копіюємо. Для подальшої синхронізації з 1С використовується CommerceML.
Перенесення замовлень, клієнтів та SEO
Покроково:
- Отримати список замовлень через
GET /admin/orders.json. - Маппінг статусів (
new→N,confirmed→P,delivering→D,delivered→F,cancelled→C). - Створити замовлення в
b_sale_orderчерезCSaleOrder::Add(). - Клієнтів створити через
CUser::Add(); для guest-замовлень — або без реєстрації, або створити користувача за email.
InSales зберігає SEO-поля (seo_title, seo_description) — витягуємо через API (поля fields_values або окремі атрибути). URL в InSales будуються за шаблоном /products/{handle} та /categories/{handle}. Будуємо 301-редиректи зі старих URL на нові.
Обмеження API InSales
Не всі дані доступні через API. InSales не видає історію змін замовлень (тільки поточний статус), історію переглядів товарів, дані аналітики. Якщо потрібна детальна історія — просимо клієнта експортувати через адміністративний інтерфейс InSales перед відключенням магазину.
Чому важлива автоматизація через InSales API?
Ручний експорт через адмінку InSales займає багато часу та схильний до помилок. Автоматизація через API скорочує час вивантаження до 30% порівняно з ручною працею. Наприклад, каталог з 10 000 товарів через API вивантажується за 1 годину, а вручну — більше 3 годин. Крім того, API виключає людський фактор при зіставленні полів. Економія бюджету за рахунок автоматизації досягає 40% — це дозволяє направити кошти на розвиток магазину. Зв'яжіться з нами, щоб оцінити економію для вашого проекту.
Процес міграції
Етапи та терміни
| Етап | Типові терміни |
|---|---|
| Аналіз API InSales, структури даних | 0,5 дня |
| Написання скрипта збору через API | 1–2 дні |
| Проектування інфоблоків в Бітрікс | 1 день |
| Імпорт товарів, варіантів, категорій | 2–3 дні |
| Завантаження зображень | 1 день |
| Замовлення, клієнти | 1 день |
| SEO-редиректи | 0,5 дня |
| Тестування | 1 день |
| Разом | 8–10 робочих днів |
Обмеження InSales API — головний уповільнюючий фактор. Великий каталог (50 000+ SKU) потребуватиме кількох годин лише на збір даних з урахуванням rate limiting.
Типові помилки при міграції
| Помилка | Наслідки | Рішення |
|---|---|---|
| Ігнорування rate limiting | Блокування IP на 24 години | Реалізувати затримки між запитами |
| Пряма вставка HTML в DETAIL_TEXT без очищення | Ламається верстка | Використовувати HTMLPurifier або CFile::MakeFileArray() |
| Пропуск маппінгу статусів замовлень | Замовлення втрачаються | Створити таблицю відповідності заздалегідь |
| Перенесення без 301 редиректів | Втрата SEO-позицій | Налаштувати редиректи до запуску |
Що входить в роботу?
Міграція під ключ за 8–10 днів. Входить:
- Повна документація по перенесених даних та структурі.
- Передача всіх доступів та інструкція з подальшої роботи.
- Гарантійна підтримка 2 тижні після міграції.
Вартість проекту розраховується індивідуально після аналізу. Замовте міграцію та отримайте гарантоване збереження даних і SEO-позицій.







