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ę
- 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
- Metadata — title tags, meta descriptions, og:image, schema.org Product
- Reviews — 1 200 opinii musi przenieść się z aggregateRating do nowego sklepu (krytyczne dla rich snippets w SERP)
- Customer data — emaile, historia zamówień, lojalności klienta
- Backlinki — 301 redirect map z każdego starego URL → 4 200+ redirects
- 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)
- Piątek 18:00: Shopify w maintenance mode, ostatnie zamówienia procesowane przez 24h
- Sobota 06:00: DNS switch (TTL 300s ustawione tydzień wcześniej)
- Sobota 09:00: WooCommerce live, 301 redirect map aktywny
- Sobota: smoke testy — 100 random URL z analytics, każdy >200 + zawartość
- Sobota wieczór: GSC submit nowego sitemap, „Crawl now” na 50 najważniejszych URL
- Niedziela: monitoring error logs, GA4, Ads conversions
- 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
| Metryka | Shopify (przed) | WooCommerce (po 60 dniach) |
|---|---|---|
| Organic visits/mc | 15 000 | 15 800 (+5%) |
| Pozycje w top 10 | 78 | 76 (−2) |
| Pozycje w top 3 | 12 | 14 (+2) |
| Page Load (LCP) | 3.2 s | 1.4 s |
| Conversion rate | 2.1% | 2.6% (+24%) |
| Backlinki active | 3 200 | 3 198 (−2 → 99.94%) |
| Koszt platformy/mc | 14 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