Niestandardowe moduły i wtyczki w Hrubieszowie i okolicy zamawia się najczęściej wtedy, gdy gotowe rozwiązanie przestaje wystarczać: przy indywidualnych cenach B2B, integracji z ERP albo nietypowej wysyłce. Problem zaczyna się nie na etapie kodu, a organizacji — brak briefu, brak kryteriów akceptacji i brak planu na utrzymanie. Ten artykuł porządkuje pracę: co ustalić przed wyceną, jak porównać oferty i jak odebrać wdrożenie bez niespodzianek. Znajdziesz tu checklistę do odhaczenia i listę błędów, które najczęściej podnoszą koszt.
Moduł w PrestaShop i wtyczka w WordPress to ten sam pomysł: paczka kodu, która dodaje funkcję do sklepu bez ruszania plików rdzenia. Różnice są techniczne i przekładają się na wycenę oraz na to, jak łatwo później zaktualizować sklep.
Moduł PrestaShop leży w katalogu /modules/nazwa_modulu/. Plik główny nazwa_modulu.php zawiera klasę dziedziczącą po Module. Funkcje podpina się hookami — displayHeader, actionCartSave, displayAdminOrder — a ustawienia zapisuje przez Configuration::updateValue(). Tabele tworzy się w metodzie install(). Dzięki temu moduł potrafi zmieniać logikę koszyka, cen i zamówień, nie tylko wygląd. Pełne API opisuje dokumentacja dla deweloperów PrestaShop.
Wtyczka WooCommerce to katalog /wp-content/plugins/, plik z nagłówkiem Plugin Name i funkcje podpinane przez add_action() oraz add_filter(). Zasięg jest podobny, ale WooCommerce opiera koszyk i ceny na meta danych i filtrach — nietypowa logika szybciej rozjeżdża się z kolejnymi wersjami WooCommerce.
Najczęstsze zastosowania w firmach z Hrubieszowa i okolic:
Kiedy zostać przy gotowym? Gdy funkcja jest standardowa, wtyczka dostała aktualizację w ostatnich 3–6 miesiącach i kosztuje mniej niż 8 godzin pracy programisty. Custom ma sens, gdy gotowe rozwiązanie pokrywa mniej niż ~80% procesu, a resztę pracownik nadrabia ręcznie — na przykład przepisując zamówienia z maila do ERP. Więcej o układaniu pracy przed wyceną piszemy w tekście Niestandardowe moduły i wtyczki Lublin: organizacja pracy.
Decyzję da się podjąć w kilkanaście minut, zanim zapłacisz za analizę. Policz trafienia po każdej stronie tabeli — nie musisz spełniać wszystkich warunków.
| Zostań przy gotowym rozwiązaniu, jeśli… | Niestandardowy moduł ma sens, jeśli… |
|---|---|
| Funkcja jest standardowa (koszyk, kurier krajowy, podstawowe rabaty) | Gotowy moduł pokrywa poniżej ~80% Twojego procesu i reszta idzie ręcznie |
| Wtyczka ma aktualizacje z ostatnich 3–6 miesięcy | Łączysz 3 lub więcej systemów: ERP, magazyn, kurier, płatności |
| Producent odpowiada na zgłoszenia w 1–3 dni | Wydajność gotowca siada przy 300–500 zamówieniach dziennie |
| Nie integrujesz się z systemem księgowo-magazynowym | Reguły cenowe zmieniają się co tydzień i nie da się ich ustawić w panelu |
| Cena licencji jest niższa niż 8 godzin pracy programisty | Autor wtyczki nie wydał wersji od ponad 12 miesięcy i nie odpowiada |
Stawki rynkowe w Polsce w 2025 roku to 150–300 zł/h netto. Dolny przedział (150–200 zł/h) dotyczy prostszych zadań i mniej doświadczonych wykonawców, środek (200–250 zł/h) to standard dla sklepów na PrestaShop i WooCommerce, górna granica (250–300 zł/h) pojawia się, gdy potrzebna jest wąska specjalizacja: multistore w PrestaShop, integracja z Subiektem GT, rozliczenia księgowe albo praca na starym, nieudokumentowanym API.
| Zakres | Godziny | Widełki netto | Typowa stawka |
|---|---|---|---|
| Prosty moduł: 1 funkcja + panel ustawień | 8–20 h | 1 500–5 000 zł | 150–250 zł/h |
| Średni: 2–3 integracje, wielojęzyczność | 20–60 h | 4 000–15 000 zł | 200–250 zł/h |
| ERP + kilku kurierów, statusy, faktury | 40–120 h | 6 000–25 000 zł | 150–300 zł/h |
| Wielosklepowość lub dodatkowa waluta | +20–40% zakresu bazowego | zależnie od bazy | — |
W PrestaShop moduł to katalog w /modules/ z plikiem głównym mojmodul.php, klasą dziedziczącą po Module, plikiem config.xml i szablonami .tpl. Zachowanie sklepu rozszerzasz przez hooki (hookDisplayHeader, actionValidateOrder, actionProductUpdate), a gdy hooka brakuje – przez override klasy w katalogu /override/. Override działa szybko, ale to dług techniczny: po aktualizacji sklepu nadpisana klasa może zniknąć albo zmienić sygnaturę metody. Panel konfiguracji piszesz ręcznie w getContent(), z walidacją i zapisem przez Configuration::updateValue().
W WooCommerce pracujesz na mechanizmie WordPressa: akcje (woocommerce_checkout_create_order) i filtry (woocommerce_get_price_html). Zamiast override nadpisujesz szablony w motywie potomnym w katalogu /woocommerce/ albo podpinasz się pod istniejące zdarzenie. Do wymiany danych z systemami zewnętrznymi służy REST API (/wp-json/wc/v3/) z kluczami consumer key i secret. Aktualizacje WooCommerce rzadziej łamią logikę, bo interfejs hooków jest stabilny, ale konflikty robią wtyczki nadpisujące te same szablony.
Wydajność projektuje się inaczej. PrestaShop generuje dużo zapytań przy listach kategorii – liczy się cache Smarty, indeksy w bazie i to, czy moduł nie odpytuje bazy w pętli. WooCommerce opiera się na WP_Query i transientach, a zadania w tle kieruj do Action Scheduler, nie do wp-cron.php, który odpala się tylko przy ruchu.
Wybór jest prosty. PrestaShop – gdy masz ceny B2B, wielosklep, kilka magazynów i chcesz rozszerzać logikę koszyka. WooCommerce – gdy sklep jest częścią serwisu na WordPressie, a integracje oprzesz na REST API. Zanim porównasz oferty, uporządkuj brief – pomoże materiał o niestandardowych modułach i wtyczkach w Lublinie, a realia mniejszych rynków opisuje tekst o niestandardowych modułach i wtyczkach w Biłgoraju. Szczegóły techniczne znajdziesz w dokumentacji deweloperskiej PrestaShop.
| Element | PrestaShop | WooCommerce |
|---|---|---|
| Rozszerzanie logiki | hooki + override klas w /override/ | akcje i filtry WordPressa |
| Panel konfiguracji | getContent(), Configuration::updateValue() | pola ustawień WP, Settings API |
| Szablony | pliki .tpl (Smarty) | motyw potomny, katalog /woocommerce/ |
| Ryzyko przy aktualizacji | wysokie przy override, średnie przy hookach | średnie: konflikty wtyczek o te same szablony |
| Zadania w tle | kolejka własna lub cron serwera | Action Scheduler zamiast wp-cron |
Ten proces działa tak samo w PrestaShop i WooCommerce. Wykonawca, który go pomija, przenosi ryzyko na Ciebie.
Kolejność jest ważniejsza niż narzędzia. Jeśli dopiero planujesz projekt, zobacz, jak wygląda organizacja pracy przy niestandardowych modułach i wtyczkach w Narolu oraz we wdrożeniach w Bełżcu.
Kurierzy (InPost, DPD, DHL). Gotowa wtyczka zwykle wystarcza do nadania paczki, ale nie do mapowania statusów. Problem pojawia się, gdy API zwraca 9 statusów, a w sklepie masz 4. Kolejna pułapka to etykiety: generowanie PDF dla przesyłki z pobraniem i niestandardowym gabarytem, a także zapis wybranego punktu odbioru jako osobnych pól zamówienia. Bez tego pracownik przepisuje dane ręcznie.
ERP (Subiekt, Comarch, SAP). Tu custom jest regułą. Zamówienia ze sklepu muszą trafić do ERP, a stany i ceny – wrócić. Najczęstsze błędy: brak identyfikatora korelacyjnego (nie wiadomo, które zamówienie już poszło), nadpisywanie ręcznie ustawionych cen przy każdej synchronizacji i blokada sklepu, gdy ERP nie odpowiada. Rozwiązanie to kolejka: zamówienie zapisuje się lokalnie, wysyłka idzie w tle, a nieudane pozycje wracają do ponowienia.
Płatności pod B2B. Standardowe bramki nie obsługują faktur odroczonych z limitem kredytowym, rat ani przelewu po walidacji NIP. Często trzeba dopisać własną metodę płatności, która sprawdza limit kontrahenta i blokuje zamówienie powyżej salda.
Obsługa awarii. Gdy API nie odpowiada, potrzebujesz ponowień z rosnącym opóźnieniem (np. 1, 5, 30 minut), logu z ID zamówienia i alertu po trzeciej nieudanej próbie. Klucze API trzymaj poza repozytorium – w zmiennych środowiskowych lub pliku poza katalogiem publicznym, z ograniczonymi uprawnieniami. Dokumentacja bramek i REST API jest w dokumentacji WooCommerce.
Zakres typowych prac zebrano w tabeli. Podobne zestawienia przygotowaliśmy dla niestandardowych modułów i wtyczek we Frampolu oraz dla firm z Józefowa.
| Integracja | Co zwykle trzeba dopisać |
|---|---|
| InPost, DPD, DHL | mapowanie statusów API na statusy zamówienia, etykiety PDF, punkt odbioru jako pole zamówienia |
| Subiekt, Comarch, SAP | kolejkowanie zamówień, identyfikator korelacyjny, ochrona cen ustawianych ręcznie |
| Płatności B2B | faktura odroczona, limit kredytowy, raty, walidacja NIP przed utworzeniem zamówienia |
| Kolejki i błędy | ponowienia z rosnącym opóźnieniem, log z ID zamówienia, alert po trzeciej próbie |
Najdroższe problemy nie pojawiają się w dniu wdrożenia, tylko 6–12 miesięcy później. Cztery scenariusze zdarzają się najczęściej.
Vendor lock. Kod trafia na serwer przez FTP, nie ma repozytorium ani dokumentacji. Skutek: żaden inny wykonawca nie podejmie się poprawki bez przepisania modułu od zera, a Ty nie możesz zmienić dostawcy. Prosty test: poproś o dostęp do repozytorium Git i sprawdź historię commitów. Jeśli słyszysz „kod jest na serwerze, tam pan zajrzy” — to lock. Schemat postępowania przy takich projektach opisaliśmy też przy okazji organizacji pracy przy niestandardowych modułach w Narolu.
Aktualizacja, po której moduł przestaje działać. Klasyka to override plików core w PrestaShop albo modyfikacja szablonu WooCommerce, która znika po aktualizacji motywu. Moduł chodził na PHP 7.4, po przejściu na PHP 8.2 leci błąd 500. Każdą aktualizację testuj na kopii (staging) z przywróconą bazą produkcyjną, nigdy bezpośrednio na produkcji.
Wydajność. Trzy najczęstsze grzechy: zapytania N+1 w pętli (lista 200 produktów = 200 zapytań do bazy), brak indeksów na kolumnach filtrowanych w tabelach modułu, brak cache dla powtarzalnych obliczeń. Efekt widać w Core Web Vitals — zamiast 1,2 s robi się 4 s.
Bezpieczeństwo. Nieparametryzowane zapytania SQL, dane z formularza wstawiane do HTML bez escapowania (XSS), brak walidacji pól w kontrolerze frontowym. Jeden zaniedbany formularz w module wystarczy, żeby wyciekła baza.
Jak to wykryć bez audytu za 10 tys. zł:
error_log, slow query log — szukaj powtarzających się zapytań i błędów z tej samej ścieżki modułu,| Objaw | Narzędzie | Co konkretnie sprawdzić |
|---|---|---|
| Wolne ładowanie katalogu | Query Monitor / Profiler PrestaShop | Liczba zapytań na jedną podstronę i duplikaty w pętli |
| Błąd 500 po aktualizacji | error_log, logi PHP | Ścieżka pliku, wersja PHP, obecność override w motywie |
| Podejrzenie wycieku danych | logi dostępu serwera | Parametry z apostrofem lub podwójnym myślnikiem w GET/POST |
| Formularz przyjmuje śmieci | test ręczny | Czy odpowiedź zawiera niezescapowane dane z pola tekstowego |
Ta lista działa jak brief. Odpowiedzi zapisz w jednym dokumencie, który obie strony akceptują przed startem prac — nie w mailach rozrzuconych po wątkach.
1. Zakres. Co moduł ma robić i czego nie robić. Przykład: „liczy cenę B2B od progu 500 zł netto, nie obsługuje rabatów łączonych, nie wysyła maili do klientów”. Lista „poza zakresem” chroni budżet lepiej niż klauzula o pracach dodatkowych.
2. Środowisko. Wersja PrestaShop lub WooCommerce, wersja PHP, MySQL/MariaDB, wersja motywu i lista aktywnych modułów. Bez tego wykonawca wycenia na oko, a po wdrożeniu wychodzą konflikty z trzema istniejącymi wtyczkami.
3. Własność kodu. Kto ma prawa autorskie i czy dostaniesz repozytorium Git z historią commitów. Wpisz wprost: przekazanie repozytorium i dostępów następuje przy odbiorze, po zapłacie faktury.
4. Aktualizacje. Co się dzieje przy nowej wersji platformy — jest okres wsparcia (np. 12 miesięcy od odbioru) czy każda aktualizacja to osobna wycena. Ustal, kto testuje zgodność i na jakim środowisku.
5. SLA i utrzymanie. Czas reakcji na zgłoszenie (np. 4 h w dni robocze, 24 h w weekend), czas naprawy, stawka godzinowa poza gwarancją, miesięczny abonament i jego zakres.
6. Backup, rollback, awaria. Kto robi kopię przed wdrożeniem, gdzie leży i w ile minut wracacie do poprzedniej wersji. Minimalny punkt rollback to kopia bazy plus kopia plików plus snapshot serwera.
Wersje i wymagania techniczne sprawdzaj w dokumentacji dla deweloperów PrestaShop, a nie w tym, co „kiedyś działało na innym sklepie”. Ten sam zestaw pytań stosujemy niezależnie od skali — zobacz, jak wygląda organizacja pracy przy modułach i wtyczkach w Biłgoraju.
Praca zdalna czy lokalnie? Dla jakości kodu nie ma to znaczenia. Liczy się dostęp do repozytorium, środowisko testowe i kontakt z osobą, która faktycznie pisze moduł. Mit „musi być z miasta, bo wtedy przyjedzie” upada przy pierwszej pilnej aktualizacji: ktoś ma 3 dni na reakcję, dojazd zajmuje 2 godziny i nikt nie przyjeżdża.
Co ma realne znaczenie: rozmowa bezpośrednio z deweloperem, a nie przez handlowca. Każde przekazanie briefu przez pośrednika to kolejne miejsce, w którym ginie szczegół — „rabat od 500 zł” zamienia się w „rabat 500 zł”, a „wysyłka tylko kurierem” w „wysyłka według cennika”. Krótsza droga to jedna rozmowa techniczna, jeden dokument z zakresem i jedna osoba odpowiedzialna za wdrożenie.
Opieka po wdrożeniu: zamiast zapewnień „będziemy dzwonić i sprawdzać”, wpisz do umowy SLA z liczbami. Cztery pozycje wystarczą — czas reakcji, czas naprawy, kanał zgłoszeń (mail plus numer telefonu) oraz miesięczny abonament z listą tego, co jest w środku, a co płatne osobno.
Punkt odniesienia dla porównania ofert: zobacz, jak wygląda organizacja pracy przy niestandardowych modułach i wtyczkach w Lublinie, przy modułach i wtyczkach w Bełżcu oraz przy modułach i wtyczkach we Frampolu. Różnice dotyczą skali sklepu i długości listy integracji, nie samego procesu.
Praktyczna zasada na koniec: jeśli jedna oferta jest o 30–40% tańsza od pozostałych i nie zawiera repozytorium, środowiska staging ani SLA, tę różnicę dopłacisz przy pierwszej aktualizacji platformy.
Brief rozpisany w mailach i na spotkaniach, bez jednego dokumentu z kryteriami akceptacji
Jak wykryć: Wykonawca drugi raz pyta o to samo, a przy odbiorze każda strona inaczej rozumie zakres
Jak naprawić: Zbierz zakres w jednym pliku: lista funkcji, oczekiwane zachowania, przykładowe dane i definicja „gotowe”. Podpisany brief dołącz jako załącznik do umowy.
Brak praw do kodu i brak dostępu do repozytorium
Jak wykryć: Pytasz o repozytorium, a słyszysz: „kod jest na naszym serwerze, przekażemy, jak będzie potrzeba”
Jak naprawić: W umowie zapisz przeniesienie autorskich praw majątkowych lub licencję oraz dostęp do repozytorium po zapłacie. Kod trzymaj u siebie, nie tylko u wykonawcy.
Testowanie nowych funkcji na produkcji, bez środowiska testowego
Jak wykryć: Pierwszy test wysyłki, płatności albo synchronizacji stanów robisz na prawdziwych zamówieniach klientów
Jak naprawić: Postaw staging z kopią danych i osobnymi kluczami API. Na produkcję wdrażaj dopiero po testach integracyjnych.
Wdrożenie bez kopii zapasowej i możliwości rollbacku
Jak wykryć: Nie wiesz, jak szybko przywrócić poprzednią wersję modułu i bazy, jeśli coś padnie w trakcie
Jak naprawić: Zrób pełny backup plików i bazy, zaplanuj okno wdrożenia poza szczytem sprzedaży i przygotuj procedurę cofnięcia: poprzednia wersja kodu plus restore bazy.
Liczenie tylko kosztu wdrożenia, bez kosztu utrzymania
Jak wykryć: Po roku okazuje się, że aktualizacja sklepu łamie moduł, a nikt nie ma czasu tego naprawić
Jak naprawić: Policz z góry aktualizacje platformy i PHP, monitoring, poprawki po zmianach API kuriera. Ustal budżet utrzymania na najbliższe 12 miesięcy.
Klucze API i dane klientów trzymane w kodzie lub w plikach na serwerze
Jak wykryć: Token do ERP albo kuriera widzisz w repozytorium lub w logach w postaci jawnej
Jak naprawić: Trzymaj sekrety w zmiennych środowiskowych lub pliku poza repozytorium, rotuj klucze i ograniczaj uprawnienia kont integracyjnych. Logi czyść z danych osobowych.
Niestandardowe moduły i wtyczki w Hrubieszowie i okolicy mają sens wtedy, gdy gotowe rozwiązania wymagają stałej ręcznej obsługi albo blokują integracje z ERP i kurierami. Największe koszty nie wynikają z kodu, a z braku briefu, testów i planu utrzymania. Uczciwa wycena to widełki godzinowe z listą założeń, a nie sztywny cennik bez zakresu. Kod, repozytorium i dokumentacja powinny po wdrożeniu należeć do Ciebie.
Moduł PrestaShop to paczka instalowana w sklepie, która podłącza się do hooków platformy i zwykle ma własny panel konfiguracji w back office. Wtyczka WooCommerce działa w WordPressie i korzysta z hooków oraz filtrów WordPressa, często z własnym REST API. Różnice widać w strukturze kodu, sposobie aktualizacji i ryzyku konfliktów z innymi rozszerzeniami — punkt wyjścia to dokumentacja dla deweloperów PrestaShop i dokumentacja WooCommerce.
Stawki rynkowe mieszczą się zwykle w przedziale 150–300 zł/h netto, zależnie od specjalizacji. Prosty moduł to zwykle 8–20 godzin, czyli około 1500–5000 zł netto. Integracja z ERP lub kurierami to typowo 40–120 godzin, czyli 6000–25000 zł netto. Kwota rośnie przy braku dokumentacji API, nietypowych statusach zamówień, wielojęzyczności i wielosklepowości.
Gotowa wtyczka wystarcza, gdy proces jest standardowy: zwykłe zamówienia detaliczne, jedna metoda wysyłki, jedna waluta, brak integracji z systemem księgowym. Custom ma sens, gdy pojawiają się indywidualne ceny B2B, nietypowa logika wysyłki albo synchronizacja stanów i zamówień z ERP. Granica jest praktyczna: jeśli każde nietypowe zamówienie wymaga ręcznej poprawki, koszt obsługi rośnie szybciej niż koszt wdrożenia. O porządkowaniu takiej pracy piszemy też w materiałach dla Lublina i Biłgoraja.
Zapisz w umowie prawa do kodu oraz obowiązek przekazania repozytorium i dokumentacji po zakończeniu prac. Kod trzymaj w swoim repozytorium, a nie wyłącznie na serwerze wykonawcy. Unikaj rozwiązań opartych na zamkniętych licencjach, których nie da się przenieść. Warto też ustalić, kto przejmie utrzymanie, gdybyś zmienił wykonawcę.
Może, jeśli dokłada ciężkie zapytania SQL na każde wejście na stronę albo odpytuje API zewnętrzne w trakcie wyświetlania katalogu. Problem rozwiązuje się na etapie projektu: cache, zapytania wsadowe, kolejkowanie zadań w tle i indeksy w bazie. Jeśli integracja wymaga setek operacji dziennie, przenieś je do kolejki i pracownika cron. Po wdrożeniu porównaj czasy odpowiedzi i Core Web Vitals przed i po zmianie.
Testuj na środowisku testowym z danymi, które przypominają produkcję: zamówienia z wieloma paczkami, adresy zagraniczne, nietypowe wagi. Sprawdź mapowanie statusów w obie strony — czy status z ERP nie nadpisuje zamówienia już wysłanego. Przypadek braku odpowiedzi API przećwicz celowo: zamówienie nie może zniknąć ani zostać zdublowane. Po testach uruchom integrację na ograniczonej grupie zamówień przed pełnym włączeniem.
Opis funkcji, lista hooków i miejsc w kodzie, sposób konfiguracji panelu, lista zmiennych środowiskowych oraz procedura aktualizacji i rollbacku. Do tego kontakt do wsparcia i informacja, które API zewnętrzne są używane. Dokumentacja ma być zrozumiała dla osoby, która nie pisała tego kodu. Bez niej każde przejęcie projektu zaczyna się od płatnego audytu.
Jeśli planujesz niestandardowy moduł lub wtyczkę i chcesz przejść przez brief, wycenę i testy bez chaosu, napisz do nas — pomożemy ustawić zakres i kryteria odbioru. W DropDigital pracujemy na PrestaShop i WooCommerce, z integracjami ERP, płatności i kurierów.