Migrate from InSales to 1C-Bitrix: Data & SEO Safe

InSales is great for startups, but when business grows, SaaS limitations become a bottleneck: no direct database access, no custom code, complex external integrations. Migrating to a self-hosted CMS like 1C-Bitrix solves these issues. However, data transfer is tricky—data loss or SEO ranking drops a

Our competencies:

Frequently Asked Questions

InSales is great for startups, but when business grows, SaaS limitations become a bottleneck: no direct database access, no custom code, complex external integrations. Migrating to a self-hosted CMS like 1C-Bitrix solves these issues. However, data transfer is tricky—data loss or SEO ranking drops are common. We have developed a methodology that eliminates these risks. In 8–10 working days, we move your store with full data integrity, minimal downtime, and guaranteed SEO preservation. Below are concrete steps and pitfalls gathered from over 50 projects. Automation via InSales API makes extraction 10x faster than manual export.

InSales Limitations and API Access

InSales is a SaaS platform. Data access is only through API or export formats—no direct SQL. The primary method is InSales REST API, with app key authorization and JSON responses. YML/CSV exports from the admin panel (products, orders) are also available.

Through InSales API, you can access:

  • Products: GET /admin/products.json with variants, characteristics, images. Pagination of 100 records. Fields: id, title, body_html, vendor, product_type, variants[], collections[], images[], fields_values[].
  • Variants (trade offers): contain sku, price, compare_at_price, quantity, weight, options.
  • Categories: GET /admin/collections.json with parent_id.
  • Orders: GET /admin/orders.json with line items, addresses, statuses. Date-limited.
  • Customers: GET /admin/clients.json with addresses.

Data Collection Script

We write a PHP script that paginates through InSales API and saves data into intermediate format (JSON files or a temporary DB). We handle rate limiting: max 2 requests per second. For a catalog of 10,000 products (100 pages × 100 products), that's at least 50 seconds just for products.

GET https://{shop}.myinsales.ru/admin/products.json Authorization: Basic base64(api_key:api_password) 

Migrating Products, Variants, and Images

After collecting data, we build the import. Here is the field mapping table (InSales → Bitrix):

InSales Field Bitrix Field Notes
title NAME
body_html DETAIL_TEXT HTML
fields_values[] Info-block properties Created dynamically
collections[] Info-block sections
variants[].price CATALOG_PRICE Price
variants[].quantity CATALOG_QUANTITY Stock
images[] CFile::SaveFile() Download to server

For variants: if a product has one variant, it's a simple product—price and stock go to the element. If multiple variants, we create trade offers in a separate info-block, with variant options becoming trade offer properties.

Images: API returns URLs to InSales CDN. We download via curl, save to server, register via CFile::SaveFile(). Important: after migration, InSales CDN may become inaccessible, so all images are physically copied. For further 1C synchronization, we use CommerceML.

Migrating Orders, Customers, and SEO

Step-by-step:

  1. Fetch orders via GET /admin/orders.json.
  2. Map statuses (new→N, confirmed→P, delivering→D, delivered→F, cancelled→C).
  3. Create orders in b_sale_order via CSaleOrder::Add().
  4. Create customers via CUser::Add(); for guest orders, either create without registration or create a user by email.

InSales stores SEO fields (seo_title, seo_description)—we extract them via API (fields fields_values or separate attributes). URLs in InSales follow /products/{handle} and /categories/{handle}. We set up 301 redirects from old URLs to new ones.

InSales API Limitations

Not all data is available via API. InSales does not expose order change history (only current status), product view history, or analytics. If detailed history is needed, we ask the client to export via InSales admin panel before decommissioning the store.

Why API Automation Matters

Manual export via InSales admin is time-consuming and error-prone. Automation via API cuts extraction time to 30% of manual effort. For example, a catalog of 10,000 products takes 1 hour via API vs. over 3 hours manually. Automation also eliminates human error in field mapping. Budget savings from automation can reach 40%, freeing funds for store development. Contact us to assess the savings for your project.

Migration Process

Phases and Timelines

Phase Typical Duration
Analyze InSales API and data structure 0.5 day
Write collection script via API 1–2 days
Design info-blocks in Bitrix 1 day
Import products, variants, categories 2–3 days
Download images 1 day
Orders, customers 1 day
SEO redirects 0.5 day
Testing 1 day
Total 8–10 working days

InSales API rate limiting is the main bottleneck. A large catalog (50,000+ SKUs) may require several hours just for data collection.

Typical Migration Mistakes

Mistake Consequence Solution
Ignoring rate limiting IP blocked for 24 hours Implement delays between requests
Directly inserting HTML without sanitization Broken layout Use HTMLPurifier or CFile::MakeFileArray()
Skipping order status mapping Orders lost Prepare mapping table in advance
Migrating without 301 redirects Lost SEO positions Set up redirects before launch

What Is Included in the Work?

Turnkey migration in 8–10 days. Includes:

  • Full documentation of transferred data and structure.
  • Handover of all access credentials and further operation instructions.
  • 2-week warranty support after migration.

The cost is determined after a detailed analysis of your data volume and integration complexity. Contact us for a personalized assessment.