• Online Stores

Moving from a native engine to a supported platform

There are two ways to transfer a store from a self-written engine: to take the catalog directly from the database or to assemble it by parsing the HTML of the storefront, when there is no longer access to the database. Which one is yours - we can see after we look at the hosting: the data structure is different every time in the manual, the documentation does not exist, the author of the code is not available. Further, the work is the same — address matching map, 301-redirects, build on OpenCart 4.x with admin, in which the manager works himself. We do not promise items. We promise that no old address will return a 404.
See how it works
Price
after a free audit
Guarantee
30 days after project sign-off
Where do we get the catalog from?
old store base or storefront HTML parsing
after a free audit
Price
30
Guarantee

days after project sign-off

old store base or storefront HTML parsing
Where do we get the catalog from?
the site and domain were lost - the catalog was restored from archived images
The most difficult case in practice
8,909
How many addresses did the store's archive collect?

unique, of which 7,565 are product cards

in the measured store, the two counting methods differed by 2,810 items
Why one source is not enough
25-50
Term of moving

working days from approval of technical specifications

free audit of the old store, 3-5 working days
Before the estimate
Process steps

Transparent stages with approval at every step

Total duration:25–50 days

  1. Audit and full copy of the old store

    3-5 working days

    We look at the hosting, the database and the structure of the addresses, remove a copy of the files and the database, save separately the HTML of the categories with pagination. A copy is made before any changes: the old store can then be explored in peace.

  2. Catalog export and data normalization

    4-12 working days

    A script for analysis of the base or showcase, summary of goods, categories, characteristics and photos in one machine format. We count the number of items in two ways and compare them with each other — the difference here shows how many pages are at risk of getting lost.

  3. Map of correspondence of addresses

    3-6 working days

    A table of "old address → new" for each page that the search knows. There are three sources: sitemap, directory crawl and Search Console. Here we decide which takes we do not drag with us, but reduce to one canonical address.

  4. Building a store on OpenCart

    8-15 working days

    A clean assembly with the necessary modules, a category tree and a set of attributes for the filter, a product card, a shopping cart and checkout, roles in the admin. In parallel, we fill the directory with a test run and compare the number of records before and after.

  5. Content, payment, delivery, analytics

    4-8 working days

    We transfer texts and meta-descriptions that are already working, connect payment and carriers, install GA4 and Tag Manager, confirm rights in Search Console, collect a site map without duplicates.

  6. Redirects, switching, monitoring

    3-4 working days

    Running the entire list of old addresses with a check of response codes, switching in a window with minimal traffic, the old store remains in reserve for at least 30 days. Next, a report on scanning errors and 404.

Technologies & integrations

What we build on and what it connects to

Stack

  • OpenCart 4.x is an updated branch with normal administration. Limitations: some of the Ukrainian modules are still available only under 3.x, so we go through the list of integrations before the start
  • PHP and MySQL are the same pair as in most autographs, so data is transferred without type conversion; the price is the same requirements as the PHP version
  • Own scripts for analysis of the database or storefront are written for a specific store and are not reused
  • nginx and HTTP/2 - redirects live in the server's map file, not in the code
  • HTTPS + HSTS - without this, the browser shows a warning on the payment form
  • Search Console is the only place where you can see the number of addresses in the index
  • GA4 and Tag Manager - show a trend, not an accounting truth: blockers and consent mode cut some of the events

Integrations

  • LiqPay
  • WayForPay
  • Privat24
  • monobank
  • non-cash settlement
  • postpaid
  • Nova Poshta
  • Ukrposhta
  • Meest Express
  • Google Tag Manager
  • GA4
  • Google Ads
  • Google Search Console
  • Telegram
  • Viber
What's included

