Case study: migracja Shopify → WooCommerce — bez utraty SEO

Branża: meble premium Shopify → WooCommerce Czas: 6 tygodni Wynik: 0% spadku organic

Sklep meblowy premium, 340 SKU, na Shopify od 4 lat. Klient płacił 2 200 USD/mc abonament Shopify Plus + 8 wtyczek po $20-150 każda + transakcyjny fee 0.5% — łącznie ~14 000 zł/mc. Decyzja: migracja na WooCommerce. Krytyczne ryzyko: stracić 4-letni organic traffic w trakcie cutoveru. Pokazujemy, jak przeprowadziliśmy migrację z 0% spadku organic w pierwszych 60 dniach.

Punkt wyjścia

  • 340 SKU na Shopify Plus, kompletne metadata (description, GTIN, tags), aggregateRating z 1 200+ opiniami
  • 15 000 organic visits/mc (przeważnie z kategorii i pillarów typu „narożnik z funkcją spania”)
  • 78 ranking pozycji w top 10 (długi ogon), 12 w top 3 dla money keywordów
  • 3 200 backlinków historycznie zdobytych — najmocniejsze z wnetrza.pl, dom-i-styl.pl, oraz 4 lokalnych portali wnętrzarskich
  • Customer Match list w Google Ads z 8 000 emaili — niemożliwe do odzyskania jeśli zostanie zgubiona

Strategia — co musi przetrwać migrację

  1. URL structure — każdy stary URL musi mapować się 1:1 na nowy. Nie ma „migracji na nową strukturę” w tym samym kroku — to dwa osobne projekty
  2. Metadata — title tags, meta descriptions, og:image, schema.org Product
  3. Reviews — 1 200 opinii musi przenieść się z aggregateRating do nowego sklepu (krytyczne dla rich snippets w SERP)
  4. Customer data — emaile, historia zamówień, lojalności klienta
  5. Backlinki — 301 redirect map z każdego starego URL → 4 200+ redirects
  6. GMC + Ads — feed Merchant Center wskazuje na nowe URL, Customer Match list re-uploaded

Fazy projektu (6 tygodni)

Tydzień 1-2: Discovery + Setup

  • Audyt starej struktury: crawl Screaming Frog (4 200 URL), eksport metadata, analiza top 50 URL po organic traffic
  • Decyzja: zachowujemy 100% URL structure — `/produkty/{slug}/` zostaje identycznie
  • Setup nowego WooCommerce na staging (osobna subdomena, blokowana w robots.txt)
  • Hosting: LiteSpeed cPanel, PHP 8.3, NVMe — testy obciążeniowe k6 do 500 RPS

Tydzień 3: Import danych + UI

  • Produkty: Shopify API → JSON export → WooCommerce REST → 340 SKU z 100% metadata
  • Reviews: import przez wtyczkę Reviews Migrator (mapowanie Shopify Reviews → WC Comments)
  • Customers: import bez password (klient resetuje przy pierwszym logowaniu — RODO compliance, hashed passwords nie da się przenieść)
  • Orders historical: 4 lata zamówień przeniesione (read-only, dla support)
  • Theme: custom block theme (FSE) z UX matching starego designu + drobne poprawki

Tydzień 4: QA + 301 redirect map

  • Random sample 50 produktów ręcznie sprawdzony (porównanie staging vs prod Shopify)
  • Schema.org Product re-implementacja z dokładnie tymi samymi polami (zapis w functions.php nowego motywu)
  • 301 redirect map: 4 200+ wpisów. Większość 1:1 (`/produkty/foo/` → `/produkty/foo/`), 80 produktów z zmienionym slugiem (typografia, błędy) — explicit map w .htaccess
  • Sitemap.xml gotowy z nowymi URL (mimo że nie publiczny jeszcze) — czeka na cutover

Tydzień 5: Cutover weekend (soboTa-niedziela)

  1. Piątek 18:00: Shopify w maintenance mode, ostatnie zamówienia procesowane przez 24h
  2. Sobota 06:00: DNS switch (TTL 300s ustawione tydzień wcześniej)
  3. Sobota 09:00: WooCommerce live, 301 redirect map aktywny
  4. Sobota: smoke testy — 100 random URL z analytics, każdy >200 + zawartość
  5. Sobota wieczór: GSC submit nowego sitemap, „Crawl now” na 50 najważniejszych URL
  6. Niedziela: monitoring error logs, GA4, Ads conversions
  7. Niedziela wieczór: WooCommerce konfiguracja kurierów + płatności (Przelewy24, Stripe, blik)

Tydzień 6: Post-launch monitoring

  • Daily GSC monitoring — crawl errors, ranking changes (Search Performance)
  • Daily Ahrefs monitoring — backlinks integrity (czy linki dalej wskazują na żywe URL)
  • Daily conversion tracking weryfikacja — porównanie GA4 vs WooCommerce orders, <3% różnicy
  • 3 mikro-fixe: 2 redirects pominięte, 1 produkt z błędnym schema price (mismatch z feedem)

Wyniki po 60 dniach

MetrykaShopify (przed)WooCommerce (po 60 dniach)
Organic visits/mc15 00015 800 (+5%)
Pozycje w top 107876 (−2)
Pozycje w top 31214 (+2)
Page Load (LCP)3.2 s1.4 s
Conversion rate2.1%2.6% (+24%)
Backlinki active3 2003 198 (−2 → 99.94%)
Koszt platformy/mc14 000 zł2 200 zł (hosting + maintenance)

Oszczędność roczna na samej platformie: 141 600 zł. Migracja „zwróciła się” w pierwszych 3 miesiącach kosztu hostingu.

Co krytyczne, czego nie wolno spieprzyć

  • NIE zmieniaj URL structure w tym samym kroku co migrację. Najpierw migrate, dopiero po 3 miesiącach (gdy ranking ustabilizuje się) ewentualnie restructure
  • NIE pomijaj reviews — aggregateRating w schema = gwiazdki w SERP = +25% CTR
  • NIE rób cutoveru bez DNS TTL — przygotuj 7 dni wcześniej, ustaw TTL=300s, klient nie czeka 24h na propagację
  • NIE zapominaj o feed Merchant Center — feed musi w dniu cutoveru wskazywać na nowe URL, inaczej 100% produktów disapproved next day