PrestaShop w Narolu ma sens wtedy, gdy sklep ma rosnąć: więcej SKU, kilka kanałów sprzedaży, sprzedaż B2B albo magazyn, z którym trzeba się synchronizować. Wdrożenie nowego sklepu i migracja ze starego CMS-a to dwie różne prace — inny nakład godzin, inne ryzyko SEO, inny zakres testów. Ten tekst jest częścią organizacyjną: pokazuje, jak ułożyć projekt i w których momentach klient podejmuje decyzje. Nie ma tu obietnicy „wdrożenia w tydzień” — są etapy, widełki godzinowe i punkty kontrolne. Podobną organizację projektu opisaliśmy przy okazji wdrożeń PrestaShop w Bełżcu oraz projektów realizowanych w Lublinie.
Ustal, w którym z trzech scenariuszy jesteś — od tego zależą godziny, ryzyko i kolejność prac.
Wersje: nowe wdrożenia robimy na PrestaShop 8.x, bo to aktualna linia rozwojowa. Gałąź 1.7 nie jest już rozwijana, a wsparcie bezpieczeństwa dla niej zostało zakończone — migracja z 1.7 ma więc sens także wtedy, gdy nie zmieniasz niczego innego. Aktualny status wsparcia i wymagania PHP/MySQL sprawdź w dokumentacji dla deweloperów PrestaShop, bo zmieniają się przy każdym wydaniu.
Trzy kryteria decyzyjne. Liczba SKU: poniżej 500 — najpierw policz, czy obecna platforma nie wystarczy; 500–5000 — PrestaShop pracuje komfortowo, kluczowe są warianty i wydajność bazy; powyżej 5000 — dochodzi import, indeksy i zwykle zewnętrzny PIM albo ERP, bo ręczne zarządzanie katalogiem się kończy. Kanały sprzedaży: jeden sklep to jedno wdrożenie; sklep plus marketplace i porównywarki to już integracje i osobne testy. Obsługa B2B: grupy klientów, indywidualne cenniki, rabaty ilościowe, płatność odroczona i zamówienia na fakturę — jeśli tego brakuje w obecnym systemie, to zwykle główny powód przejścia na PrestaShop.
Jak wygląda ta sama organizacja projektu w mniejszym mieście, pokazujemy na przykładzie wdrożeń i migracji PrestaShop w Krasnobrodzie.
Obie ścieżki kończą się tym samym: działającym sklepem na PrestaShop 8.x. Różni je nakład pracy i ryzyko — poniżej konkretne liczby.
Migracja jest tańsza niż przepisanie od zera wtedy, gdy katalog ma wartość: setki opisów, zdjęcia, cechy, kategorie z historią i zaindeksowane adresy URL. Jeśli dane wychodzą z WooCommerce, Shopera albo IdoSell jako CSV lub XML, płacisz głównie za mapowanie i przeniesienie, a nie za odtwarzanie treści. Warunek: stara platforma pozwala wyeksportować klientów, zamówienia i stany magazynowe.
Przepisanie od zera wygrywa w dwóch przypadkach. Pierwszy: baza jest śmietnikiem — duplikaty SKU, brak EAN, tysiące produktów bez zdjęć i opisów. Czyszczenie takiego katalogu zajmie więcej niż ponowne wgranie danych. Drugi: struktura kategorii i URL-i jest tak chaotyczna, że lepiej zbudować ją od nowa i ręcznie przygotować mapę przekierowań na nowe adresy.
Sygnały, że obecna platforma blokuje rozwój: brak API (REST) do ERP albo magazynu, brak modułów do obsługi B2B i wielowalutowości, ręczne wystawianie faktur, wolne działanie na karcie produktu i w koszyku. Każdy z tych punktów oznacza pracę, której nie da się rozwiązać konfiguracją. Przy migracji kod odpowiedzi ma znaczenie: stare adresy muszą zwracać trwałe przekierowania, nie 404 — różnicę wyjaśnia dokumentacja MDN dotycząca HTTP, w tym kodu 301.
Jeśli szukasz punktu odniesienia dla większego rynku, zobacz nasze wdrożenia i migracje PrestaShop w Lublinie, a dla porównania projekt w mniejszym mieście: organizacja wdrożenia PrestaShop w Biłgoraju.
| Kryterium | Nowy sklep od zera | Migracja z istniejącej platformy |
|---|---|---|
| Praca (roboczogodziny) | 90–200 h: konfiguracja, szablon, treści, integracje, pełne testy | 40–140 h: to samo plus mapowanie danych i URL-i, ale z gotowym katalogiem |
| Ryzyko SEO | Niskie technicznie, wysokie biznesowo: nowa struktura i indeksacja od zera | Wysokie bez mapy przekierowań; przy poprawnej mapie zwykle 2–6 tygodni wahań widoczności |
| Koszt | Zwykle wyższy — płacisz też za opisy, zdjęcia i treści, jeśli ich nie masz | Niższy przy czystych danych; wyższy, gdy katalog trzeba czyścić i odtwarzać opisy |
| Zakres testów | Płatności, dostawy, podatki, e-maile, wydajność, mobile, dane strukturalne | To samo plus zgodność cen i stanów, historia zamówień, kody 301, stare linki, sitemap, feedy |
| Kiedy wygrywa | Gdy katalog i treści są do wyrzucenia, a adresy URL nie mają wartości | Gdy katalog ma wartość, dane wychodzą w CSV/XML, a URL-e są zaindeksowane |
Poniżej rozkład prac dla sklepu do około 2000 SKU, jednego języka, jednej waluty, płatności online plus przelew i integracji z jednym systemem magazynowym. Widełki są szerokie, bo różnicę robi jakość danych wejściowych i liczba integracji.
Łącznie typowy projekt to 80–260 roboczogodzin. Jeśli oferta mówi o 30–40 godzinach na pełny sklep, zapytaj, czego w niej nie ma — najczęściej wypadają testy, e-maile transakcyjne, konfiguracja podatków, mapa 301 i dane strukturalne. Przykład podobnego rozkładu prac w innym mieście: organizacja wdrożenia PrestaShop w Józefowie.
Najczęstsze złudzenie przy migracji do PrestaShop brzmi: „to się po prostu przekopiuje”. Nie przekopiuje się. Zaczynamy od inwentaryzacji: ile SKU, ile kombinacji, ile zamówień, ile podstron CMS. Dopiero potem wybieramy kanał przenoszenia — eksport z bazy źródłowej do CSV (szybko i tanio, gdy mamy dostęp do bazy albo eksportu w panelu) albo API sklepu źródłowego (wolniej, ale gdy baza jest zamknięta na hostingu współdzielonym, to jedyna droga).
| Dane | Kanał przenoszenia | Na co uważać |
|---|---|---|
| Produkty (SKU, ceny, opisy) | CSV/XML do ps_product i ps_product_lang | opisy HTML czyścimy z pozostałości edytora źródłowego |
| Kategorie | CSV z drzewem kategorii | kolejność i zagnieżdżenie sprawdzamy ręcznie po imporcie |
| Atrybuty i kombinacje | CSV: grupy, wartości, kombinacje | ceny i stany siedzą na kombinacji, nie na produkcie — najczęstsze źródło błędów |
| Klienci | CSV do ps_customer, hasła w kolumnie passwd | brak zgodnego hasha = wymuszony reset hasła |
| Zamówienia | CSV/SQL do ps_orders, ps_order_detail, ps_order_history | ustalamy z góry, czy przenosimy całą historię, czy np. 12 miesięcy |
| Stany magazynowe | CSV do ps_stock_available | nadpisujemy po testach — inaczej rozjadą się przy pierwszej synchronizacji z ERP |
| Treści CMS | CSV/import do ps_cms | linki wewnętrzne w treściach trzeba przejrzeć osobno |
| Zdjęcia | pliki + CSV z nazwami | PrestaShop trzyma zdjęcia w strukturze /img/p/ według ID; po imporcie regenerujemy miniatury |
Najwięcej problemów po starcie nie wynika z samego PrestaShop, a z integracji. Dlatego planujemy je w pierwszym tygodniu projektu, nie w ostatnim. Każda integracja ma trzy elementy do przetestowania: wystawienie danych, pobranie danych z powrotem i zachowanie przy błędzie.
W rejonie Narola liczba punktów odbioru w promieniu kilkunastu kilometrów bywa mała — nie zakładamy tego z góry, tylko sprawdzamy realną listę punktów zwracaną przez API i testujemy widget na telefonie. Jeśli mapa ładuje się wolno, klient rezygnuje z koszyka.
Płatności: Przelewy24, PayU, Autopay — wymagają umowy i weryfikacji sklepu (regulamin, polityka prywatności, dane firmy, działający SSL). Czas akceptacji zależy od operatora i kompletności dokumentów, więc wniosek składamy równolegle z pracami, nie po nich. BLIK obsługujemy przez operatora płatności — osobna integracja zwykle nie ma sensu. Płatności odroczone (np. PayPo) podnoszą konwersję koszyka, ale mają wyższą prowizję, dłuższą akceptację i wymagają zapisów w regulaminie.
ERP (Subiekt GT/nexo, Comarch, WAPRO): stany co 5–15 minut, zamówienia co 15–60 minut albo webhookiem, dokument sprzedaży i numer przesyłki z powrotem do ERP. Konflikt numer jeden to brak rezerwacji w ERP — rozwiązaniem jest bufor stanu 1–2 szt. albo rezerwacja po stronie sklepu. Własny moduł piszemy wtedy, gdy roczna licencja wtyczki plus czas na obejścia przekracza w 1–2 lata koszt napisania i utrzymania modułu.
Widełki są po to, żeby porównywać oferty w tych samych jednostkach — godzinach, a nie „pakietach”. Poniżej zakresy, które w praktyce pokrywają większość projektów. Górna granica widełek to nie straszak, a miejsce na rzeczy, których nie widać przed zajrzeniem do bazy danych.
| Zakres | Widełki | Co podnosi górną granicę |
|---|---|---|
| Prosty sklep do 300 SKU, 1 kurier, 1 płatność | 60–120 h | liczba kombinacji, treści do przepisania |
| Średni: 300–3000 SKU, 2–3 integracje, B2B/ceny grupowe | 120–300 h | import danych, indywidualny layout |
| Rozbudowany: ERP, multi-store, kilka kanałów | 300–600 h | konflikty w synchronizacji, zakres testów |
Mapowanie starych adresów na nowe to pierwszy dokument w projekcie — powinien powstać, zanim ruszy kodowanie szablonu. Zbierz dane z dwóch źródeł: logów serwera (access_log z ostatnich 90 dni) i Search Console (Wydajność → Wyniki wyszukiwania → zakładka Strony). Z logów wyciągnij ścieżki zwracające kod 200 i policz wejścia; z GSC adresy z klikami i wyświetleniami. Po scaleniu masz arkusz: stary URL, ruch miesięczny, nowy URL, typ (produkt, kategoria, strona CMS), reguła.
Przykład reguł w .htaccess dla PrestaShop 1.7/8.x — na górze pliku, po RewriteEngine On i RewriteBase /:
RewriteRule ^stara-kategoria/(.*)$ /nowa-kategoria/$1 [R=301,L] RewriteRule ^stary-produkt\.html$ /nowa-kategoria/nowy-produkt.html [R=301,L] RedirectPermanent /stara-strona-cms.html /nowa-strona-cms.html
Trzy pułapki. Pierwsza: pętla — jeśli wzorzec starego adresu nadal pasuje do nowego URL-a, przekierowanie zawraca i przeglądarka pokazuje „zbyt wiele przekierowań”. Testuj każdą regułę pojedynczo. Druga: 301 zapamiętują przeglądarki i Google, więc najpierw sprawdź całość jako 302 na stagingu, dopiero potem włącz 301 na produkcji. Trzecia: AllowOverride All i aktywny mod_rewrite — bez tego reguły milczą, a ty szukasz błędu w składni. Semantykę kodów przekierowania opisuje dokumentacja HTTP w MDN.
Kolejność po starcie: 1) przekierowania 301 razem ze zmianą DNS, 2) canonical — tylko self-referencing, 3) meta title i description z nowych szablonów, 4) sitemap.xml z nowymi adresami i robots.txt bez blokady stagingu, 5) kontrola raportu „Strony” w GSC po 7 i 30 dniach.
Parametry /id_product i /id_category możesz zostawić (mniej pracy, dłuższe adresy) albo wyłączyć w Preferencje → SEO i URL i budować czyste URL-e. Przy migracji z innego CMS-a mapowanie i tak robisz od zera, więc warto ciąć. Przy przejściu PrestaShop → PrestaShop z 20 000 SKU zostawienie ID oszczędza tygodnie pracy. Harmonogram takich prac opisaliśmy przy organizacji wdrożenia PrestaShop w Bełżcu.
| Stary URL | Ruch/mies. | Nowy URL | Typ |
|---|---|---|---|
| /stara-kategoria/obuwie/ | 1 240 wejść | /buty-meskie/ | kategoria |
| /product.php?id_product=142 | 310 wejść | /buty-meskie/trzewiki-skora.html | produkt |
| /o-nas.html | 85 wejść | /content/6-o-nas | strona CMS |
Hosting współdzielony wystarcza, gdy sklep ma do około 1000 SKU, do 10 000 wizyt miesięcznie i 1–3 osoby obsługi, a synchronizacja z hurtownią chodzi raz na godzinę. Powyżej tego progu bolą limity: jednoczesne połączenia MySQL, CPU na koncie, brak kontroli nad PHP-FPM. Wtedy VPS — minimum 2 vCPU, 4 GB RAM, dysk NVMe. Liczba workerów PHP-FPM to zwykle 2 × vCPU + 2, czyli przy 4 vCPU celuj w 10 procesów, nie w 40: nadmiar workerów przy zbyt małym RAM kończy się swapem i sklepem wolniejszym niż na hostingu współdzielonym. innodb_buffer_pool_size ustaw na 50–70% RAM. Serwer dedykowany ma sens przy 50 000+ SKU, katalogu synchronizowanym co kilka minut i ruchu ponad 100 000 wizyt miesięcznie.
Kopie: pełny backup bazy i plików codziennie, w innym miejscu niż produkcja (inny dostawca lub S3). Retencja: 7 kopii dziennych, 4 tygodniowe, 3 miesięczne. Raz na kwartał odtwarzasz kopię na stagingu i mierzysz czas. Cel: RPO 24 h, RTO poniżej 4 h. Backup, którego nikt nie odtworzył, to nie backup, a nadzieja.
Po starcie zostają aktualizacje. PrestaShop i moduły aktualizuj partiami po 3–5, nigdy wszystkie naraz w piątek. Testy na stagingu z kopią danych produkcyjnych (zanonimizowanych), okno serwisowe poza szczytem sprzedaży — np. wtorek 2:00–4:00, z włączonym trybem maintenance. Po każdej aktualizacji przechodzisz ścieżkę: koszyk → zamówienie → płatność → mail potwierdzający → faktura → stan magazynowy. Zakres opieki warto ustalić na piśmie, podobnie jak przy organizacji projektu wdrożenia PrestaShop w Lublinie.
| Element SLA | Pakiet podstawowy | Pakiet rozszerzony |
|---|---|---|
| Czas reakcji | 8 h w dni robocze | 1 h, 24/7 |
| Czas naprawy (awaria krytyczna) | do 8 h | do 2 h |
| Kanał zgłoszeń | e-mail / ticket | telefon + ticket |
| Dyżur poza godzinami | brak | wybrane okno czasowe |
| Aktualizacje PrestaShop i modułów | 1 raz w miesiącu | 2 razy w miesiącu + pilne łatki |
Zamawianie migracji bez inwentaryzacji starego sklepu
Jak wykryć: Wycena powstaje po jednej rozmowie, bez eksportu listy produktów, kombinacji, kategorii i zainstalowanych modułów. W ofercie nie ma pozycji „analiza danych źródłowych”.
Jak naprawić: Przed wyceną zrób eksport SKU wraz z kombinacjami, listę kategorii, listę modułów i integracji oraz zrzut struktury URL-i. Dopiero na tej podstawie licz godziny — inwentaryzacja zajmuje 8–16 h i realnie skraca resztę projektu.
Traktowanie migracji jak kopiuj-wklej
Jak wykryć: W ofercie jest jedna zbiorcza pozycja „migracja danych” bez rozbicia na produkty, kombinacje, klientów, zamówienia i stany magazynowe. Nikt nie pyta o hasła klientów ani o mapowanie pól.
Jak naprawić: Zamień jedną pozycję na tabelę: co przenosi się automatycznie, co wymaga mapowania, a co trzeba odtworzyć ręcznie. Zapytaj wprost, jak wykonawca zamierza przenieść kombinacje atrybutów i czy zachowa powiązania produkt–kategoria.
Brak planu przekierowań 301 przed wyłączeniem starego sklepu
Jak wykryć: Nie istnieje plik z listą starych adresów URL. Po przełączeniu w Google Search Console pojawiają się błędy 404 na adresach, które wcześniej generowały ruch.
Jak naprawić: Zbierz adresy z sitemap.xml starego sklepu i z GSC, przygotuj mapowanie 1:1 na nowe URL-e i wgraj przekierowania przed startem. Sprawdź losowo 30–50 adresów, zanim domenę przełączysz na produkcję.
Wymuszony reset hasła klientów bez uprzedzenia
Jak wykryć: Po starcie rośnie liczba zgłoszeń „nie mogę się zalogować”, a w statystykach widać spadek logowań i porzucenie koszyków u stałych klientów.
Jak naprawić: Zaplanuj kampanię mailową na 3–5 dni przed startem i drugą po starcie, z jasną informacją, dlaczego hasło trzeba ustawić ponownie i jak to zrobić w dwóch krokach. Dodaj widoczny link do resetu w mailu, nie tylko na stronie logowania.
Start prac bez dostępów i decyzji po stronie klienta
Jak wykryć: Pierwszy tydzień projektu schodzi na czekanie na dostępy do DNS, bazy danych, panelu starego sklepu albo dane do API kuriera. Wykonawca raportuje „blokada”, a harmonogram się przesuwa.
Jak naprawić: Ustal jedną listę dostępów z terminem ich przekazania i jedną osobę decyzyjną po stronie firmy. Zbierz też konta sandbox u operatorów płatności i kurierów, zanim zacznie się etap integracji.
Wybór wtyczki do ERP tylko po cenie zakupu
Jak wykryć: Moduł kosztuje jednorazowo kilkaset złotych, ale ma roczną licencję albo płatne aktualizacje przy każdej nowej wersji PrestaShop. Przy dwóch integracjach koszt utrzymania przewyższa koszt pierwszego wdrożenia.
Jak naprawić: Policz koszt trzyletni: zakup plus licencja roczna plus godziny na aktualizacje po każdej zmianie wersji. Jeśli synchronizacja stanów działa w nietypowy sposób, taniej bywa zamówić moduł na własność niż co roku łatać wtyczkę.
Najczęstszą przyczyną przekroczonego budżetu nie jest sam PrestaShop, tylko brak inwentaryzacji przed wyceną i brak punktów kontrolnych w trakcie. Rozbij projekt na etapy z widełkami godzinowymi i żądaj akceptacji każdego z nich, zanim ruszy następny. Migracja jest tańsza od przepisania sklepu wtedy, gdy dane da się wyeksportować i zmapować — jeśli trzeba odtwarzać katalog i opisy ręcznie, przewaga znika. Zanim podpiszesz umowę, ustal też plan przekierowań i sposób przeniesienia haseł klientów.
1.7 to gałąź, która nie jest już rozwijana w kierunku nowych funkcji — nowe moduły i szablony celują w 8.x. Sklep na 1.7 może działać, ale z czasem rośnie ryzyko: część wtyczek przestaje być aktualizowana, a hostingi podnoszą wymagania PHP. Jeśli nadal na nim pracujesz, potraktuj to jako powód do zaplanowania migracji w perspektywie miesięcy, nie lat. Dokładny status wsparcia konkretnej wersji sprawdź w dokumentacji PrestaShop.
Sama zmiana platformy nie szkodzi — szkodzi brak przekierowań i zmiana struktury URL-i bez mapowania. Jeśli przygotujesz listę starych adresów, ustawisz przekierowania 301 i nie zgubisz treści opisów, ruch zwykle wraca do poziomu sprzed migracji w ciągu kilku tygodni. Największe ryzyko to adresy generowane dynamicznie oraz parametry filtrów, które trzeba potraktować osobno.
To zależy od platformy źródłowej. Jeśli masz dostęp do bazy i hasła są zapisane w formacie, który PrestaShop obsługuje (np. bcrypt), hashe można przenieść i klienci logują się jak wcześniej. Jeśli hasła są solone w nietypowy sposób albo platforma ich nie eksportuje, pozostaje wymuszony reset. Wtedy liczba logowań spadnie na 1–2 tygodnie i trzeba to kupującym jasno zakomunikować.
Zamówienia da się przenieść, ale to najbardziej pracochłonna część migracji, bo wiąże się z klientami, produktami i statusami. W wielu projektach przenosi się samych klientów i stany magazynowe, a historię zamówień zostawia w starym sklepie jako archiwum do wglądu. Decyzję podejmij na etapie discovery — zależy od tego, czy klient obsługuje reklamacje i zwroty w panelu.
Jako punkt odniesienia: prosty sklep do około 300 SKU to 60–120 h, średni projekt 120–300 h, a rozbudowany sklep z B2B i integracją ERP może przekroczyć 400 h. Do tego dochodzi discovery i analiza (8–16 h), migracja danych (8–40 h) i testy odbiorcze (8–24 h). Jeśli oferta mieści całość w 40 h, prawdopodobnie pominięto część etapów.
Wtedy, gdy gotowe rozwiązanie wymaga obejść, ma roczną licencję droższą niż jednorazowy development albo nie obsługuje Twojego procesu (np. nietypowa synchronizacja stanów z Subiektem). Policzyć trzeba koszt trzyletni: zakup, licencje, aktualizacje i godziny wsparcia. Jeśli suma przekracza koszt modułu pisanego na zamówienie, własny moduł bywa tańszy — ale wymaga dostępu do kodu źródłowego i kogoś, kto go utrzyma.
Sam proces techniczny jest taki sam — różnice są logistyczne. Częściej pracuje się zdalnie, a część klientów woli jedno spotkanie na miejscu na starcie i potem kontakt online. Warto wtedy tym mocniej pilnować punktów kontrolnych: przy pracy zdalnej łatwiej przeoczyć decyzje, które normalnie zapadłyby przy biurku. Organizacyjnie opisaliśmy to przy projektach w Józefowie i Krasnobrodzie.
Jeśli chcesz sprawdzić, ile realnie zajmie wdrożenie lub migracja w Twoim przypadku, prześlij nam liczbę SKU, listę integracji i wersję obecnej platformy — odpowiemy widełkami godzinowymi, nie ogólnikami. Możesz też zajrzeć do opisów organizacji projektów w Biłgoraju i Frampolu, żeby zobaczyć, jak układamy etapy.