Records extracted from an undocumented source and reassembled into an ordered destination store.

Custom platform to Shopify migration starts with access

No standard export, no documented schema and no migration tool. The project begins by discovering what the system actually holds and proving it can be extracted repeatedly.

Where the work goes

The first deliverable is knowing what you have

Everything else depends on it, and it cannot be assumed.

A bespoke platform has no export standard, no published schema and no migration tool written for it. So the project does not start with mapping. It starts with establishing what the system holds and whether it can be got out reliably more than once.

Access is the first question. A database replica, a read-only account, an API somebody wrote for a partner, or a nightly file drop each imply a different method and a different level of confidence. Systems where extraction can only be done once, by hand, are the hardest to migrate safely, because you cannot rehearse.

Schema discovery follows. In-house systems accumulate meaning in unexpected places: status flags that encode business rules, price fields overridden by a table nobody documents, product relationships expressed by naming convention. Reading the code that writes the data is usually faster than interviewing people about it.

Because of that uncertainty, these projects are staged deliberately. A small sample, validated in detail. A larger segment, validated again. Then a full run with a rehearsed cutover. The scope is fixed after the first two stages rather than promised on day one, and we say so before anyone signs anything.

Discovery

What gets established before a scope is fixed

Six questions. The answers set the price and the method.

Discovery questions, what they establish and the risk they retire
QuestionWhat it establishesThe risk it retires
How can data be extracted?Database access, an API, exports or a file drop, and whether it repeatsA one-shot extraction that cannot be rehearsed or corrected
What does the schema mean?Which fields carry business rules rather than valuesMigrating data faithfully and losing the logic attached to it
Where is the media?File storage, naming and whether every reference resolvesA catalogue that imports with missing or wrong images
What is the URL structure?Route patterns, read from the routing code and a crawlA redirect map that misses whole families of routes
Who else reads this system?Integrations, reports and internal tools depending on the sourceBreaking a finance or warehouse process nobody mentioned
What must survive?The records the business is legally or operationally required to keepDiscovering a retention obligation after the source is switched off

Discovery is a bounded piece of work with its own deliverable. It is credited against the migration where the project proceeds, so the diagnosis is not a way of selling the build.

Transformation

What bespoke systems tend to hide

These are the findings that change an estimate.

Business rules living in data

A status column that changes how a price is calculated, a flag that suppresses a product from one channel, a nullable field that means three different things. These have to be found and turned into explicit destination behaviour.

Pricing that is calculated, not stored

In-house systems frequently compute price at render time from several tables. Shopify needs a price on a variant, so the calculation has to be either resolved into stored values or reproduced in the destination architecture.

Internal tools that depend on the source

Reports, warehouse screens, customer service tools and spreadsheets that read directly from the source database. Each is a stakeholder in the migration, and they are usually discovered late.

Data quality nobody had to face

Duplicate customers, orders with no addresses, products in no category. A bespoke system tolerates what it was written to tolerate. Shopify will not, and cleaning is part of the project rather than a prerequisite you are handed.

Find these in the sample stage, where they are cheap.

URLs and search

A map built from the routing code and a crawl

There is no rewrite table, so both sources are needed.

On a bespoke platform, the route patterns are in the application. Reading them alongside a crawl gives coverage neither method reaches alone.

  • Route patterns read from the routing configuration or controller code
  • A full crawl of the live site to find what is actually reachable
  • Search Console landing pages and, where available, an export of referring links
  • Product, category and content routes mapped as families with explicit rules
  • Legacy routes from earlier versions of the site, which bespoke systems often still serve
  • Parameterised and session-bearing routes handled with rules rather than individually
  • Any route an external system calls directly, which will not appear in a crawl
  • One-hop verification of every rule after launch

Bespoke systems commonly serve several generations of URL at once. Finding those layers before the switch is the difference between a clean move and a quarter of unexplained decline.

The rest of the project

Design, integrations, validation and cutover

Under uncertainty, the method matters more than the plan.

Swipe the parts

Design

The theme decision

