Skip to main content
What you receive

The plan and the report, before you hire anyone.

Most migration offers are a price and a promise. Ours are two documents: a written plan before any work starts, and a QA report before any money changes hands. Below are both, complete, for the same mid-size apparel store the scanner uses as its example.

Northfield Outfitters is a fictional store · the numbers are illustrative

In brief

  • A migration plan should give the count of everything that moves, a decision for every plugin that matters, the number of redirects, a timeline, what is excluded and one fixed price.
  • A QA report puts the old store's counts next to the new store's and explains every difference. An unexplained gap is a defect, not a rounding error.
  • The scan sizes the job; the plan corrects it. In this sample the connected scan found 3,207 German URLs the public scan could not see, which doubled the redirect count.

The migration plan

This is what you get within one business day of a scan and, where needed, a read-only connection to your store. Nothing in it is a range or an "up to".

Migration plan · v1
northfield-outfitters.com → Shopify
Prepared by Mufatech Studio
Valid for 30 days
Terms: studio.mufatech.com/migrate/terms
Good fit, with planningShopify handles this store well. Two things set the timeline: the 612 active subscriptions and the German storefront. Everything else is routine.

1 · What moves connected scan, 29 Sep

DataCountBecomes on Shopify
Products2,840Products. 2,791 published, 49 drafts kept as drafts.
Variations16,470Variants. 57 products need restructuring (section 3).
Product images11,360Product media, with alt text.
Categories46Collections. The 31 nested ones become a nested menu, because Shopify collections are flat.
Custom fields (ACF)1412 metafield definitions and one metaobject for the size chart. How
Customers18,406Customers, with email marketing consent as recorded.
Orders41,230Order history since March 2020, linked to customers by email.
Active subscriptions612Shopify Subscriptions contracts, Stripe cards attached, same price and next billing date.
Reviews7,945Judge.me. 64 star-only reviews cannot be imported (section 2).
Gift cards with a balance138Shopify gift cards with the same codes and balances.
Active coupons64Discount codes.
Pages and posts20723 pages and 184 blog posts, with SEO fields.
German translations3,047Imported through Translate & Adapt under /de/.

2 · Plugin decisions

On WooCommerceOn ShopifyWhy, and what to know
WooCommerce SubscriptionsShopify SubscriptionsFree, by Shopify. Stripe customer IDs are attached, so nobody re-enters a card. Details
WPMLShopify languages + Translate & AdaptGerman moves to /de/. Product tags cannot be translated on Shopify; 9 German-only tags are renamed.
Checkout Field EditorCart attributesThe "gift message" field moves to the cart page. Editing checkout itself needs Shopify Plus, which this store does not need.
Advanced Custom FieldsMetafields + 1 metaobjectFabric, care and fit notes become filterable product data.
Customer Reviews (CusRev)Judge.meJudge.me needs text and a rating, so the 64 star-only reviews stay behind. Kept in the export you receive.
Yoast SEOShopify SEO fieldsTitles and descriptions carried over for every product, collection, page and post.
KlaviyoKlaviyo for ShopifyReconnected. Flows keep working; their triggers are re-checked.
StripeShopify PaymentsSaved one-off cards do not transfer; subscription cards do.
WP RocketNothingShopify serves the store from its own CDN and cache.

3 · Products above Shopify's 3-option limit 57 products

  • 31 products: Fit and Length merge into one option, such as "Slim / Long". Stock and prices per combination are kept.
  • 18 products: split by Fit into two products each, linked as siblings. Each old URL redirects to the Regular fit product.
  • 8 products: "Material" was set as a variation attribute but never changes price or stock. It becomes a metafield.
  • 41 "Any size" variations are expanded into concrete sizes. Their shared stock is split as agreed with you on 30 Sep.

4 · Redirects 6,512 URLs

The public scan estimated 3,305 old URLs. The connected scan also found the German versions, which WPML serves under /de/, so the real number is 6,512. Every one gets a 301 to its new address and is tested before launch. How the URL map works

5 · Timeline 4 weeks

Week 1Products, customers, orders, metafields, restructured variants.
Week 2Theme in your brand, German storefront, reviews, gift cards.
Week 3Subscriptions, redirects, preview and QA report to you.
Week 4Your review, final order sync, launch on a Tuesday.

Launch avoids the 1st of the month, when 540 of the 612 subscriptions renew.

