Свой движок вместо InSales: как я перевёз магазин с историей с 2016 года и не потерял SEO
У меня свой fashion-бренд IWANT. Несколько лет магазин работал на InSales, и как старт это было правильно: запуск без разработки, всё из коробки, можно сразу торговать. Проблема пришла позже. Каждая новая функция упиралась в одно из двух: либо платное приложение из маркетплейса InSales, либо ответ «так на платформе нельзя». Когда я сложил стоимость тарифа и нужных приложений, аренда движка вышла дороже, чем содержание своего кода. Тогда я собрал собственный движок на Next.js и перевёз магазин целиком.
Ниже — как прошёл переезд: где чуть не потерял данные, как сохранил SEO и во что это вышло по деньгам. Цифры по своему магазину реальные.
Экономика: почему ушёл
InSales обходился в 2 300–10 400 ₽/мес по тарифу плюс платные приложения за функции, которые я хотел (письма по брошенной корзине, кэшбэк, отзывы и прочее). Свой движок на VPS сейчас стоит меньше 1 000 ₽/мес. Это фиксированная сумма: она не растёт вместе с оборотом и не зависит от того, сколько приложений мне понадобится.
Помимо денег на InSales я не контролировал главное — код, данные и скорость. Любую доработку приходилось ждать от платформы или искать в её приложениях. Свой движок это снимает: функцию добавляю тогда, когда её требует бизнес.
Данные: самая тяжёлая часть переезда
Больше всего проблем принёс перенос данных. Выгрузка заказов из InSales отдаётся в кодировке UTF-16 LE с BOM — наивное чтение файла ломает кириллицу, вместо текста получается мешанина. Вдобавок один заказ в выгрузке разбит на несколько строк (позиции идут отдельными строками), поэтому построчный парсинг склеивает разные заказы в кашу.
Пришлось писать собственный парсер: корректно читать кодировку, собирать заказ из нескольких строк обратно в одну сущность и складывать в PostgreSQL через Prisma. Импорт сделал идемпотентным — с ключом дедупликации по номеру заказа, чтобы повторный прогон не задвоил историю. Это важнее, чем кажется: миграцию такого объёма редко удаётся прогнать начисто с первого раза, и безопасный перезапуск импорта экономит и время, и нервы.
Всего перенёс каталог, категории и все заказы с 2016 года. История сразу пошла в дело: на ней заработали письма по возврату клиентов и персональные рекомендации — им было на чём обучаться с первого дня, а не с нуля.
SEO: 7 636 страниц без просадки
Магазин с историей — это тысячи проиндексированных URL, и потерять их при переезде значит потерять трафик. Перенёс всю структуру — 7 636 страниц — с полным покрытием 301-редиректами со старых адресов на новые. Карту редиректов строил по реальным данным, какие URL реально индексируются и приносят заходы, а не по формальному списку. После переключения проверил позиции — просадки не было.
Архитектура и переключение
Движок на Next.js 15, на React Server Components и Server Actions. Переключение со старого сайта на новый сделал по схеме blue-green: новый движок подняли параллельно, трафик перевели разом, откат — мгновенный, простоя для покупателей нет. Письма шлёт своя очередь с идемпотентностью, чтобы клиент не получил одно и то же письмо дважды при повторах отправки.
Модули, которые стали своими
На InSales за это платят отдельными приложениями, здесь всё — часть кода: – письма по брошенной корзине и возврату клиентов; – серверная корзина, которая сохраняется между устройствами; – кошелёк с кэшбэком и подарочные карты; – отзывы, «сообщить о поступлении», персональные рекомендации; – ИИ-стилист IRIS на GigaChat — помогает покупателю собрать образ прямо на сайте; – своя аналитика и cookieless-трекинг трафика без внешних счётчиков (данные никуда не уходят, по 152-ФЗ это чисто).
Магазином управляю через свою админку сам: товары, контент, акции, SEO — без разработчика на каждую правку.
Что вышло по итогу
– Стоимость владения меньше 1 000 ₽/мес против 2 300–10 400 ₽/мес тарифа InSales плюс приложения. – Lighthouse на мобайле: SEO 100, Best Practices 100, нулевой CLS. – Позиции в поиске сохранены. – Полный контроль над кодом, сервером и данными: любую функцию добавляю, когда её требует бизнес, а не когда разрешит платформа.
Стек, если интересно: Next.js 15 (RSC, Server Actions), TypeScript, Tailwind, Prisma + PostgreSQL, next-intl (RU/EN), ЮKassa, СДЭК, GigaChat для IRIS, self-hosted на VPS с CDN.
Кому это НЕ нужно
Честно: если оборот небольшой и платформы хватает — оставайтесь на ней. Свой движок не окупится, а мороки добавит. Переезд имеет смысл, когда вы уже упёрлись в потолок: тариф с приложениями стал заметной статьёй расходов, нужные функции платформа не даёт, или вам принципиален контроль над кодом и данными.
Если сидите на InSales, 1С-Битрикс или конструкторе и думаете про свой движок — напишите, скажу честно, стоит ли оно в вашем случае и за счёт чего окупится.