Most migration SEO advice is written to be read a month before launch. This one is written for the two days before, when the store is built, the content is in, and somebody is about to change a DNS record.
That window is the last moment a mistake is cheap. After cutover, every one of these becomes a recovery job with a traffic chart attached. Run them as gates β anything unresolved is a reason to delay a day, because a day is worth considerably less than a quarter of rankings.
Redirects β 8 checks
This is where migrations are won or lost, and it is the section people rush.
- You have a URL inventory from three sources, not one. Search Console, server logs and the old sitemap. Each finds pages the others miss; logs in particular surface old landing pages nothing links to internally that still take traffic.
- Every old product, collection, blog and static page URL has a mapped destination. No blanks in the map.
- Redirects are 301, not 302. A temporary redirect asks Google to keep the old URL indexed, which is the opposite of what a migration wants.
- Nothing redirects to the homepage in bulk. A mass redirect to / is treated as a soft 404 and passes nothing. If a page has no equivalent, send it to the closest collection.
- No redirect chains. Old URL to new URL, once. Chains of three or four appear when a store has been migrated before and the old rules were never flattened.
- Trailing-slash and case behaviour is consistent and does not create a second redirect hop.
- Parameterised URLs are handled β old filter and search URLs that accumulated links.
- The map is tested against staging with an automated crawl, not by spot-checking ten URLs by hand.
Indexation controls β 5 checks
- The staging password is still on until the moment of cutover, and the store was never publicly crawlable during the build.
- robots.txt on the live store does not block anything you need indexed. Check the rendered file, not your intention.
- No stray noindex left on templates from the build. Crawl staging and list every page returning a noindex directive; each one should be deliberate.
- Canonicals are self-referencing and absolute on product, collection and blog templates β and they point at the URL you actually serve, with the same trailing-slash convention. A canonical that 301s is a canonical Google will not honour.
- Collection pagination and filtered views do not generate thousands of near-duplicate indexable URLs.
Templates and on-page β 6 checks
- Title tags carry across. Migrations frequently reset them to a theme default of "Product name β Store name", wiping years of tuning.
- Meta descriptions carry across, or are deliberately regenerated rather than left blank.
- Exactly one h1 per page, and it is the product or collection name rather than a logo.
- Collection descriptions survived. These are often the only real text on a category page and they are easy to lose in a catalogue export.
- Image alt text migrated. Rarely included in exports; worth checking on a sample rather than assuming.
- Internal linking is rebuilt. Old hand-placed links inside descriptions may point at old URLs β they will redirect, but a store full of internal redirects is a store leaking crawl budget.
Structured data β 4 checks
- One Product block per product page. Two competing blocks is the standard cause of lost rich results after a theme change.
- Price, availability and currency are correct in the markup and match what the page displays.
- Aggregate rating present where you have reviews, and the reviews are visible in the initial HTML rather than loaded on interaction.
- Organization and breadcrumb markup validate without errors in the Rich Results Test.
Performance β 3 checks
- Core Web Vitals measured on a real mobile device, not only in a desktop lab run. A migration is the moment a store either gets faster or quietly picks up three new apps' worth of script.
- Images are sized and served in a modern format, and the hero is not a 2MB PNG.
- No render-blocking app scripts added during the build that nobody has audited. Every app injects something; the total is what matters. Our note on Shopify speed covers what is worth removing before launch rather than after.
Analytics and tracking β 4 checks
- GA4 fires on the new store and records a purchase on a test order.
- Google Ads and Meta conversions are wired and tested β a migration that silently breaks conversion tracking hides the damage and the recovery equally.
- Search Console has the new property verified and the domain change tool is ready to use at cutover.
- You have a rankings and traffic baseline saved from the week before launch. Without it you cannot tell a normal re-crawl dip from a real loss, and you will argue about it for a month.
Commerce correctness β 2 checks
- Tax, shipping and payment methods tested end to end with a real order in each of your main markets.
- Inventory reconciles between the old store and the new one on the morning of cutover, not from a week-old export.
The cutover itself
Lower the DNS TTL a day or two ahead so the switch propagates quickly and a rollback is fast. Cut over on a low-traffic morning, not on a Friday evening, and have the person who can revert available for the hours after.
Immediately after: submit the new sitemap, use the Search Console change of address if the domain is changing, and run a full crawl of the live store looking for 404s and unexpected redirects. Then crawl your old URL list against the live site and confirm each one lands where the map says it should.
The first fortnight
Expect movement. Crawl volume rises, impressions wobble, some pages drop before they recover. What you are watching for is not the dip but its shape β a broad, progressive recovery is normal; a category or template that flatlines is a bug with an address.
Check 404s daily for the first week. Real gaps in the redirect map show up as traffic to pages you forgot, and they are trivial to fix on day two and expensive to notice on day forty.
If you would rather have this run by people who have done it repeatedly, it is the spine of our migration work, and we will run the same checklist over a store that has already moved and lost traffic β send us the URL and we will tell you which of the thirty-two was missed.