6 · Not included

  • Your Shopify plan, Judge.me plan and any other app, paid directly to their providers.
  • New product photography, copywriting or design beyond your current brand.
  • Shopify's new-merchant promotions: a store built by a partner and transferred to you is not eligible.

7 · Price

Pro migration: up to 15,000 products, multilingual, subscriptions$2,990 Full order history, 41,230 orders since 2020$300 Fixed price. Paid only when you approve the preview.$3,290
Questions on any line: [email protected]Page 1 of 1

The QA report

Three weeks later you receive this with the password to your preview store. It is the document you approve, or refuse, the work against.

QA report · preview build 3
Counts, redirects and speed
northfield-outfitters.com
Preview: password sent separately
Run after the final sync

1 · Reconciliation old store vs new store

Products
2,840 → 2,858
Explained

+18: the 18 products split by Fit, as planned.

Variants
16,470 → 16,612
Explained

+142: the 41 "Any size" variations expanded into concrete sizes.

Images
11,360 → 11,337
Explained

−23: these files already returned 404 on the old server. List attached; send replacements and we add them.

Collections
46 → 46
Match
Customers
18,406 → 18,371
Explained

−35: records sharing an email address, merged because Shopify needs one email per customer. Each merge is listed.

Orders
41,230 → 41,230
Match
Subscriptions
612 → 609
Your action

−3: these customers' cards had already expired at Stripe. Names attached, so you can ask them for a new card.

Reviews
7,945 → 7,881
Explained

−64: the star-only reviews from the plan, kept in your export.

Gift card balance
$6,214.50 → $6,214.50
Match
Metafield values
31,240 → 31,240
Match
SEO titles
3,093 → 3,093
Match

Match same count. Explained differs for a stated reason. Your action needs a decision from you before launch.

2 · Redirects 6,512 tested

URL typeOld URLs301 → 200Result
Products5,5825,582Pass
Categories9292Pass
Tag archives424424Pass to filtered collections
Pages and posts414414Pass
Total6,5126,512No chains, no redirects to the home page

3 · Checked by hand 50 random products

Price, compare-at price, SKU, stock, variant images and German title, compared field by field with the old store: 50 of 50 correct. The sample is drawn after the import, not chosen by us.

4 · Speed mobile Lighthouse, median of 3 runs

Home page · LCP4.6 s2.2 sOld store vs preview
Collection · LCP5.1 s2.4 sOld store vs preview
Product · CLS0.210.02Old store vs preview

Your report shows your measured numbers, whatever they turn out to be. Apps you add after launch change them.

5 · Open before approval

  • Contact the 3 subscribers with expired cards (list attached).
  • Approve the German menu labels.
  • Confirm Tuesday 20 Oct for launch.
Approve, or tell us what is wrong: [email protected]Nothing is invoiced before approval

How to read them, even if they are not ours

Use these two documents as a yardstick for any migration offer, including ours. A few things separate a plan you can hold someone to from a sales page.

  • Counts, not categories. "We migrate your products and customers" says nothing. 2,840 products and 18,406 customers can be checked later.
  • A decision for every plugin. Each plugin either has a replacement, is not needed, or leaves something behind. The last kind should be named before you sign, like the 64 star-only reviews here.
  • Redirects counted per language. Multilingual stores have a URL per language. If the redirect count matches the product count, the plan has missed something.
  • Every difference explained. Customer counts almost always drop, because Shopify requires one customer per email address. A report that shows a perfect match everywhere on a large store deserves a second look.
  • Payment after the report. If the money is due before you can see the result, the QA report is decoration.

Our migration terms say what you can hold us to, and the 48-step checklist covers the same ground if you run the move yourself.

Want this for your store?

  • Free scan in about 20 seconds
  • A written plan within one business day
  • One fixed price, valid 30 days
  • QA report before you pay
  • 30 days of fixes after launch
  • Say no at any point, owe nothing
Scan my store freeReads public data only. No login.

Frequently asked questions

What should a Shopify migration plan include?

The count of every data type that moves, a decision for every plugin that matters, how products above Shopify's three-option limit are restructured, the number of URLs that need a 301 redirect, a timeline, what is not included, and one fixed price.

What is a migration QA report?

A reconciliation of the old store against the new one: the count of each data type on both sides, with every difference explained, plus redirect tests, hand-checked samples and speed measurements. It is what you check before approving the new store.

Why can customer counts differ after a migration to Shopify?

Shopify requires each customer to have a unique email address, so WooCommerce customer records that share an email are merged into one. A good QA report lists how many were merged and which ones.