Skip to content
Codedock
ServicesHow we workInsightsCase StudiesCareerContact
Back to all articles
Migration & SEO

·

7 min read

·

Written by Tomáš Mikeš

Migrating off Shopify without losing orders or SEO: a playbook

The biggest barrier to leaving Shopify isn't building the new system — it's the fear of losing SEO rankings and breaking checkout during cutover. Lessons from MessyPlay: URL mapping, redirects, parallel runs, and what can't be skipped.

E-commerceShopifyMigrationSEO

“If it weren't for SEO I'd leave Shopify tomorrow.” We hear that from every second client who has outgrown the platform. And the concern is legitimate — a bad migration can strangle organic traffic by 40-60% within three months. Then the migration is a technical success and a business disaster.

This is the playbook from the MessyPlay transition. No theory — only the steps we took to deliver a custom system while keeping search rankings intact and breaking zero orders.

Step 1: Complete URL audit before writing a line of code

Export from Google Search Console every URL that gets at least 1 visit per month. From Ahrefs/Semrush pull a table of backlinks and their target URLs. From the current Shopify sitemap.xml get every product and collection URL.

The output: a CSV with ~3 columns — oldUrl, newUrl, notes. For MessyPlay that was ~400 URLs. Each one hand-checked that it has a 1:1 equivalent in the new system. 12 URLs didn't — they were old collections retired in the new build. Those got redirected to the closest alternative, NOT to the homepage.

This phase is the most boring and the most important. If you skip it, Google starts removing URLs from the index 72 hours after cutover because they return 404. They come back 2-8 weeks later. In between: nothing.

Step 2: 301 redirects from the first second of cutover

The new system must serve ALL old URLs at launch. Each of them returns HTTP 301 with a Location header pointing to the new URL. Not 302 (temporary — Google won't update the index), not a JS redirect (bot can't see it), not a meta refresh.

Technically: middleware (in .NET/Next.js) that runs before anything else, checks a redirects table, and if it finds a match returns 301. Populate the table from the CSV in step 1.

For MessyPlay we planned the 301 table to live at least 12 months. After a year you could start removing redirects with zero recent traffic, but usually it's unnecessary work — better to leave them.

Step 3: Customer accounts transfer, passwords don't

You don't know Shopify's password hash algorithm, so you can't move the hashes. Identity (email, name, address, order history) transfers; on the first login to the new system, users get an automatic password-reset email.

Communication has to go out ahead of time. For MessyPlay we sent an email 3 days before cutover: “We're moving to a new system; your first login will prompt you to set a new password.” Anyone who missed the email figured it out on the first attempt. Customer complaints: zero.

Step 4: Parallel order-system run during cutover

On the day DNS switches from Shopify to the new system, orders can land in a split state: Shopify has an order the new system doesn't (or vice versa). Ways to soften this:

  • Cutover during non-peak hours (ideally 2-4 AM CET) — minimum orders in flight
  • DNS TTL dropped to 300s a week before cutover — faster propagation
  • Final Shopify order export at the moment of cutover (not a snapshot an hour earlier) — everything Shopify has lands in the new system
  • Maintenance banner on Shopify checkout 10 min before cutover — stops new orders

For MessyPlay the cutover took 32 minutes. We caught 2 orders in flight — resolved them administratively within an hour. The client didn't notice, customers got confirmation emails as normal.

Step 5: Monitoring in the first two weeks

After cutover watch 3 things:

  • Search Console Coverage report — new 404 errors = missing redirects
  • Ahrefs/Semrush position tracker for top 20 keywords — a drop of 2-3 positions is normal, 10+ is a migration bug
  • Checkout funnel in analytics — if conversion drops > 5%, UX broke somewhere

For MessyPlay week one: 7 new 404s (patched with redirects), organic traffic +3% vs. the previous week, conversion stable. After a month: traffic +11%, rankings stable or better. After a quarter: +23%.

What can't be skipped

This migration has no shortcut. Four things that look nice-to-have and aren't:

  • Hand-check all 400 URL mappings — it doesn't automate. Google doesn't forgive.
  • Test 301s on staging before cutover — use a crawler (Screaming Frog) against all old URLs.
  • Cutover at non-peak hours — saves nerves more than two extra hours of work.
  • Holistic 14-day monitoring — not just “homepage works.” A 404 on a product URL is a conversion you don't see in the log, only in Search Console.

Do all of this, the migration is invisible to Google and customers. Skip a phase, we see you three months later asking “can you help get it back?” Usually yes, but it costs ~2× more than doing it right the first time.

Working on something similar?

Book a 30-minute technical call. No sales process — direct architectural feedback.

Pick a time

Architecture, cloud and integration for complex systems. A senior architect on every project.

Navigation

ServicesHow we workInsightsCase StudiesCareerContactAgency vs. freelancer vs. us

Services

DevelopmentCloudDevOpsAI & DataConsultingDelivery

Contact

CodeDock s.r.o.

Zlenická 863/9, 104 00 Praha 22

Czech Republic

info@codedock.com

Company ID: 14292769

VAT ID: CZ14292769


© 2026 Codedock

ContactPrivacy Policy
Book a call