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.
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.
The brief in detail
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.

Step by step
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.
- 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.
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.
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 we 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.