Bespoke storefronts often have behaviour the business depends on and no theme provides. That behaviour is identified explicitly and either rebuilt or dropped as a decision, not by omission.

  • List the storefront behaviours the business actually relies on
  • Rebuild the ones that carry the trading
  • Keep the visual change bounded during the move

Systems

Integrations and internal tools

Anything reading the source database needs a destination. Some point at Shopify’s API, some need an intermediate, and some are retired because the system replaces them.

  • Inventory every consumer of the source data
  • Decide replace, re-point or retire for each
  • Sequence the changes with the teams that use them

Proof

Staged validation

A sample, then a segment, then the full run. Each stage validated in detail, with the transformation scripts versioned so a run can be repeated exactly.

  • Repeatable, versioned transformation rather than manual edits
  • Reconciliation per entity against the source
  • Known-exception list maintained openly

Switch

Cutover and rollback

The cutover is rehearsed at least once. The source stays running read-only afterwards, because on a bespoke system it is the only copy of the history.

  • A rehearsed cutover, not a first attempt on the night
  • Source retained read-only for an agreed period
  • A documented decision point for aborting the switch
Price drivers

What actually moves the number

Uncertainty is the cost. Discovery is how it is reduced.

These projects are priced after discovery, and these are the factors that decide the figure.

  • Whether extraction can be repeated, or only performed once
  • How much business logic is encoded in data rather than stated
  • Data quality, and how much cleaning the destination requires
  • The number of internal tools and integrations reading the source
  • How many generations of URL the system still serves
  • Whether pricing is stored or calculated
  • Retention obligations on historical records

The estimator routes bespoke and export-only sources to manual scoping deliberately. A band produced from five questions would be too wide to inform a decision, and quoting one anyway would be dishonest.

Money

What this work starts at

Published starting figures in GBP and USD, excluding VAT.

Discovery and migration

Scoped in stages, after source access

One bounded piece

Project sprint

£1,500$2,000

One bounded improvement: landing pages, a template rebuild, an analytics implementation, or a build-readiness review credited against a larger project.

  • One defined outcome, agreed before work starts
  • Fixed price and a fixed finish line
  • Credited against a larger project where it leads to one

Fixed price

Data only

Data migration

From £1,000From $1,300

Products, customers, orders and content mapped into a Shopify store that already exists or is priced separately. Fixed once source access and a sample migration are reviewed.

  • Documented mapping of the selected entities
  • Sample migration before the full run
  • Validation against the source records
  • Redirect mapping where URLs change

Starting price · scoped after discovery

Plus, B2B, multi-market

Advanced Shopify

From £8,000From $10,500

Shopify Plus, B2B, multi-market, multi-language, custom integrations or headless work. These configurations are sized after discovery, not instant-priced.

  • Trade accounts, price lists and B2B rules
  • Multi-market and multi-language configuration
  • ERP, PIM, WMS and accounting integrations
  • Headless or custom storefront work where justified

Starting price · scoped after discovery

Discovery is bounded and priced separately, then credited against the migration where the project proceeds. Fixed scope follows the sample stage rather than preceding it.

Questions

Asked before this work is agreed

Can you migrate from a system nobody supports any more?

Usually, provided the data can be reached. A database replica, a read-only account or a scheduled export is enough to work with. What matters more than support is whether extraction can be repeated, because a one-shot export cannot be rehearsed.

What if we have no documentation?

That is the normal case. Schema meaning is recovered by reading the code that writes the data and by validating assumptions against a sample. It takes longer than a documented source, which is exactly why discovery is a separate, bounded stage.

How can you price this before you have seen it?

We do not. Discovery is quoted on its own and credited against the migration if the project proceeds. Anything quoted as a fixed migration price before source access has been reviewed is a guess that will need revising.

Should all of it move to Shopify?

Not always. Bespoke platforms sometimes contain genuine application behaviour that has no business being a storefront. In those cases the honest recommendation is a store plus a separate application, rather than forcing everything into a commerce platform.


Send whatever the system will export today.

A sample of real data tells us more in an hour than a specification document written from memory.

Discuss a project