Migrated a catalog of 1,319 products and 81 brands, the order history, and the customer base; the reconciliation with the InSales export matched line by line.
Gembox - moving a store from InSales to its own engine
Gembox.ru sells things you cannot buy in Russia: from levitating pens to kinetic sand sculptures. The store ran on InSales and hit the platform ceiling. We moved the catalog, orders, and customers to an own Next.js + PostgreSQL engine, wired payments, fiscal receipts, delivery, and inventory into one system, and switched the domain without stopping sales. Code, data, and documentation were handed to the owner.
Challenge
Leave InSales without losing a single URL, order, or customer, and get a store that can be developed without platform limits. A separate requirement: the admin panel had to stay familiar to staff who had worked in InSales for years.

What we built
301 redirects from every old product URL: 1,318 out of 1,318, with sitemap and meta preserved.
Payments via Modulbank (card, SBP), Yandex Pay and Split, cash on delivery and invoices for companies; 54-FZ fiscal receipts for payment and refund.
CDEK delivery: rates, pickup points, a waybill from the order card, statuses.
Two-way sync with MoySklad: stock every 15 minutes, prices hourly, order and status export; an order is never lost when the inventory system is down.
An admin panel in the familiar InSales layout: orders, customer card, promo codes, gift cards, bonuses, push notifications about new orders, courier PDF export.
Deployed on a dedicated VPS in Russia, zero-downtime releases, one-command rollback, nightly database backups with a restore test.
Handed over the repository with architecture, deployment, and operations docs, including staff instructions and a guide for working with AI agents.
81 brands, order history, and customers reconciled with the InSales export line by line.
Old product URLs lead to the new ones in a single hop; sitemap and meta preserved.
Stock refreshes every 15 minutes, prices hourly, paid orders flow into inventory.
What keeps the migration safe for sales
Line-by-line reconciliation
Catalog, order history, and customers were checked against the InSales export by counts and financial totals, Cyrillic intact.
Redirect map
1,502 rules; old product URLs return a single-hop 301: 1,318 out of 1,318 on the pre-handover check.
Money and receipts
Modulbank, Yandex Pay, Split, cash, and company invoices; 54-FZ receipts via ModulKassa, full and per-line refunds from the order card.
Inventory without losses
MoySklad pulls stock and prices and receives paid orders and statuses; when it is down the order waits in a queue instead of disappearing.
Operations
VPS in Russia, HTTP/2, WebP/AVIF, zero-downtime releases, one-command rollback, nightly backups to a separate machine with a restore test.
Inside the project
Next.js + PostgreSQL, InSales migration, 301 redirects, Modulbank with 54-FZ receipts, CDEK, MoySklad, server-side conversions to Metrika, VPS in Russia.
- Catalog, order, and customer migration from InSales
- 301 redirect map and SEO preservation
- Modulbank, Yandex Pay, Split payments with 54-FZ receipts
- CDEK delivery from the admin panel
Gift store on its own engine
A designer gift store with a 1,300-product, 80-brand catalog moved from a rented platform to its own engine: URLs, order history, and customers preserved; payments, receipts, CDEK, and MoySklad run from one admin panel.
Two-way MoySklad synchronization
Admin panel in the familiar InSales layout
Server-side conversions to Yandex Metrika
VPS in Russia, backups, documentation, and repository handover
TECHNOLOGIES AND SOLUTIONS
- InSales migration
- 301 redirects
- Payments & 54-FZ
- MoySklad sync
- CDEK
- Admin panel
- InSales migration
- 301 redirects
- Payments & 54-FZ
- MoySklad sync
- CDEK
- Admin panel
A free 3-minute video review of your site
Send a link and I will record a personal review: where you lose on speed, conversion, and SEO, and what a move to your own engine would change. No call, within 48 hours.
Hit the platform ceiling too?
Send a link to your store: I will check what carries over and name a timeline and a price.