Complete list of work and what you get as a result

  • A complete copy of the old store before the start of work — files, database, HTML dump of categories
  • Parsing the database or HTML of the storefront and downloading the directory to the machine format - the directory lives in the file, not inside someone else's code
  • Restoration of categories and characteristics under the filter: in the resume, the characteristics are often one text field, and it is divided into attributes
  • Building a store on OpenCart 4.x with admin, where the manager starts the product and changes the price without a developer
  • Address correspondence map: rule where the structure is regular, piecemeal table where each path is unique
  • 301-redirects from all addresses that were in the index, driven by a full list with a check of response codes before switching
  • Transferring texts and meta descriptions that already work: Rewriting what brings traffic is not worth it when moving
  • Payment and delivery again: LiqPay, WayForPay, monobank, non-cash account, Nova Poshta, Ukrposhta
  • Technical SEO: CNC, canonical, unique title, sitemap without duplicates
  • Analytics: GA4 and Tag Manager, Search Console validation — to see crawl errors, not guess
  • Schedule backups and project documentation: The next contractor isn't starting from scratch
  • Terms: 50% down payment, two rounds of edits at the design stage, warranty period of 30 calendar days
When this service isn't right

What's not included — so there are no surprises at delivery

  • Recovery of lost data that is not in the database or archived images
  • Porting functionality that is not described or reproduced from old code without separate evaluation
  • Guarantees of saving positions in the search
  • Post-launch advertising
  • Hosting, domain, acquiring
Who it's for

Situations where this service delivers results

Scenario 1 of 4

The developer is gone, but the store is up and running

The most frequent reason for which they come with a resume. The site is selling, orders are coming, but it is difficult for anyone to change something more than the price of the product. The risk is not in the design: this code has not received security updates for years, and the day the hoster raises the PHP version, the store will stop serving pages. The move trades dependence on one person for dependence on a platform supported by someone other than you.

We'll review your situation in a free audit
Moving to a supported platform against further editing of the manuscript

How this option differs from the alternative

Who can make changesmanager in admin, developer — only for non-standard tasks
Security updatecome out regularly, put hands on schedule
Raising the version of PHP on the hostingplanned procedure with a test run
The cost of minor finishing touchesmodule or setting, hours
One-time riskis: A move means a change of addresses and is closed by a 301 match map
When the finishing touches are more honestis not always justified: in the catalog of several dozen items, it is cheaper to start everything anew

Free audit of the old store

With a self-writing engine, the main question is not "what to move to", but "what can you get from there". The audit responds precisely to it: we look at the database, the structure of addresses and what is currently in the index.

What we measure

  • Where to get the dataIs there access to the database and in what condition is it? If there is no access, it remains to parse HTML pages - it works, but it is longer and more expensive.
  • Address structureHow regular is it? In self-written stores, the paths are often unique for each section, so redirection is not always possible as a rule, and part of the table has to be done individually.
  • Directory volume and addressesWe count on the site map and criss-cross the catalog. If there is no site map at all — and this is a frequent situation — we bypass the categories with pagination.
  • What is in the indexHow many addresses are actually in the search. Without Search Console, no one, including us, can see the full list, so access to it is the first thing we ask for.
  • Technical conditionPHP version, HTTPS and HSTS, mobile viewport, availability of backup copies. Here it is immediately clear that it is not worth transferring from the current site.
  • Speed ​​to moveFirst response, full load, HTML weight — to compare measurements, not feel, after launch.

What you get

  • Conclusion, from where and in what form you can pick up the catalog.
  • Document with numbers: catalog volume, addresses, speed, HTML weight, technical condition.
  • An estimate of the number of lines in the address correspondence map and the fraction that can be covered by the rule.
  • Conversation for 30–40 minutes on the document.

Timeline: 3–5 working days — analysis of a non-standard database is longer than a regular audit

Why is it free

Because we ourselves don't know the value until we see the base. Calling a plug blindly for a record store would mean double stocking—unfair to you and inconvenient to us. An audit removes the unknown for both parties.

What's next

After the audit — the amount and term by stages with dates, contract, invoice, report. If it turns out that it is cheaper to complete the current store, we will write this in the document.

Short form: your contact and site URL

Did not find your case?

Describe how it works on your side — we will tell you whether “Transferring the store from the self-written engine” fits and what it means in your situation. No brief and no call: one question, one answer.

  • Contract, act and 30-day warranty

    Every project gets a written contract: scope, deadlines, amount, acceptance procedure. After delivery — act and invoice, then 30 calendar days of warranty.

  • Sole proprietor & bank transfer

    The contractor is a registered sole proprietor. Payment by invoice with closing documents.

  • Rights & access — yours

    Code, design and materials transfer to you after full payment. Domain, hosting, repository and analytics are registered to you.

  • Client portal instead of email chains

    During the project you get access to a portal: contracts, invoices, acts and project status in one place.

  • European clients

    Among our work — projects for Norway, Bulgaria, Moldova and Spain.

  • Verifiable numbers

    Every case in the portfolio comes with a link to a live site and a technical measurement.

  • Audit first, then pricing

    There is no price list on the site intentionally: the scope of the same work differs multiples between clients.

  • We say "no" when unsure

    If the task isn't ours or the deadline is unrealistic — we tell you upfront.

