Niestandardowe moduły i wtyczki we Frampolu i okolicach zamawia się zwykle w jednym momencie: gdy gotowe rozwiązania przestają wystarczać, proces jest nietypowy, a pracownicy codziennie robią te same rzeczy ręcznie. Ten materiał porządkuje decyzję — kiedy pisać custom, jak policzyć koszt całkowity i jak wygląda wdrożenie krok po kroku. Nie znajdziesz tu obietnic, że custom jest zawsze lepszy, bo nie jest. Znajdziesz kryteria, po których poznasz, że czas na własny moduł. Jeśli interesuje Cię szersze spojrzenie na organizację pracy wokół takich wdrożeń, zobacz Niestandardowe moduły i wtyczki Zamość: jak to zorganizować.
Moduł w PrestaShop to katalog w /modules/ z głównym plikiem PHP (np. mojmodul.php), klasą dziedziczącą po Module i metodą install(), która zakłada tabele w bazie. Moduł rejestruje się na hookach — hookDisplayHeader, hookActionCartSave, hookDisplayProductExtraContent — i może dokładać własne kontrolery frontowe oraz szablony Smarty (.tpl). Wtyczka WooCommerce to plik PHP w /wp-content/plugins/ z nagłówkiem Plugin Name:, podpinający się do WordPressa przez add_action() i add_filter(), korzystający z REST API i własnych tabel przez $wpdb. W obu przypadkach to kod działający wewnątrz sklepu, a nie osobny serwis.
Funkcje, które najczęściej trafiają do customu:
Gotowa wtyczka przestaje wystarczać w czterech sytuacjach: proces jest nietypowy (np. dwa cenniki dla tego samego klienta zależnie od kanału), wtyczka uderza w limit API (np. 60 zapytań na minutę u przewoźnika, brak webhooków), brakuje wsparcia dla polskich integracji (krajowe systemy księgowe rzadko mają gotowe łączniki), brakuje hooka lub pola w bazie — a jedyne wyjście to nadpisanie plików wtyczki, które kasuje się przy pierwszej aktualizacji.
Na koniec rozróżnienie, które myli się najczęściej: moduł to nie szablon. Szablon (theme) odpowiada za wygląd i układ, moduł za logikę. To także nie to samo co integracja zewnętrzna — integracja to kontrakt z obcym systemem: mapowanie pól, obsługa błędów, limity. Można ją zrealizować w module, ale moduł może istnieć bez żadnej integracji. Strukturę modułów opisuje dokumentacja dla deweloperów PrestaShop.
Nie ma jednego progu, od którego trzeba pisać custom. W praktyce decyzję podejmuje się po pięciu sygnałach — jeśli widzisz u siebie trzy lub więcej, warto policzyć.
Przykład: hurtownia z okolic Frampola i Zamościa sprzedająca B2B. Ma 300 klientów, każdy z rabatem zależnym od grupy towarowej, a zamówienia powyżej 5000 zł netto wymagają zatwierdzenia przez opiekuna handlowego. Gotowy moduł B2B obsługuje jedną grupę rabatową i nie zna pojęcia zatwierdzania — handlowiec przelicza więc każdy koszyk ręcznie. Tu custom jest uzasadniony. Jak ułożyć taki projekt — kolejność prac, kto za co odpowiada, jak przekazać wymagania — opisujemy szerzej w materiale o niestandardowych modułach i wtyczkach Zamość: jak to zorganizować.
Zastrzeżenie: nie każdy problem wymaga customu. Czasem wystarczy konfiguracja — reguły cenowe katalogowe i koszyka w PrestaShop, grupy klientów, opcja w wtyczce premium, której nie zauważyłeś. Zanim zamówisz kod, sprawdź, czy problem jest w narzędziu, czy w procesie.
Trzy warianty, trzy różne rachunki. Poniżej zestawienie oparte na projektach, które robimy na co dzień.
Widełki: prosta wtyczka premium to 200–600 zł/rok. Custom prosty (jedna funkcja, jeden ekran w panelu) to 2–4 tys. zł. Custom średni — kilka ekranów, logika ról, integracja — 5–10 tys. zł. Do customu dolicz utrzymanie: licz 10–20% wartości wdrożenia rocznie, jeśli chcesz mieć kogoś, kto reaguje na aktualizację PrestaShop czy WooCommerce.
TCO to nie tylko subskrypcje. Wliczasz cztery pozycje:
Rekomendacja jest prosta: custom ma sens, gdy oszczędza minimum kilka godzin pracy miesięcznie albo odblokowuje funkcję krytyczną dla sprzedaży — konfigurator, bez którego klient nie złoży zamówienia, albo integrację z ERP, która eliminuje ręczne przepisywanie. Jeśli oszczędność to 2 godziny miesięcznie, a wdrożenie kosztuje 6000 zł, zwrot liczysz w latach — wtedy lepiej zostać przy konfiguracji gotowych narzędzi. Przy wdrożeniu połączonym z migracją sklepu warto zaplanować jedno i drugie razem; kolejność prac opisujemy w materiale o wdrożeniach i migracjach PrestaShop Frampol.
| Kryterium | Gotowa wtyczka | Moduł premium | Custom na miarę |
|---|---|---|---|
| Czas wdrożenia | 1–3 dni | 1–2 tygodnie z konfiguracją | 3–8 tygodni |
| Koszt początkowy | 0–300 zł | 300–1500 zł (licencja) | 2–4 tys. zł (prosty), 5–10 tys. zł (średni) |
| Koszt roczny | 0–600 zł | 200–600 zł za licencję | 10–20% wartości wdrożenia na utrzymanie |
| Elastyczność | brak — działasz tak, jak przewidział autor | konfiguracja w panelu, bez zmian w kodzie | pełna — kod pisany pod Twój proces |
| Aktualizacje | zależne od autora, część wtyczek porzucona | zwykle regularne w ramach licencji | po Twojej stronie lub w umowie z agencją |
| Ryzyko konfliktów | wysokie przy 10+ wtyczkach | średnie | niskie — jeden moduł, jasny zakres |
Wdrożenie customu nie musi być czarną skrzynką. Proces jest przewidywalny, bo każdy krok kończy się plikiem, decyzją albo działającą funkcją.
/modules/, WordPress: /wp-content/plugins/.Prosty lub średni moduł to zwykle 2–6 tygodni. Integracje z ERP albo kilkoma kurierami wydłużają ten czas, bo dochodzą zależności po stronie systemów zewnętrznych, na które nie mamy wpływu. Jeśli pracujesz na PrestaShop, praktyczne tło znajdziesz w materiale o wdrożeniach i migracjach PrestaShop Frampol.
| Krok | Typowy czas | Efekt |
|---|---|---|
| Analiza i brief | 2–5 dni | Dokument z listą funkcji i przypadków brzegowych |
| Wycena godzinowa | 1–2 dni | Rozbicie na zadania z liczbą godzin |
| Prototyp | 2–5 dni | Makieta lub działający widok w panelu |
| Development | 1–4 tygodnie | Kod w repozytorium na gałęzi roboczej |
| Testy na staging | 2–5 dni | Lista błędów i scenariuszy sprawdzonych na kopii bazy |
| Wdrożenie produkcyjne | 1 dzień | Kopia zapasowa, wgranie, weryfikacja zamówień |
| Szkolenie i dokumentacja | 1–2 dni | Opis obsługi i nagranie wideo |
Najczęstsze pytanie brzmi: ile to kosztuje? Uczciwa odpowiedź: tyle, ile godzin pracy. Stawka za pracę programisty nad modułem PrestaShop lub wtyczką WordPress w Polsce to 120–250 zł netto za godzinę. Dolna granica dotyczy prostych zadań, górna — integracji i architektury, którą trzeba najpierw przemyśleć.
Liczba godzin zależy przede wszystkim od zakresu:
Co konkretnie podnosi koszt: liczba integracji (każda ma własną dokumentację, limity i swoje błędy), logika biznesowa (rabaty warunkowe, ceny zależne od klienta, nietypowe stany magazynowe), panel administracyjny (eksporty, uprawnienia, filtry), import danych (CSV, XML, API) oraz wielojęzyczność z wielowalutowością.
Zasada: wycena na podstawie liczby godzin, z rozbiciem na pozycje. Bez cennika „moduł od 2000 zł” i bez kosztów dopisywanych po fakcie. Jeśli w trakcie wychodzi coś spoza zakresu, dostajesz informację i decyzję: rozszerzamy czy nie. Taki sposób wyceny wymusza porządek w briefie — więcej o tym w materiale o organizacji pracy przy niestandardowych modułach w Zamościu.
| Typ modułu | Liczba godzin | Koszt netto przy 150 zł/h |
|---|---|---|
| Prosty (jedna funkcja, bez API) | 20–40 h | 3 000–6 000 zł |
| Średni (logika + panel + 1–2 integracje) | 50–120 h | 7 500–18 000 zł |
| Rozbudowany (wiele integracji, synchronizacja) | 120–250 h | 18 000–37 500 zł |
Trzy obszary generują najwięcej niestandardowych modułów: kurierzy, płatności i ERP.
Kurierzy: InPost, DPD, DHL. Zakres to generowanie etykiety z panelu zamówienia, zwrot numeru przesyłki, aktualizacja statusu z webhooków lub zapytań cyklicznych i mapowanie usług (paczkomat, kurier, przesyłka pobraniowa). Pułapka: mapowanie własnych metod dostawy na usługi kuriera. Jeśli w sklepie masz 12 metod, a kurier przyjmuje 6 kodów, ktoś musi ustalić mapę. Bez tego etykieta nie wyjdzie, dopiero przy konkretnym zamówieniu.
Płatności: Przelewy24, PayU, BLIK. Sama bramka to najczęściej wtyczka z rynku. Custom startuje przy nietypowej kolejności zdarzeń: rezerwacja stanu przed potwierdzeniem, częściowe zwroty, łączenie zamówień, własne statusy po webhooku. Webhook bez obsługi ponowień to gubione zamówienia. Jeśli ten sam webhook przyjdzie dwa razy, moduł musi być idempotentny — inaczej zdublujesz status albo wysyłkę.
ERP: Subiekt, Comarch Optima, ERPNext. Mapowanie pól to około 20% pracy. Reszta to synchronizacja stanów, kolejki i ponowienia, gdy ERP jest niedostępny, oraz obsługa konfliktów, gdy produkt zmienił się po obu stronach. Synchronizacja „na żądanie” przy 2000 zamówień miesięcznie przestaje działać — potrzebny harmonogram i log.
Wspólny wymóg: log każdego wywołania i alert przy błędzie. Bez tego nie wiadomo, ile zamówień nie dotarło. Przy PrestaShop punkty zaczepienia opisuje dokumentacja dla deweloperów PrestaShop — warto zajrzeć przed pisaniem briefu.
| Obszar | Co obejmuje custom | Typowa pułapka |
|---|---|---|
| Kurierzy | Etykiety, statusy, mapowanie usług | 12 metod dostawy w sklepie vs 6 kodów kuriera |
| Płatności | Webhooki, statusy, zwroty, rezerwacja stanu | Brak idempotencji przy powtórzonym webhooku |
| ERP | Mapowanie pól, stany, kolejki, ponowienia | Synchronizacja na żądanie przy dużym wolumenie |
Każdy niestandardowy moduł to kod, który ktoś musi utrzymywać także trzy lata po wdrożeniu. WordPress wypuszcza duże wersje kilka razy w roku, PrestaShop regularnie aktualizuje linie 1.7 i 8.x, a hostingi podnoszą wersje PHP automatycznie. PHP 8.1 traci wsparcie bezpieczeństwa z końcem 2025 r. Moduł korzystający z funkcji usuniętej z nowszego PHP nie padnie w dniu wdrożenia, tylko w dniu aktualizacji serwera — zwykle w środku sezonu.
Konflikty z innymi wtyczkami najczęściej wychodzą po dołożeniu kolejnej wtyczki, nie od razu. Dwie wtyczki podpinają się pod ten sam hook, nadpisują ten sam szablon albo ładują różne wersje tej samej biblioteki JS. Metoda jest jedna: pełna kopia na staging (pliki i baza), wyłączanie wtyczek po jednej i sprawdzenie, po której znika problem. W WordPressie włącz WP_DEBUG i WP_DEBUG_LOG, w PrestaShop _PS_MODE_DEV_ — komunikaty błędów PHP lądują w debug.log i katalogu /var/logs, nie na ekranie.
Budżet utrzymania policz od razu, przed podpisaniem umowy: przy prostym module to kilka godzin rocznie na aktualizacje i przegląd logów, przy integracji z zewnętrznym API więcej — dostawca potrafi zmienić format odpowiedzi bez ostrzeżenia. Część tych ryzyk pokrywa się z tym, co opisujemy przy okazji wdrożeń i migracji PrestaShop we Frampolu. Jeśli chcesz ocenić, czy wykonawca pracuje na natywnych mechanizmach, czy nadpisuje rdzeń, punktem startu jest dokumentacja deweloperska PrestaShop.
| Pułapka | Objaw | Zabezpieczenie |
|---|---|---|
| Aktualizacja PHP na hostingu | biały ekran lub błąd 500 po zmianie wersji | test na staging przed podniesieniem wersji, przegląd logów modułu |
| Konflikt hooków i szablonów | zmiany widoczne tylko przy wyłączonej innej wtyczce | wyłączanie wtyczek po jednej, priorytet hooka, nadpisania w motycie child |
| Nieescapowane wyjście | nietypowy kod w źródle strony | esc_html, esc_attr, htmlspecialchars na każdym wyjściu danych |
| Sklejane zapytania SQL | nietypowe wpisy w logu bazy | prepared statements i parametry zapytania |
| Brak monitoringu | o awarii dowiadujesz się od klienta | alerty na 500/404 i slow query log z powiadomieniem |
Zamówienie modułu bez briefu kończy się zwykle modułem, który prawie robi to, o co chodziło. Brief nie musi mieć 20 stron: opis procesu krok po kroku, przykładowe dane wejściowe i kryteria akceptacji. Co konkretnie ma się stać, gdy stan magazynowy spadnie poniżej 5 sztuk? Kto dostaje maila? Co widzi pracownik, gdy integracja nie odpowiada? To zdania, które później rozstrzygają spór o odbiór.
Przed podpisaniem umowy ustal dwie rzeczy: kto jest właścicielem kodu i jak wygląda wyjście z współpracy. Kod bez szyfrowania (ionCube, Zend) w repozytorium Git, do którego masz dostęp, plus dokumentacja techniczna: struktura plików, hooki, tabele w bazie, wymagane wersje PHP i bibliotek.
Po odbiorze sprawdź, czy moduł działa po wyłączeniu innej wtyczki, czy logi są czytelne i czy dokumentacja zgadza się ze stanem repozytorium. Kolejność prac wokół takich wdrożeń, razem z podziałem na etapy, opisujemy w materiale o porządku pracy przy niestandardowych modułach i wtyczkach.
| Etap | Co sprawdzić | Jak to zweryfikować |
|---|---|---|
| Przed umową | Kryteria akceptacji | lista punktów typu: zamówienie powyżej 500 zł tworzy dokument w programie księgowym |
| Przed umową | Własność kodu i repozytorium | poproś o dostęp do repo i sprawdź historię commitów |
| Przed umową | SLA i czas reakcji | zapis w umowie: co jest błędem blokującym, a co drobną poprawką |
| Odbiór | Testy na staging | scenariusze błędów: brak połączenia z API, duplikat zamówienia, pusty plik importu |
| Odbiór | Plan wycofania | sprawdź backup i punkt przywrócenia przed włączeniem na produkcji |
| Odbiór | Dokumentacja i szkolenie | nagranie z instruktażu plus opis obsługi w panelu |
Na pytanie ile trwa wdrożenie nie ma jednej odpowiedzi bez liczby godzin. Dlatego wyceniamy w godzinach, a nie w dniach: termin to liczba godzin podzielona przez dostępność zespołu, plus czas po Twojej stronie — akceptacja zakresu, dane testowe, decyzje o tym, co ma się dziać przy błędzie. Jeśli brief jest gotowy, pierwszy działający prototyp niestandardowego modułu zwykle można obejrzeć przed zakończeniem całości, a nie dopiero na koniec.
Opieka po wdrożeniu działa w modelu pakietów godzinowych: kupujesz blok godzin i wykorzystujesz go na aktualizacje, poprawki i rozwój funkcji. Konkretny wariant — czy niewykorzystane godziny przechodzą na kolejny okres — ustalamy w umowie, razem z SLA i czasem reakcji liczonym w godzinach roboczych (poniedziałek–piątek). Zgłoszenie trafia bezpośrednio do dewelopera, który pisał moduł: bez pośredników i bez przepisywania zgłoszenia przez kolejne osoby.
Działamy z Zamościa i Lublina, obsługujemy też Frampol i okolice — praca zdalna działa tak samo dobrze jak dojazd, a przy projektach z integracjami chętnie spotykamy się na miejscu na etapie analizy. Niestandardowe moduły i wtyczki we Frampolu zamawia się zwykle wtedy, gdy proces jest nietypowy, a ludzie robią te same rzeczy ręcznie — dlatego zaczynamy od bezpłatnej wstępnej analizy potrzeb i wstępnej wyceny w godzinach. Napisz do nas, opisz proces i wskaż, co dziś robisz ręcznie; wycenę dostaniesz przed pierwszym commitem.
| Zakres opieki | Co obejmuje |
|---|---|
| Aktualizacje i zgodność | PHP, WordPress lub PrestaShop, biblioteki — test na staging przed produkcją |
| Monitoring i reakcja | błędy 500/404, wydajność bazy, czas odpowiedzi, przegląd logów |
| Rozwój modułu | nowe funkcje i integracje w ramach pakietu godzinowego |
| Wsparcie merytoryczne | konsultacja przy zmianach w procesie, zanim zlecasz kodowanie |
Zamawianie modułu bez briefu i bez opisu procesu. Wykonawca dostaje jedno zdanie: „potrzebuję koszyka B2B”, a potem okazuje się, że chodziło o progi cenowe, zatwierdzanie zamówień i faktury zbiorcze.
Jak wykryć: Sprawdź, czy potrafisz opisać proces w 10 krokach i wskazać, kto w firmie wykonuje każdy z nich. Jeśli nie — briefu jeszcze nie ma.
Jak naprawić: Zrób jednostronicowy opis procesu: kroki, osoby, dokumenty, wyjątki. Dopiero na tej podstawie zamawiaj analizę i wycenę.
Traktowanie wyceny godzinowej jako „droższej” od zryczałtowanej ceny pakietu. Stała kwota bez zakresu prawie zawsze kończy się dopłatami albo niedokończonym modułem.
Jak wykryć: Zapytaj wykonawcę, co dokładnie wchodzi w cenę i ile godzin założono. Brak odpowiedzi w liczbach to sygnał ostrzegawczy.
Jak naprawić: Wymagaj wyceny w rozbiciu na etapy i godziny. Zapisz w umowie, jak rozliczane są prace wykraczające poza zakres.
Wdrożenie bezpośrednio na produkcji, bez środowiska testowego i kopii zapasowej. Jeden błąd w koszyku oznacza wstrzymaną sprzedaż.
Jak wykryć: Sprawdź, czy istnieje staging z aktualną kopią bazy i czy wdrożenie ma zaplanowane okno serwisowe.
Jak naprawić: Ustal stałą zasadę: testy na staging, kopia bazy i plików przed każdym wdrożeniem, plan wycofania zmian (rollback).
Zakup gotowej wtyczki premium „na wszelki wypadek”, bez sprawdzenia limitów licencji, wsparcia dla polskich integracji i częstotliwości aktualizacji.
Jak wykryć: Przeczytaj opis licencji i historię zmian. Sprawdź datę ostatniej aktualizacji i czy wtyczka obsługuje polskie bramki, kurierów i systemy księgowe.
Jak naprawić: Zrób krótką listę wymagań i porównaj ją z dokumentacją wtyczki. Jeśli brakuje dwóch i więcej punktów, policz koszt obejść — często wyjdzie więcej niż custom.
Pomijanie kosztu utrzymania. Nikt nie ustala, kto zaktualizuje moduł po wejściu nowej wersji PrestaShop albo WooCommerce.
Jak wykryć: Zadaj pytanie: co się stanie z tym modułem po dużej aktualizacji platformy i kto za to zapłaci? Jeśli nie ma odpowiedzi, ryzyko jest nieprzypisane.
Jak naprawić: Ustal z wykonawcą roczny budżet na utrzymanie i zapisz w umowie czas reakcji przy błędach po aktualizacji.
Odbiór kodu bez dokumentacji, bez repozytorium i bez dostępu do serwera. Firma zostaje uzależniona od jednej osoby, która może zniknąć z rynku.
Jak wykryć: Sprawdź, czy masz dostęp do repozytorium, czy znasz nazwy i wersje zależności oraz czy istnieje opis instalacji.
Jak naprawić: Wymagaj przekazania kodu w repozytorium, krótkiej dokumentacji technicznej i szkolenia dla osoby, która będzie to utrzymywać.
Custom moduł ma sens wtedy, gdy oszczędza minimum kilka godzin pracy miesięcznie albo odblokowuje funkcję krytyczną dla sprzedaży. Wcześniej warto sprawdzić konfigurację, uproszczenie procesu i koszt całkowity gotowych wtyczek razem z obejściami. Liczy się nie cena początkowa, a suma subskrypcji, czasu programisty, przestojów i ręcznej pracy. Porządek w briefie i repozytorium jest równie ważny jak sam kod. Jeśli wdrażasz przy tym PrestaShop, pomocne będzie też zaplecze z wdrożeń i migracji PrestaShop Frampol.
Przy stawce 120–250 zł netto za godzinę prosty moduł to zwykle 20–40 godzin pracy, średni 50–120 godzin, a rozbudowany z integracjami 120–250 godzin. W praktyce daje to od około 2–4 tys. zł za proste rozwiązanie do kilkudziesięciu tysięcy złotych przy systemach z wieloma integracjami. Na cenę wpływa liczba integracji, złożoność logiki biznesowej, zakres panelu administracyjnego, import danych i wielojęzyczność.
Dla prostego i średniego modułu realny czas to 2–6 tygodni, licząc od briefu do przekazania kodu. Przy integracjach z ERP, magazynem czy systemem księgowym dochodzi czas na uzgodnienia po stronie dostawców i testy na danych produkcyjnych. Największym opóźnieniem nie jest programowanie, ale brak decyzji po stronie zamawiającego.
Wystarczy, dopóki proces jest typowy. Gotowe rozwiązania przestają wystarczać przy nietypowych progach cenowych, zatwierdzaniu zamówień, limitach API i braku wsparcia dla polskich integracji. Zanim zamówisz custom, sprawdź, czy problemu nie rozwiąże lepsza konfiguracja albo uproszczenie procesu — czasem to wystarczy.
Może, jeśli nikt go nie utrzymuje. Dlatego moduły piszemy zgodnie z wytycznymi z dokumentacji dla deweloperów PrestaShop, a w umowie ustalamy czas reakcji po aktualizacji platformy. Każda duża aktualizacja wymaga testów na staging, a nie sprawdzenia „na żywym” sklepie.
Nie, jeśli jest napisany oszczędnie: bez zbędnych zapytań do bazy, z cache tam, gdzie to ma sens. Wydajność warto mierzyć na stagingu przed wdrożeniem, korzystając z metryk opisanych w Web Vitals. Wolna strona to zwykle efekt wielu wtyczek i ciężkiego szablonu, a nie jednego dopisanego modułu.
Tak i to najbezpieczniejszy scenariusz. Zaczynamy od jednej funkcji, która oszczędza najwięcej czasu lub odblokowuje sprzedaż, a kolejne elementy dokładamy w osobnych etapach. Dzięki temu budżet jest rozłożony, a każdy etap kończy się działającym rozwiązaniem, a nie niedokończonym projektem.
Kod powinien trafić do repozytorium zamawiającego wraz z dokumentacją i danymi dostępowymi. Zapisz to w umowie przed startem prac. Brak dostępu do repozytorium to najczęstszy powód, dla którego firma po dwóch latach płaci drugi raz za to samo.
Jeśli nie wiesz, czy w Twoim przypadku wystarczy konfiguracja, czy potrzebny jest moduł na miarę, opisz nam swój proces — powiemy wprost, co ma sens. Wyceniamy na podstawie liczby godzin, bez ukrytych kosztów.