Migration Audit & Data Map
Field-by-field mapping of products, variants, customers, orders, blogs and metafields from source to Shopify, with a documented plan for everything that has no equivalent.
Moving a Danish shop to Shopify without losing the organic revenue, the accounting integration or the customer accounts.
Delivered remotely for brands across Copenhagen and Denmark.
Denmark has a deep bench of legacy webshop platforms, and a lot of Copenhagen brands are still on one: a DanDomain or Smartweb shop from the mid-2010s, a Magento 1 install nobody has dared touch since support ended, or a WooCommerce site that has accumulated thirty plugins and two developers' worth of undocumented decisions. They all work well enough to postpone the decision, and they all fail in the same direction — the cost of every change keeps rising until small merchandising ideas stop being worth asking for.
The two things that actually go wrong in a migration are dirty data and dropped URLs. Danish catalogues carry a particular version of the data problem: product titles in Danish with inconsistent compound spellings, dimensions living in free-text descriptions instead of fields, EAN numbers present on some variants and not others, and a decade of images named after camera exports. Getting that into a clean Shopify structure with real metafields is most of the work and most of the value, because it is what everything downstream — feeds, filters, search, SEO — depends on.
The URL problem has a local twist. Danish slugs are full of æ, ø and å, historically encoded in several different ways depending on the platform, and legacy Danish shops often have parallel /da/ and /de/ or /en/ paths that were never consistently canonicalised. Every one of those indexed URLs needs a mapped destination before launch, taken from Search Console, a crawl and server logs rather than guessed from a sitemap. A homepage redirect for anything unmatched is not a plan, it is a way of losing rankings quietly.
A Danish shop is rarely just a shop. It is usually connected to an accounting system — e-conomic, Dinero or Billy at the smaller end, Business Central further up — plus a carrier setup that has to keep working: PostNord and GLS labels, parcel shop pickers at checkout, and often a freight partner for anything that will not fit in a van. There may be a stock feed to a physical shop in Indre By or Vesterbro, and a wholesale price file the trade team relies on. We inventory all of it in the first fortnight and decide, per integration, whether it is replaced by a native Shopify app, rebuilt as a private app, or retired because it duplicates something else. Then we run dry-run migrations against real data until the reconciliation is boring: order counts, customer counts, tax totals and open wholesale balances matching before anyone touches DNS. Cutover gets scheduled outside your season, and because we are eight hours behind, launch night here is your late evening, which in practice works well — the site goes live with our full day still ahead of us.
The same standard of work we run for every client — applied to a Copenhagen brand’s realities.
Full service detailField-by-field mapping of products, variants, customers, orders, blogs and metafields from source to Shopify, with a documented plan for everything that has no equivalent.
Every indexed URL pulled from Search Console, Ahrefs and server logs, then mapped one-to-one. Anything without a target gets a decision, not a homepage redirect.
Deduplication, variant restructuring, image renaming and metafield normalisation. Most brands cut 15-30% of their SKU count in this step and lose nothing.
At least two full rehearsals into a staging store with an automated delta report on record counts, prices, inventory and customer tags before anyone approves the real one.
ERP, 3PL, ESP, reviews, loyalty, subscriptions and tax reconnected and tested against real orders in staging. Nothing gets reconnected on launch night.
Sixty days of daily crawl monitoring, index coverage tracking and 404 alerting, with a weekly report comparing organic sessions and revenue against the pre-migration baseline.
We do not work off a rate card. Every Copenhagen engagement starts with a fixed statement of work — named deliverables, named dates, one number — written after we have looked at your store, not before. If a smaller first step would serve you better, we will say so.
Get this scopedWe inventory your data, integrations, custom logic and organic footprint, then quantify the risk in each. You get a fixed scope and a timeline before committing.
Source-to-target mapping for every field, plus catalogue hygiene work. This is the least glamorous phase and the one that decides whether the project succeeds.
Theme build runs in parallel with repeated dry-run migrations. Each rehearsal produces a delta report and a shorter list of exceptions than the last.
A rehearsed runbook with named owners, timed steps, a freeze window and a documented rollback. Executed at your lowest-traffic hour, not on a Friday.
Sixty days of crawl monitoring, redirect verification and revenue comparison. We stay until organic is at or above where it started.
Anonymised under NDA. Figures pulled from the client’s own analytics.
8-figure DTC brand, ~140 SKUs, US + CA · Shopify Plus (migrated from Magento 2)
Magento 2 cost $9k a month in hosting, extensions and emergency dev before a single feature shipped. Mobile LCP sat at 5.4 seconds and mobile converted at less than half the desktop rate across 68% of sessions. The named constraint: 11,412 indexed URLs and a top-3 organic position on their hero category, so a migration that lost rankings would cost more than the platform ever saved.
~$18M/yr wholesale, 6,400 SKUs, 900 trade accounts, US · Shopify Plus with B2B on Shopify (migrated from a custom .NET portal)
Ninety-one percent of orders arrived by phone, email or fax and were rekeyed into the ERP by four full-time staff. Order-entry errors ran at 3.8%, and every one of them meant a redelivery and a credit note. The named constraint: 900 accounts on 47 negotiated price lists with net-30 and net-60 terms. No account could ever see another's pricing, and nothing could break during the fiscal year-end freeze.
“Magento to Shopify Plus with 14,000 SKUs and a subscription base we could not afford to break. We took the usual dip for about three weeks and organic was back level by week five — that was the entire ballgame for me. One honest gripe: discovery ran three weeks past the SOW and I had to push to get the revised timeline in writing. Once the build actually started they hit every single date.”
Thirty minutes with the strategist who would actually run your account. We screen-share your store, read your data live, and tell you the three highest-value things we can see from the outside.
Prefer to write it out? [email protected] gets a real reply the same business day, Mon-Fri, 9am-6pm MT.