What affects the price

Why two seemingly identical tasks are priced differently

  • Is there access to the database?The main fork of the estimate. With the catalog dump base, it's a request and a normalization script, a few days. Without a base, it remains to bypass the showcase with pagination and parsing HTML for a specific layout, and this is a different order of laboriousness.
  • How characteristics are storedNeat attribute tables are unloaded almost for nothing. The characteristics of a single text field in an arbitrary format are analyzed by rules, checked by samples and proved by hand - the difference is multiple.
  • Regularity of the address structureIf the paths are built according to the scheme, the redirect is closed by a single nginx rule. If each section was written separately, the correspondence map becomes a piecemeal table with thousands of rows. Therefore, as a rule, we measure the share at the audit.
  • Where does the photo lead?In self-writing, images are often linked by paths in the file system rather than identifiers. The files have to be checked against the records: some of the paths lead nowhere, and without checking it comes out after import.
  • Non-standard functionalityCalculation of delivery according to its own formula, roles of managers, accumulative discounts. Each block is a separate line: reproduce as a module, order revision or refuse. The decision is yours, our part is the price of each option.
  • Catalog volume and content statusA thousand items with filled descriptions and thirty thousand with names in different registers - different weeks of work. It is cheaper to clean the catalog when moving: the data goes through our hands in the same way.
Cases

Tasks and results in numbers — all metrics measured by us

online retail underwear store with a catalog of over 110,000 items

Task
Calculate the real volume of the catalog before the transfer: how many pages to carry and how many of them are known to search.
Solution
Calculated by two independent methods. Site map: an index of 42 submaps, after deduplication 112,646 unique product addresses. Regular CMS search: 1,154 pages per hundred plus 56 for the last one.
Result
115,456 product items against 112,646 addresses in the site map — a discrepancy of 2,810 items, or 2.4%. The store shows about 2.8 thousand products to customers, but they are not on the site map. When moving, these items are the first to be lost. Measurement 01.08.2026.

online store of professional cosmetics, catalog of over 5,000 items

Task
Measure directory where sitemap doesn't work: /sitemap.xml returns HTTP 200 with empty body.
Solution
We calculated by traversing the catalog with a standard CMS search: 55 pages of 100 items plus 61 for the last one, and took the indicators of the main page as a reference point.
Result
5,561 products in the live catalog, measured on 07/31/2026. TTFB 801.2ms at 153.8KB HTML. Defects: the site map is empty, there is no counter on the main page - no GTM, no gtag, no pixel, conversions are not measured in any way.

B2B catalog of spare parts for industrial sewing machines

Task
Counterexample: a store from which data is transferred without incident, and which at the same time is not worth taking further.
Solution
We checked the site map with a complete list, checked the unique addresses, took the speed and listed the connected.
Result
1,992 addresses in the site map without a single duplicate — 1,848 product cards and 138 categories. The correspondence map here is two thousand lines, not tens of thousands. TTFB 388.1 ms at 120.2 KB HTML. Not porting: Universal Analytics, disabled by Google on July 1, 2023.
What we need from you

We can't start without this — best to prepare in advance

  1. Access to the hosting and database of the old store is the main condition for a normal move, and half of the estimate depends on it.
  2. The address of the site and any documentation that has been preserved - even a correspondence with a former developer saves days of analysis.
  3. Access to the Search Console, if the rights are confirmed: without it, no one can see the full list of addresses in the index.
  4. Access to DNS and the domain - the switch is made there, and it should not be done in a hurry.
  5. List of functions without which the store does not work, in your own words and without technical terms.
  6. One person with the right to make decisions on the structure of the directory: there are more forks in moving than in developing from scratch.

If something is missing — let us know, we'll help you gather it or do it as a separate task.

FAQ

Most frequently asked questions — with concrete answers

