„Odbiór paczek nigdy nie był tak prosty” to nie slogan, a opis konkretnej zmiany po stronie klienta i sklepu. Klient wybiera paczkomat na mapie w kilkanaście sekund, a sklep musi tę decyzję przyjąć, zapisać w zamówieniu, przekazać przewoźnikowi i utrzymać status w obiegu. Poniżej rozkładamy to na części: co wybrać, jak wdrożyć w PrestaShop i WooCommerce, ile to kosztuje i gdzie najczęściej się to psuje. Bez obiecywania cudów – z czasami, stawkami i punktami kontrolnymi.
Zacznijmy od definicji, bo w rozmowach z klientami te trzy pojęcia wciąż się mieszają:
Skala rynku: InPost w raportach okresowych podaje ponad 24 tys. Paczkomatów w Polsce i największy udział w rynku przesyłek e-commerce. To dane operatora, nie niezależny audyt – zmieniają się co kwartał, więc przed planowaniem budżetu dostaw sięgnij po najnowszy raport kwartalny InPost oraz dane UOKiK. Praktycznie ważniejszy jest jednak nawyk klienta: dla większości kupujących w Polsce odbiór w automacie jest dziś wyborem domyślnym, a nie alternatywą dla kuriera.
Co to oznacza dla sklepu? Dwie mierzalne rzeczy. Pierwsza: rezygnacja z koszyka. Z badań Baymard Institute wynika, że średnio ok. 70% koszyków nie kończy się zakupem, a koszty dostawy i brak wygodnej metody odbioru są w czołówce powodów. Jeśli jedyną opcją jest kurier pod adres, część klientów odpada już na etapie wyboru dostawy. Druga: powtórne zakupy. Klient, który raz zapisał swój paczkomat, przy kolejnym zamówieniu szuka go w tym samym miejscu checkoutu. Jeśli musi wybierać od nowa, a mapa się nie wczytuje – rośnie ryzyko porzucenia.
Przykład: klient wypełnia formularz na telefonie w tramwanie. Wybór paczkomatu przy dobrze zrobionym checkoutcie to 10–15 sekund – pole, kod pocztowy lub geolokalizacja, klik w pinezkę. Wariant kurierski to wybór okna dostawy i planowanie dnia wokół „między 9 a 17”. Przy dwóch porównywalnych sklepach klient kończy zakup tam, gdzie odbiór jest przewidywalny.
Sklep MŚP nie musi mieć wszystkiego. Musi mieć co najmniej dwie metody: paczkomat i kuriera. Reszta to kwestia kosztu obsługi i tego, gdzie realnie są Twoi klienci.
Kryteria doboru w kolejności: 1) kody pocztowe z ostatnich 500 zamówień – gdzie faktycznie są klienci, 2) gabaryty paczek, 3) SLA, które obiecujesz na karcie produktu, 4) koszt na przesyłkę, 5) koszt wdrożenia integracji z PrestaShop i WooCommerce. Dwie metody pokrywają zwykle ok. 90% zamówień.
Uwaga o kwotach w tabeli: to orientacyjne widełki netto dla wolumenu 100–500 przesyłek miesięcznie. Twój cennik zależy od negocjacji i wolumenu – traktuj tabelę jako listę pytań do przewoźnika, nie jako obowiązujący cennik. Pułapka: dodanie metody, której nie obsłużysz operacyjnie. „Odbiór w punkcie X” bez umowy i bez etykiety oznacza ręczną wysyłkę i opóźnienia.
| Metoda | Koszt netto (orientacyjnie, 100–500 przesyłek/mies.) | SLA | Zasięg | Kiedy się opłaca |
|---|---|---|---|---|
| InPost Paczkomaty 24/7 | ok. 10–14 zł | 1–2 dni robocze | największa sieć automatów w Polsce – aktualną liczbę potwierdź w raportach InPost | domyślna metoda dla e-commerce |
| Punkty InPost | zwykle zbliżony do paczkomatu | 1–2 dni robocze | punkty w mniejszych miejscowościach | gdy w okolicy klienta nie ma automatu |
| DPD Pickup | ok. 10–14 zł | 1–2 dni robocze | automaty i punkty DPD – liczbę potwierdź u przewoźnika | alternatywa dla InPost, wysyłki zagraniczne |
| DHL POP | ok. 11–15 zł | 1–2 dni robocze | punkty i automaty DHL – liczbę potwierdź u przewoźnika | gdy masz już umowę DHL |
| Kurier standard | ok. 13–17 zł | 1 dzień roboczy (kraj) | cała Polska, pod adres | duże, ciężkie i cenne paczki |
| Click & collect | 0 zł u przewoźnika, koszt = czas obsługi | zależny od Ciebie (np. 2–4 h) | tylko Twoje lokalizacje | sklepy z oddziałem i lokalnym ruchem |
Kolejność działań, która w praktyce nie wymaga cofania się do początku:
hookDisplayBeforeCarrier (mapa), hookActionValidateOrder (zapis punktu) i hookDisplayOrderDetail (punkt w podsumowaniu). Sygnatury i listę hooków masz w dokumentacji dla deweloperów PrestaShop..php. Ustaw dane nadawcy, domyślne gabaryty i włączone usługi (Paczkomat 24/7, kurier, pobranie).var/logs. Testuj na zamówieniu próbnym i sprawdź, czy API zwraca 200, czy nie ma ponowień.Pułapka numer jeden: status „Gotowe do odbioru” nadawany ręcznie albo przez niesprawny webhook. Klient dostaje maila i idzie do paczkomatu, w którym przesyłki jeszcze nie ma – to najszybsza droga do zwrotu i reklamacji.
W WooCommerce masz dwie drogi. Pierwsza to oficjalna wtyczka przewoźnika – InPost, DPD i DHL publikują integracje w katalogu wtyczek WordPress i na WooCommerce Marketplace. Druga to własna integracja z API: ShipX (InPost), DPD WebAPI, DHL24. Wtyczka wystarcza, gdy masz standardowy cennik i jedno konto u przewoźnika. Własna integracja ma sens przy indywidualnych stawkach, kilku kontach albo nietypowym procesie magazynowym.
Konfigurację zaczynasz od stref wysyłki: WooCommerce → Ustawienia → Wysyłka → Strefy wysyłki. Dla Polski tworzysz osobną strefę i dodajesz metody: „Paczkomat InPost”, „Kurier DPD”, „Kurier DHL”. Klasy dostawy (WooCommerce → Ustawienia → Wysyłka → Klasy dostawy) przydają się, gdy część asortymentu nie może iść paczkomatem – płyny powyżej 100 ml, akumulatory, produkty dłuższe niż 64 cm. Bez przypisanej klasy klient zobaczy paczkomat dla produktu, który się nie zmieści, a zamówienie utknie na etapie nadania.
Mapa punktów musi działać w koszyku i w checkout. Uwaga na bloki: od WooCommerce 8.x checkout blokowy korzysta z innych hooków niż klasyczny shortcode [woocommerce_checkout]. Wtyczka pisana tylko pod shortcode potrafi się nie wyrenderować w bloku. Sprawdź to na kopii sklepu przed wdrożeniem, nie po. Wybrany punkt zapisuj jako meta zamówienia (np. klucz _shipping_point_code) – bez tego nie trafi na etykietę.
Waga i wymiary produktów to najczęstsza przyczyna błędów. API InPost wymaga gabarytu (patrz tabela). Jeśli produkt nie ma uzupełnionej wagi i wymiarów, wtyczka wpisze wartość domyślną albo API odrzuci etykietę. Przykład: walizka 12 kg w kartonie 45×35×25 cm to gabaryt C, buty 1,2 kg – gabaryt A. Bez danych nadajesz za dużą etykietę i przepłacasz. Etykiety generujesz hurtem (PDF dla 50 zamówień), numer przesyłki zapisujesz w meta i wstawiasz do maila „wysłane”. Podstawy stref i klas opisuje dokumentacja WooCommerce.
| Gabaryt | Maks. wymiary | Maks. waga |
|---|---|---|
| A | 8 × 38 × 64 cm | 25 kg |
| B | 19 × 38 × 64 cm | 25 kg |
| C | 41 × 38 × 64 cm | 25 kg |
Domyślne statusy WooCommerce to wc-pending, wc-processing, wc-on-hold, wc-completed, wc-cancelled i wc-refunded. Brakuje najważniejszego dla paczkomatów: „gotowe do odbioru”. Dodajesz go własnym statusem przez wc_register_order_status i register_post_status – np. wc-awaiting-pickup. Mapowanie wygląda tak jak w tabeli poniżej.
Webhooki to szybsza droga niż odpytywanie. Część przewoźników pozwala zasubskrybować zdarzenia przesyłki (ShipX ma webhooki) i wtedy status wpada do sklepu w kilka sekund. Tam, gdzie webhooków nie ma, ustawiasz cron co 15–30 minut. Dwie pułapki. Pierwsza: WP-Cron odpala się tylko przy ruchu na stronie, więc o 3 w nocy sklep bez odwiedzin nie zaktualizuje statusów – wyłącz go (DISABLE_WP_CRON) i podłącz prawdziwy cron systemowy. Druga: rate limit API. Nie odpytuj co minutę o 500 przesyłek, bo po kilku godzinach przewoźnik zablokuje Ci dostęp.
Powiadomienia: e-mail z numerem przesyłki i linkiem do śledzenia idzie przy zmianie na „wysłane”, SMS przy „gotowe do odbioru”. Bramka SMS liczy kilka–kilkanaście groszy netto za wiadomość, więc wysyłaj SMS tylko na tym jednym statusie – na całej ścieżce zamówienia to zbędny koszt.
ERP: Subiekt GT/nexo wymienia dane przez Sferę lub pliki wymiany, Comarch ERP Optima/XL przez API albo bezpośrednio na bazie. Numer faktury wraca do meta zamówienia, a zwrot (wc-refunded) powinien automatycznie przywrócić stan magazynowy i wystawić korektę.
Kiedy to się opłaca? Policz ręczną obsługę. 25 zamówień dziennie × 2 minuty na przepisanie numeru i statusu to 50 minut dziennie, czyli około 20 godzin miesięcznie. Przy 5 zamówieniach dziennie automatyzacja nie zwróci się nigdy.
| Status w WooCommerce | Status u przewoźnika | Akcja automatyczna |
|---|---|---|
| wc-processing | przesyłka utworzona / nadana | e-mail z numerem i linkiem do śledzenia |
| wc-awaiting-pickup | gotowa do odbioru w punkcie | SMS z kodem odbioru |
| wc-completed | odebrana / doręczona | zamknięcie zamówienia, prośba o opinię |
| wc-refunded | zwrot w drodze / przyjęty | przywrócenie stanu magazynowego, korekta faktury |
Podaję widełki dla przeciętnego sklepu na WooCommerce lub PrestaShop, bez cennika z sufitu. Rozliczamy się godzinowo, stawka rynkowa to 120–250 zł/h netto, zależnie od specjalizacji.
Gotowy moduł (wtyczka przewoźnika plus mapa punktów): 4–8 godzin. W tym instalacja, konfiguracja stref i klas dostawy, podpięcie kluczy API, test etykiety i maila. Koszt: od 480 zł (4 h × 120 zł) do 2 000 zł (8 h × 250 zł).
Własny moduł lub niestandardowa integracja: 20–60 godzin, czyli 2 400–15 000 zł. Tu wchodzi nietypowa logika: wiele kont przewoźnika, wybór gabarytu po wymiarach koszyka, nadruk własnej etykiety, obsługa punktów spoza standardowej mapy.
Integracja z ERP (Subiekt, Comarch): 16–40 godzin, czyli 1 920–10 000 zł. Osobno licz eksport zamówień, import numerów przesyłek i obsługę zwrotów.
Wtyczki i licencje: 0–500 zł rocznie. Sporo integracji jest darmowych, płatne wersje to zwykle 100–500 zł/rok za sklep.
Ukryte koszty, o których nikt nie mówi na starcie:
Przykład: sklep z 40 zamówieniami dziennie, wdrożenie 8 h + 4 h testów = 12 h. Przy 180 zł/h to 2 160 zł netto, a wcześniej 2 h dziennie pracy ręcznej.
| Zakres | Czas | Koszt netto (120–250 zł/h) |
|---|---|---|
| Gotowy moduł | 4–8 h | 480–2 000 zł |
| Własny moduł lub niestandardowa integracja | 20–60 h | 2 400–15 000 zł |
| Integracja z ERP | 16–40 h | 1 920–10 000 zł |
| Licencje wtyczek | — | 0–500 zł/rok |
Większość awarii przy odbiorze paczek nie wynika z winy przewoźnika, a z tego, że sklep przestał pilnować integracji po wdrożeniu. Poniżej sześć pułapek, które widzimy najczęściej, i sposób, w jaki wykrywa się je, zanim zauważy je klient.
| Pułapka | Objaw w sklepie | Pierwsze sprawdzenie |
|---|---|---|
| Zmiana API / nieaktualna mapa | Klient wybiera punkt, którego nie ma na liście | Porównaj liczbę punktów z API i z pliku w sklepie |
| Złe wymiary i waga | Błąd walidacji przy generowaniu etykiety | Karta najcięższego i największego produktu |
| Brak webhooków | Klient nie dostaje statusu „gotowe do odbiór” | Log żądań przychodzących z ostatnich 24 h |
| Brak idempotencji | Dwie etykiety i dwie opłaty za jedno zamówienie | Ponowienie żądania dla tego samego zamówienia |
| Limity API | 429 i zamówienia bez etykiety po wysyłce mailingowej | Dziennik błędów i liczba żądań na minutę |
| RODO i zwroty | Brak podstawy do przekazania danych przewoźnikowi | Umowa powierzenia i zakres wysyłanych pól |
Lista jest do odklikania. Każdy punkt ma być sprawdzony i podpisany przez osobę, która go robiła – nie „przejrzane wzrokiem”. Jeśli którykolwiek punkt nie ma odpowiedzi, wdrożenie nie jest gotowe.
Testy rób na produkcji, dla każdej metody dostawy osobno – jedno realne zamówienie z płatnością, wydrukiem etykiety, nadaniem, odbiorem w punkcie i zwrotem. Zamów raz w środku dnia, raz w niedzielę wieczorem: obciążenie API jest inne. Kod modułu w PrestaShop opiera się na hookach, których listę znajdziesz w dokumentacji dla deweloperów PrestaShop – warto sprawdzić, czy żaden nie został nadpisany przy aktualizacji.
Po starcie zostaje monitoring: logi żądań i odpowiedzi, alert na 429 i błędy 5xx oraz na brak nowych zdarzeń przez 12 godzin. Do tego cotygodniowy przegląd statusów i jedna osoba w sklepie oraz jedna po stronie wykonawcy, z ustalonym czasem reakcji.
| Metoda dostawy | Co sprawdzić na produkcji | Kryterium zaliczenia |
|---|---|---|
| Paczkomat | Wybór punktu, etykieta, status „gotowe do odbioru”, e-mail | Klient dostaje status i odbiera paczkę |
| Kurier | Etykieta, godzina doręczenia, próba doręczenia, zwrot | Statusy zgadzają się z rzeczywistością |
| Punkt odbioru | Poprawność punktu na mapie i w etykiecie | Adres na etykiecie = punkt wybrany przez klienta |
Najprostsza odpowiedź: wtedy, gdy integracja ma działać dłużej niż miesiąc i przechodzić przez zmiany API przewoźników. Poniżej trzy sytuacje, w których konfiguracja „na wtyczce z marketplace” przestaje wystarczać.
Własny moduł zamiast kolejnej płatnej wtyczki. Wtyczki do paczkomatów są tanie na starcie, ale rozliczane rocznie i rzadko zsynchronizowane z najnowszą wersją API. Piszemy moduł do PrestaShop albo mu-plugin do WooCommerce, który obsługuje dokładnie twoje metody dostawy: mapę punktów, generowanie etykiet, statusy, e-maile. Kod zostaje u ciebie, nie płacisz abonamentu licencyjnego i nie czekasz na aktualizację, gdy przewoźnik zmieni pole w odpowiedzi API.
Widełki z liczby godzin, nie z cennika z sufitu. Zaczynamy od audytu – zwykle 2–4 godziny – w którym sprawdzamy sklep, metody dostawy, statusy i to, czy mapowanie da się rozszerzyć. Dopiero potem podajemy liczbę godzin i stawkę. Przykładowy zakres: integracja jednego przewoźnika z mapą, statusami i etykietami to kilka do kilkunastu godzin; trzy firmy kurierskie, sześć metod dostawy i eksport do ERP – odpowiednio więcej. Kto podaje cenę przed zajrzeniem do sklepu, ten albo ją zawyża, albo doliczy ją potem.
Opieka po wdrożeniu i jasne SLA. Oddajemy działającą integrację i zostajemy: monitoring, reakcja na zgłoszenie w ciągu jednego dnia roboczego, przegląd logów i aktualizacji API. Pracujesz bezpośrednio z deweloperem, który pisał kod – bez pośredników i bez przekazywania zgłoszenia między działami.
Obsługujemy firmy z Zamościa, Lublina i wschodniej Polski, a zdalnie całą Polskę. Jeśli nie wiesz, czy twój problem to konfiguracja, czy już moduł – napisz, co się dzieje, i podaj wersję sklepu.
| Sytuacja w sklepie | Co zwykle wystarcza |
|---|---|
| Jedna metoda dostawy, gotowa wtyczka, brak nietypowych produktów | Konfiguracja, mapowanie statusów, testy na produkcji |
| Kilku przewoźników, nietypowe gabaryty, zamówienia z ERP | Własny moduł i kolejka żądań |
| Zmiany API i przerwy w statusach co kilka tygodni | Opieka z monitoringiem i SLA |
Nieaktualna mapa paczkomatów i punktów odbioru po zmianach w API przewoźnika
Jak wykryć: Klient zgłasza, że wybrany punkt nie istnieje lub nie da się go wybrać. W logach widać błędy 4xx przy pobieraniu listy punktów, a lista w bazie sklepu ma datę sprzed kilku tygodni.
Jak naprawić: Podłączyć mapę do aktualnego źródła (API przewoźnika albo widget dostawcy), usunąć lokalne, ręcznie wgrane listy punktów i sprawdzać logi pobierania po każdej zmianie wersji API.
Błędna waga i wymiary produktów, przez co etykieta się nie generuje
Jak wykryć: Zamówienie przechodzi, ale przy próbie wygenerowania etykiety API zwraca błąd walidacji. W koszyku widać produkt z wagą 0 kg lub wymiarami domyślnymi.
Jak naprawić: Uzupełnić wagę i wymiary w kartach produktów, ustawić sensowne wartości domyślne dla pozycji bez danych i dodać walidację blokującą wysyłkę zamówienia bez tych danych.
Brak webhooków – status „gotowe do odbioru” nie trafia do klienta
Jak wykryć: Status w sklepie zatrzymuje się na „wysłane”, mimo że paczka leży już w paczkomacie. Klient dzwoni i pyta, gdzie jest przesyłka.
Jak naprawić: Włączyć webhooki u przewoźnika i zmapować je na statusy sklepu. Jeśli webhooki nie są dostępne, uruchomić cykliczne sprawdzanie statusów w API (np. co 15–30 minut) z kolejką i obsługą błędów.
Podwójne etykiety przy ponowieniu zamówienia lub ponownym kliknięciu „generuj etykietę”
Jak wykryć: W panelu przewoźnika są dwie przesyłki do jednego zamówienia, a klient dostaje dwa numery śledzenia. Widać to też po liczbie etykiet na fakturze przewoźnika.
Jak naprawić: Dodać blokadę: jeden identyfikator przesyłki na zamówienie, zapis numeru w bazie przed wysłaniem żądania i przycisk generowania nieaktywny po sukcesie. Ponowienie ma być możliwe tylko po anulowaniu poprzedniej etykiety.
Brak obsługi limitów API i kolejek – integracja działa do pierwszej promocji
Jak wykryć: Przy wzroście liczby zamówień pojawiają się błędy 429 lub timeouty. Etykiety generują się z opóźnieniem, część zamówień zostaje bez przesyłki.
Jak naprawić: Wprowadzić kolejkę zadań (cron lub worker), ponawianie z rosnącym odstępem, cache dla listy punktów odbioru i monitorowanie liczby wywołań. Sprawdzić limity w dokumentacji przewoźnika i dobrać interwał odpytywania.
Przekazywanie danych klienta przewoźnikowi bez podstawy i bez kontroli zakresu (RODO)
Jak wykryć: W integracji wysyłane są pola, które nie są potrzebne do realizacji dostawy, a w rejestrze czynności przetwarzania nie ma przewoźnika jako odbiorcy danych. Brak informacji w polityce prywatności.
Jak naprawić: Ograniczyć zakres danych do minimum (imię, nazwisko, e-mail, telefon, adres lub identyfikator punktu), dopisać przewoźników do rejestru i polityki prywatności oraz ustalić okres retencji numerów przesyłek.
„Odbiór paczek nigdy nie był tak prosty” jest prawdą tylko wtedy, gdy sklep ma spięty proces: wybór punktu odbioru w checkoutcie, poprawną wagę i wymiary produktów, etykietę bez błędów oraz status, który sam trafia do klienta. Sam moduł to połowa sukcesu – reszta to mapowanie statusów, webhooki i test na zamówieniu próbnym. Koszt wdrożenia gotowego rozwiązania zamyka się zwykle w 4–8 godzinach, a niestandardowa integracja lub połączenie z ERP to 20–60 godzin. Zacznij od checklisty powyżej, a nie od zakupu kolejnej wtyczki.
Nie zawsze. Stawki zależą od umowy z przewoźnikiem, wolumenu przesyłek i gabarytów, więc cena „z cennika” rzadko jest ceną, którą faktycznie płacisz. Sprawdź swoją umowę i porównaj koszt dostawy do paczkomatu, punktu odbioru i kuriera dla realnych zamówień z ostatniego miesiąca.
Gotowy, oficjalny moduł to zwykle 4–8 godzin pracy: instalacja, konfiguracja metod dostawy, mapowanie statusów i test na zamówieniu próbnym. Własny moduł albo integracja pod nietypowe potrzeby zajmuje 20–60 godzin. Czas rośnie, gdy sklep ma produkty bez wagi i wymiarów.
W większości sklepów MŚP wystarcza gotowy moduł lub wtyczka. Własna integracja ma sens, gdy potrzebujesz niestandardowych progów darmowej dostawy, łączenia wielu przewoźników w jednym procesie albo specyficznej logiki w ERP. Zanim zamówisz kod, sprawdź, czego dokładnie brakuje w gotowym rozwiązaniu.
Z raportów okresowych samego operatora oraz z opracowań branżowych o rynku e-commerce. Nie podaję takich liczb z pamięci – przed publikacją trzeba je sprawdzić u źródła i podać datę oraz metodologię badania, bo wartości zmieniają się kwartał po kwartale.
Zrób zamówienie próbne na własne dane i przejdź całą ścieżkę: wybór punktu odbioru, płatność, generowanie etykiety, zmianę statusu. Jeśli przewoźnik udostępnia środowisko testowe, użyj go w pierwszej kolejności. Po testach przejrzyj logi integracji – powinny być czyste, bez ostrzeżeń o brakujących danych.
Przy kilkunastu zamówieniach dziennie ręczne przepisywanie numerów przesyłek zjada czas, który można przeznaczyć na inne rzeczy. Automatyzacja ma sens wtedy, gdy liczba przesyłek rośnie lub gdy klienci regularnie pytają o status zamówienia. Punktem granicznym jest zwykle moment, w którym obsługa zajmuje kilka godzin tygodniowo.
Integracja przestaje generować etykiety albo przestaje aktualizować statusy. Dlatego warto mieć monitoring logów i zapisany plan aktualizacji modułu. W dokumentacji deweloperskiej PrestaShop i WooCommerce znajdziesz zasady bezpiecznego wdrażania zmian: devdocs.prestashop-project.org oraz woocommerce.com/documentation.
Jeśli chcesz wiedzieć, ile pracy wymaga Twój sklep, prześlij nam adres sklepu i listę metod dostawy, których używasz – powiemy, co da się wdrożyć gotowym modułem, a co wymaga osobnej integracji. DropDigital robi to na co dzień w PrestaShop i WooCommerce.