Migrated the catalog, brands, order history, and customer base, and reconciled the totals with the InSales export.
Gembox - moving a store from InSales to its own engine
- Challenge
- A designer gift store had outgrown InSales, a hosted store platform popular in Russia (think Shopify). The owner wanted to leave without losing products, orders, customers or search traffic.
- What we built
- We moved 1,319 products, the order history, the customer base and every old link to the store's own engine. Payments, the receipts Russian law requires, delivery and inventory now run from one admin panel that looks like the one staff already knew.
- Result
- The store has been selling on its own engine since 3 September 2026. The store runs on the owner's server and repository, with the code, data and documentation handed over. The owner makes some changes with AI tools; we review them before release.
Gembox.ru sells things you cannot buy in Russia: from levitating pens to kinetic sand sculptures. The store ran on InSales and outgrew the platform. We moved it to its own engine, brought payments, receipts, delivery, and inventory into one system, and switched the domain on 3 September 2026. The code, data and documentation are handed over: the store runs on the owner's server and in the owner's repository.
Challenge
Leave InSales without losing a single product, order, customer, or search link, 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
Kept links from search and bookmarks working: every old product URL leads to the new page, and the sitemap and meta tags were carried over.
Connected card payments and SBP, Russia's instant bank transfer system, via Modulbank, Yandex Pay and Split (pay in installments), plus cash on delivery and invoices for companies. Fiscal receipts required by Russian law (54-FZ) are issued for every payment and refund.
Built in CDEK, a major Russian courier network: delivery rates, pickup points and a waybill straight from the order card.
Connected the store both ways to MoySklad, a cloud inventory system many Russian retailers use: stock, prices, orders and statuses with no manual copying.
Built the admin panel in the InSales layout staff already knew: orders, customers, promo codes, gift cards, bonuses, new-order notifications, a courier sheet.
Added a staff activity log (who changed what, before and after) and a token-based export of orders, customers, and products to external systems.
Moved into the admin panel what used to need a developer: homepage blocks, the blog, and new-order notifications for managers.
Deployed the store on a VPS in Russia with nightly backups and a tested restore.
Handed the owner the code, data, and documentation, including staff instructions and a guide for working with AI agents.
- The domain switched to the new engine on 3 September 2026, and the store now sells on its own engine.
- Payments, receipts, delivery, and inventory run from one admin panel, with no plugins and no platform subscription.
- The store can be developed in-house, with AI, or with us: after handover the owner started making some changes with AI on their own, and we review them before release.
Prices refresh hourly, and paid orders flow into inventory on their own.
What keeps the migration safe for sales
Migration check
Product, order, and customer counts and the total order value were reconciled with the InSales export. Cyrillic text and attributes came over intact.
Redirect map
Every old URL leads straight to the new page, with no chains of multiple redirects.
Refunds
Refunds are issued from the order card, in full or per item, and the refund receipt goes out automatically.
Inventory without losses
If MoySklad is down, the order is not lost: it waits in a queue and reaches inventory when the service is back.
Releases
New versions go live without stopping the site, rollback is one command, and backups are kept on a separate machine.
Inside the project
Migration off InSales, old links leading to the new pages, card payments with fiscal receipts, courier delivery, two-way inventory sync and order revenue in analytics, on a server in Russia.
- Catalog, order, and customer migration from InSales
- Redirects from old URLs and carried-over SEO settings
- Modulbank, Yandex Pay, Split payments with 54-FZ receipts
- CDEK delivery from the admin panel
- Two-way MoySklad connection
- Admin panel in the familiar InSales layout
- Order statuses with revenue sent to Yandex Metrika server-side
- Staff activity log and data export to external systems
- A VPS in Russia, backups, documentation, and code handover
Gift store on its own engine
A designer gift store moved from InSales to its own engine: 1,319 products, every old link still works, and payments, receipts, delivery, and inventory run from one admin panel. Live since September 2026.
For technical readersStack, integrations and how the project is built.
Technical details
- Stack
Next.js and PostgreSQL, the same engine as IWANT.
- Migration
Every old URL leads to its new page with a single 301 redirect, no chains. The redirect map, sitemap and meta tags were carried over. Product, order and customer counts and order totals were reconciled with the InSales export.
- Payments
Modulbank (cards and SBP), Yandex Pay, Split. 54-FZ receipts for payments and refunds, full or per item.
- Inventory
MoySklad: stock every 15 minutes, prices hourly, paid orders flow in on their own. If MoySklad is down, the order waits in a queue and goes through when the service is back.
- Analytics
Order statuses with revenue are sent server-side to Yandex Metrica, Yandex's counterpart to Google Analytics.
- Hosting
A VPS in Russia, nightly backups on a separate machine, zero-downtime releases, one-command rollback.
- Next.js
- PostgreSQL
- 301 redirects
- MoySklad
- CDEK
- Modulbank
- VPS
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: we will check what carries over and name a timeline and a price.