There is no developer, there are no accesses either — is it really transferable?

Real, but longer and more expensive. With access to hosting and the database, it's a simple move: request, normalization script, quantity reconciliation. Without access, the catalog is assembled by disassembling the showcase — we bypass the categories with pagination and get the names, prices, characteristics and photos from the pages. We went through the extreme version of this scenario on our own project, where there was no hosting or domain left: there the only source was webarchive, and we managed to collect 8,909 unique addresses from it, including 7,565 product cards. It works. But it is impossible to declare the volume in advance in this mode, so the audit for him is longer than usual.

Why can't the estimate be given right away?

Because a self-writing engine is a different data structure every time. In one case, the goods lie in neat tables and are unloaded in an hour. Otherwise, the characteristics are stored in a single text field in an arbitrary format, and the photos are linked by paths in the file system, some of which lead nowhere. The difference in labor intensity between these cases is multiple, and until we look at the base, any number will be a guess. Our advice is simple: if the contractor quoted you the amount for the move from the record, without seeing the basis, he has either laid down a double reserve or will prove the estimate as the work progresses.

How not to lose addresses if there is no logic in them?

We compile a compliance map from three sources at once: a site map, a directory walkthrough, and Search Console. Where the structure is regular, the redirect is made a rule in the nginx map file. Where each path is unique, we use a separate table, and this is the more expensive half of the work, so we separately measure the share of addresses under the rule during the audit. We do not offer mass redirection of everything to the main one: this is the most expensive saving in migrations. And immediately about the limit of honesty - the site map does not raise positions and does not guarantee indexation; it only makes the page available for search.

And if some of the goods are on the site, but not on the site map?

This is not uncommon, but the norm, and that is why we measure the catalog in two ways. In the underwear store that we measured on August 1, 2026, the site map yielded 112,646 unique product addresses, and a regular search of the catalog yielded 115,456 items. A discrepancy of 2,810 positions, that is, 2.4% of the catalog, the store shows to buyers, but does not show to the search bot. When moving, these positions are the first to be lost, because they are not on the list that everyone works for.

What to do with duplicate addresses that have accumulated in the old store?

Do not carry. In the archival trace of our own project, 6,704 unique product slugs were available at 7,565 addresses — 645 items were opened from more than one category. On the new platform, each such position receives one canonical address, and the rest of the old paths lead to it with a 301. There is an effect about which it is better to know in advance: after cleaning, the number of pages in the index drops for a while. This is an expected course of events, not a failure, it just looks unpleasant if not warned.

What will we get besides a new store?

Admin, in which the manager starts the product and changes the price without the developer. Upgradable platform. Scheduled backups and project documentation. The latter sounds boring, and it solves your original problem: the next contractor will open the structure description, not someone else's uncommented code. The speed also usually increases, but here there are no promises - a fast page removes technical loss, not creates demand.

How long does the move take and why is there such a spread?

25-50 working days from the approval of the TK, and the spread here is greater than in other migrations. The reason is in the second stage: the catalog download takes from four days to three weeks, depending on the form of the data. The rest of the stages are counted more precisely - audit and copy 3-5 days, compliance map 3-6, build 8-15, content and integrations 4-8, redirects and switching 3-4. We name the exact term after the audit, when the base is already in front of our eyes.

Can the old store be turned off immediately after launch?

No, and this is our firm recommendation, not a formality. The old site remains up for at least 30 days after the switch: during this time, Search Console shows what addresses the bot is still knocking and where they lead. If there is a hole in the compliance card, it is visible right there and then, not with a customer complaint six months later. Shutting down the old store on launch day means depriving yourself of the only way to test performance.

Show the old store - let's start with what you can get from it

Give the site address and access to hosting, if available. In 3-5 working days, we will return with a document: where the catalog comes from, how many items are in it according to two counting methods, how many addresses will have to be redirected and what proportion of them will be closed by the rule.

From measured cases115,456 product items against 112,646 addresses in the site map

View cases
  • Reply within 2 hours
  • No commitment
  • We work under a contract

There is no price list on the site on purpose: the same work differs several times over between two clients, and a “from” figure explains nothing in that case. First a free audit — we count your pages, duplicates and speed — then we name the sum and the deadline and fix both in the contract.