Integracja InPost z PrestaShop rzadko kończy się na kliknięciu „Zainstaluj”. Najwięcej czasu zajmuje część organizacyjna: konto, token API, środowisko testowe, strefy wysyłki, strefy i mapowanie statusów. Poniżej zbieramy to, co trzeba przygotować przed startem, oraz błędy, które najczęściej blokują wdrożenie w połowie. Konkrety techniczne opisujemy w tekście InPost w PrestaShop: wdrożenie krok po kroku, a szerszy kontekst znajdziesz w sekcji Integracje PrestaShop.

Od czego zależy integracja InPost z PrestaShop: moduł, API czy pośrednik?

Wybór ścieżki zależy od trzech rzeczy: liczby zamówień miesięcznie, tego czy checkout jest standardowy, i tego, czy zamówienia trafiają już do ERP. Kolor etykiety czy nazwa statusu to szczegóły, które dorobisz później. Zły wybór na starcie oznacza przepisanie integracji po kilku miesiącach i podwójną pracę.

Masz trzy drogi:

Pośrednik staje się wąskim gardłem, gdy chcesz własną logikę statusów zamówienia, niestandardowy układ etykiety, za pobraniem z regułami zależnymi od koszyka albo gdy wolumen rośnie. Wtedy dochodzi abonament, a synchronizacja statusów ma opóźnienie — przy 2000 zamówieniach miesięcznie odczujesz to w obsłudze zwrotów i reklamacji.

Jeżeli nie wiesz, którą drogę wybrać, przygotuj trzy liczby: zamówienia na miesiąc, liczbę sklepów i listę systemów, do których wysyłasz dane. One rozstrzygają sprawę szybciej niż jakakolwiek lista funkcji.

ŚcieżkaCzas wdrożeniaKiedy ma sensGłówne ograniczenie
Gotowy moduł (InPost / Addons)8–24 h50–500 zamówień/mies., standardowy checkout, jeden sklepBrak niestandardowej logiki gabarytów i statusów
Własny moduł na ShipX API40–80 hNiestandardowy checkout, multistore, ERP, duży wolumenKoszt utrzymania i testów przy aktualizacjach PrestaShop
Pośrednik (np. BaseLinker)2–6 hWiele kanałów sprzedaży, kilku kurierów, brak deweloperaAbonament, opóźniony sync statusów, ograniczone API

Jakie dane i konta przygotować przed integracją InPost?

Zanim ktokolwiek dotknie modułu, skompletuj konta i dane. To najczęstsza przyczyna przestoju w połowie wdrożenia: integracja gotowa, a brakuje tokenu albo zgody na środowisko testowe. Realizacja zgłoszenia do sandboxa zajmuje zwykle kilka dni roboczych, więc zacznij od tego.

W katalogu PrestaShop uzupełnij wagę i wymiary produktów. Bez tego moduł nie wyliczy gabarytu i etykieta się nie wygeneruje — to błąd, który wychodzi dopiero przy pierwszym realnym zamówieniu. Przy płatności za pobraniem ustal, na jakie konto mają wracać pieniądze. Jeśli sprzedajesz za granicę, sprawdź wcześniej listę krajów dla wybranej usługi.

Przy kilku sklepach lub kilku wersjach PrestaShop zaplanuj osobno konfigurację dla każdej instalacji — pisaliśmy o tym w tekście InPost i PrestaShop 9: organizacja wdrożenia bez przestojów.

ElementGdzie załatwićDlaczego blokuje start
Konto InPost Business i umowaPanel InPost / opiekun handlowyBez umowy nie ma dostępu do ShipX API
Token API i Organization IDPanel ShipXModuł nie połączy się z API — błąd 401
Dostęp do sandboxaZgłoszenie do InPostRealizacja trwa kilka dni roboczych
Cennik i mapa gabarytówUmowa i cennik InPostBez przypisania gabarytu etykieta się nie wygeneruje
Waga i wymiary produktówKatalog PrestaShopModuł nie wyliczy gabarytu przesyłki
Dane firmy i uprawnieniaPanel InPost, księgowość, HRBrak pełnomocnictw blokuje nadawanie przesyłek

Konfiguracja InPost w PrestaShop krok po kroku

Zakładamy, że masz konto, token i dostęp do sandboxa. Kolejność prac jest ważna — pominięcie kroku drugiego kończy się błędami, których nie widać w panelu.

  1. Sprawdź wersję i serwer. Moduły InPost obsługują PrestaShop 1.7.6+, 8.x i 9.x, ale tylko na wspieranej wersji PHP. Jeśli hosting siedzi na starej wersji, najpierw aktualizacja — zakres opisujemy w tekście PrestaShop system requirements: wymagania serwera i PHP, a plan działania przy starszych sklepach w Migracja PrestaShop 1.7 do 9: organizacja projektu.
  2. Instalacja modułu. Wgraj katalog modułu do /modules/, wejdź w panel → Moduły → Menedżer modułów, znajdź moduł i zainstaluj. Jeśli paczka zawiera katalog vendor/, upewnij się, że hosting nie blokuje wychodzących połączeń HTTPS — inaczej API nie odpowie.
  3. Klucze API. Wklej token i Organization ID, wybierz środowisko sandbox i użyj testu połączenia. Błąd 401 to zły token, 403 — brak uprawnień, timeout — firewall albo hosting.
  4. Strefy wysyłki, kraje, waluty. W Międzynarodowe → Lokalizacja ustaw strefy i kraje, w Wysyłka → Przewoźnicy dodaj metody: Paczkomat InPost, Kurier InPost, Kurier InPost za pobraniem. Ustaw widełki wagowe i ceny, np. darmowa dostawa od progu koszyka.
  5. Checkout. Sprawdź, czy motyw wywołuje hook odpowiedzialny za mapę paczkomatów. W niestandardowych szablonach trzeba go dodać ręcznie — struktura hooków jest opisana w dokumentacji deweloperskiej PrestaShop.
  6. Testowe zamówienie. Złóż zamówienie od koszyka do płatności, wybierz paczkomat na mapie, wygeneruj etykietę w panelu modułu, sprawdź plik PDF i status przesyłki. Na koniec wyczyść cache i powtórz test na koncie klienta, nie administratora.
ObjawNajczęstsza przyczynaCo zrobić
Brak metody Paczkomat w koszykuPuste strefy wysyłki lub brak krajuUzupełnij strefy i przypisz do nich przewoźnika
Błąd 401 przy teście połączeniaZły token albo token z innego środowiskaWygeneruj token dla wybranego środowiska
Timeout połączenia z APIHosting blokuje wychodzące HTTPSOtwórz dostęp w firewallu lub zmień plan hostingu
Etykieta się nie generujeBrak wagi i wymiarów produktuUzupełnij dane w katalogu produktów

Mapa Paczkomatów i wybór punktu odbioru w checkoucie

Widget z mapą punktów (GeoWidget) to najsłabsze ogniwo integracji. Zacznij od tokenu: generujesz go w panelu InPost, a jest on przypisany do domeny. Token dla sklep.pl nie zadziała na staging.sklep.pl — na czas testów wygeneruj osobny, inaczej mapa pokaże pusty ekran.

Osadzenie to skrypt widgetu i kontener <div> na mapę. W konfiguracji ustawiasz język, kraj i metody (paczkomat, punkt, kurier). Widget zwraca przez callback dane punktu: nazwę, adres i identyfikator, np. KRA010. Ten Point ID trafia później do ShipX w polu custom_attributes.target_point. Bez niego przesyłka pojedzie na domyślny oddział.

Dokładne nazwy pól widgetu sprawdź w aktualnej dokumentacji InPost — zmieniały się przy kolejnych wersjach. Cykl życia zamówienia i hooki opisuje dokumentacja dla deweloperów PrestaShop. Zasady wpinania zewnętrznych usług zbieramy w sekcji Integracje PrestaShop, a kwestie nagłówków i cache po stronie serwera w materiale o wymaganiach serwera dla PrestaShop.

Generowanie etykiet i statusy zamówień przez ShipX API

Rdzeń operacyjny to dwa żądania do ShipX. Przesyłkę tworzysz przez POST /v1/organizations/{organization_id}/shipments — w odpowiedzi dostajesz id przesyłki i tracking_number. Etykietę pobierasz osobnym żądaniem skierowanym do zasobu przesyłki (ścieżka w stylu /v1/shipments/{shipment_id}/label), które zwraca link do PDF — zwykle format A6, gotowy pod drukarkę termiczną.

Przed pierwszym żądaniem przygotuj: organization_id, token, nazwę usługi (paczkomat, kurier), wagę i wymiary paczki, numer zamówienia w polu reference, dane odbiorcy i nadawcy. Testuj na środowisku sandbox — host API jest inny niż produkcyjny, więc nie sprawdzaj integracji na prawdziwych przesyłkach. Aktualne ścieżki potwierdź w dokumentacji InPost, bo wersjonowanie API się zmienia.

Idempotencja. Po timeoucie nie twórz przesyłki drugi raz — najpierw zapytaj o przesyłki po reference. Bez tego jedna awaria sieci daje dwie etykiety i dwa numery śledzenia dla jednego zamówienia.

Mapowanie statusów: domyślne ID w PrestaShop (3, 4, 5) odczytaj z bazy, bo po modyfikacjach sklepu mogą się różnić od tego, co pamiętasz z instalacji.

Status w ShipXStatus w PrestaShopAkcja po stronie sklepu
created / confirmedPrzygotowanie w tokuEtykieta wygenerowana, paczka jeszcze nie nadana
dispatched_by_senderWysłaneMail do klienta z numerem śledzenia
ready_to_pickupGotowe do odbioru (status własny)Powiadomienie o terminie odbioru
deliveredDostarczoneZamknięcie zamówienia, faktura, prośba o opinię
returned_to_sender / undeliveredNieodebrane (status własny)Kontakt z klientem, decyzja o ponownej wysyłce
canceledAnulowaneZwrot płatności, korekta stanu magazynowego

Zwroty, reklamacje i COD z InPost w PrestaShop

Etykieta zwrotna. Generuj ją z poziomu zamówienia w PrestaShop, nie ręcznie w panelu InPost. Powód jest prozaiczny: jeśli etykieta powstaje poza sklepem, numer przesyłki zwrotnej nigdy nie wróci do bazy i przy przyjęciu towaru nie wiesz, czego szukasz. W praktyce: przycisk „Wygeneruj etykietę zwrotną” tworzy przesyłkę zwrotną przez ShipX, zapisuje jej numer w dokumencie zwrotu PrestaShop i wysyła klientowi PDF mailem. Klient bez drukarki użyje kodu przesyłki w aplikacji InPost.

Przyjęcie zwrotu. Stan magazynowy zwiększaj dopiero na statusie „dostarczone” dla zwrotu, a nie w chwili nadania go przez klienta. To najczęstszy błąd magazynowy: towar wraca do sprzedaży, choć fizycznie jedzie jeszcze paczkomatem.

Zamówienia COD. W ShipX to osobna usługa z kwotą i walutą (cod.amount, cod.currency). Kwota musi zgadzać się z potwierdzeniem zamówienia, razem z kosztem dostawy. Uwaga na zaliczki: jeśli klient zapłacił online część kwoty, do pobrania wystawiasz resztę. Status „Wysłane” ustawiaj po potwierdzeniu nadania, nie po wygenerowaniu etykiety. Wypłaty COD przychodzą cyklicznie — dodaj własny status „COD rozliczone”, żeby dało się dopasować przelew do listy zamówień.

Reklamacje. Trzy scenariusze: brak przesyłki (najpierw tracking i status, potem zgłoszenie), uszkodzenie (zdjęcia opakowania i zawartości, zachowaj oryginał opakowania) i opóźnienie (zgłoszenie po terminie z regulaminu InPost).

Ubezpieczenie i wartość deklarowana. Rekompensata liczona jest od wartości zadeklarowanej w przesyłce, nie od wartości z faktury. Dla elektroniki powyżej 1000 zł ustaw w integracji wartość deklarowaną i dodaj kontrolę blokującą wysyłkę, gdy deklaracja jest niższa niż wartość zamówienia. Limity standardowego ubezpieczenia zależą od usługi — potwierdź je w aktualnym cenniku. Kolejność prac przy wdrożeniu opisujemy w materiale o organizacji wdrożenia InPost i PrestaShop 9 bez przestojów.

Pułapki i diagnostyka integracji InPost z PrestaShop

Większość problemów z integracją InPost w PrestaShop wynika z niedopasowania trzech warstw: kodu sklepu, konfiguracji wysyłki i konta w InPost. Sprawdzaj je w tej kolejności.

Diagnostyka: włącz tryb debug, czytaj logi w var/logs/, testuj w sandboxie, wygeneruj jedną testową etykietę i porównaj surowe żądanie oraz odpowiedź API. Kod 401 to zwykle token lub środowisko, 400 — dane przesyłki. Dokumentacja hooków i struktury modułów jest w dokumentacji deweloperskiej PrestaShop.

ObjawNajczęstsza przyczynaGdzie sprawdzić
Brak metody InPost w koszykuKraj poza strefą wysyłkiZakładka Wysyłka → Strefy i kraje
Etykieta się nie generujePusty Point ID lub niepełny adresKarta zamówienia → dane przesyłki
Zły rozmiar przesyłkiWaga 0 kg lub brak wymiarówKarta produktu → Wymiary i waga
Stary wygląd checkoutuCache szablonów, OPcache, CDNWyczyść cache i OPcache, potem test
Działa na sklepie A, nie na BMultistore, brak udostępnienia modułuKonfiguracja modułu per sklep
Błąd 401 przy nadawaniuToken API lub złe środowiskoPorównanie request/response API

Ile trwa i ile kosztuje integracja InPost w PrestaShop?

Realny zakres prac zależy od tego, ile sklep robi „po swojemu”. Uczciwe widełki w roboczogodzinach wyglądają tak:

Do tego dochodzą zależności zewnętrzne. Integracja z ERP (Subiekt, Comarch Optima, własny magazyn) to zwykle +20–60 h — zależnie od tego, czy ERP wystawia API i czy statusy mają wracać do sklepu. Multistore to +4–10 h na każdy dodatkowy sklep, bo każdy wymaga osobnych ustawień i własnych testów. Osobno policz niestandardowe statusy zamówień: muszą być spójne z magazynem i księgowością, a nie tylko z checkoutem.

Dlatego wyceniaj godzinowo, z rozbiciem na etapy i limitem godzin. Stała cena bez rozpoznania kończy się albo dopłatą, albo niedokończonym wdrożeniem. Przy projektach wielosklepowych i niestandardowym checkoutcie warto od razu zaplanować opiekę po wdrożeniu: SLA na czas reakcji, monitoring webhooków i kolejki etykiet, aktualizacje przy zmianach API InPost oraz nowych wersjach PrestaShop. Kontekst szerszych prac opisujemy w sekcji Integracje PrestaShop, a specyfikę najnowszej gałęzi — w tekście InPost i PrestaShop 9: organizacja wdrożenia bez przestojów.

Zewnętrznemu zespołowi zleć wdrożenie, gdy nie masz dewelopera, działasz na multistore, masz niestandardowy checkout lub integrację z ERP. Wewnętrznie da się to zrobić przy jednym sklepie, standardowym module i administratorze, który realnie ma na to czas.

ElementWpływ na czasUwaga
Gotowy moduł, jeden sklep4–8 hNajtańsza droga, jeśli moduł jest aktualizowany
Dostosowanie checkoutu+8–20 hWybór paczkomatu na mobile generuje najwięcej poprawek
Własny moduł / API+60–120 hWymaga późniejszego utrzymania i monitoringu webhooków
Integracja z ERP+20–60 hKluczowe pytanie: czy ERP ma API
Multistore+4–10 h na sklepOsobne klucze, osobne testy
Opieka po wdrożeniuAbonamentSLA, monitoring, aktualizacje po zmianach API

Lista kontrolna wdrożenia InPost w PrestaShop

Traktuj to jako listę do odhaczania przed startem i po nim. Kolejność ma znaczenie — punkty z dołu listy bez punktów z góry nie mają sensu.

Testy rób na produkcji, ale na jednym kontrolnym zamówieniu — z etykietą, śledzeniem i zwrotem. Pełna procedura krok po kroku jest w tekście InPost w PrestaShop: wdrożenie krok po kroku, a podstawy konfiguracji sklepu znajdziesz w sekcji PrestaShop. Plan rollback ustal przed wdrożeniem: kopia plików i bazy, okno serwisowe, osoba decyzyjna.

Scenariusz awariiDziałanie wycofujące
Etykiety nie generują sięDeaktywacja modułu, powrót do ręcznego nadawania, analiza logów
Błędne stawki wysyłkiPrzywrócenie poprzednich metod dostawy, korekta stref
Błąd po aktualizacji PrestaShopPrzywrócenie kopii plików i bazy z okna serwisowego
Błędne mapowanie statusówRęczna korekta statusów, wyłączenie automatu do czasu poprawki

Najczęstsze błędy i jak je wykryć

Wdrożenie startuje bez konta InPost Business i bez tokenu do ShipX API.

Jak wykryć: Pierwsze wywołania API kończą się błędem autoryzacji, etykiety się nie generują, a deweloper zgłasza „brak dostępu”.

Jak naprawić: Załóż konto business, wygeneruj token i ustal Organization ID, zanim ktokolwiek dotknie modułu. To najczęstszy blokujący temat na starcie projektu.

Testy na środowisku produkcyjnym zamiast sandbox.

Jak wykryć: Sprawdź w konfiguracji modułu, czy wybrane jest środowisko testowe, i czy w logach widać wywołania do sandboxa.

Jak naprawić: Przełącz moduł na sandbox, przejdź pełną ścieżkę: koszyk, wybór punktu, zamówienie, etykieta, status. Dopiero potem produkcja i pierwsze realne paczki.

Widget Paczkomatów działa wizualnie, ale Point ID nie zapisuje się w zamówieniu.

Jak wykryć: Otwórz szczegóły zamówienia w PrestaShop i w bazie. Jeśli pole z identyfikatorem punktu jest puste, ShipX zwróci błąd o braku point_id.

Jak naprawić: Sprawdź hook zapisujący dane z widgetu oraz mapowanie pola na atrybut przesyłki. Sam wyglądający poprawnie widget to nie integracja.

Checkout pozwala złożyć zamówienie bez wybranego punktu odbioru.

Jak wykryć: Zrób testowe zamówienie z metodą Paczkomat i celowo nie wybierz punktu — jeśli zamówienie przechodzi, walidacja nie działa.

Jak naprawić: Dodaj walidację po stronie przeglądarki i, co ważniejsze, kontrolę serwerową przed zapisem zamówienia. To typowe dla one-page checkout i niestandardowych szablonów.

Strefy wysyłki i kraje niedopasowane do metod InPost.

Jak wykryć: Wybierz adresy z kilku krajów i sprawdź, czy metoda Paczkomat, Kurier i COD pojawia się tam, gdzie powinna, a nie pojawia się tam, gdzie nie powinna.

Jak naprawić: Uporządkuj strefy, przypisz metody do stref i walut oraz sprawdź podatki. Błąd w strefie oznacza klienta bez opcji dostawy i porzucony koszyk.

Cache, CSP i stary szablon blokują mapę paczkomatów na produkcji.

Jak wykryć: Wyłącz cache i sprawdź ponownie. Zobacz też konsolę przeglądarki: błędy Content Security Policy i żądania do zablokowanych domen pojawiają się tam wprost.

Jak naprawić: Wyklucz strony checkout z cache, doładuj widget po zdarzeniu DOM, uzupełnij politykę CSP. Osobno przetestuj na telefonie — tam problemy wychodzą najczęściej.

Lista kontrolna do odklikania

Podsumowanie

Integracja InPost z PrestaShop to w dużej mierze projekt organizacyjny: konto, token, sandbox, strefy wysyłki, mapowanie statusów i logi. Najdroższe błędy nie wynikają z API, tylko z pominiętego punktu na liście przygotowań — brak Point ID, brak walidacji w checkoucie, złe gabaryty. Realny czas to 8–24 godziny przy gotowym module i 40–80 godzin przy własnej integracji na ShipX API. Zacznij od przygotowań, nie od instalacji modułu.

Najczęściej zadawane pytania

Czy integracja InPost z PrestaShop wymaga płatnego modułu?

Nie zawsze. Możliwe są trzy ścieżki: gotowy moduł z marketplace, moduł dostawcy integracji albo własny moduł oparty o ShipX API. Gotowy moduł jest tańszy, ale przed zakupem sprawdź, czy jest rozwijany pod twoją wersję PrestaShop i czy obsługuje twoje metody wysyłki. Własny moduł ma sens, gdy checkout, statusy lub ERP są niestandardowe.

Ile trwa wdrożenie integracji InPost w PrestaShop?

Konfiguracja gotowego modułu to zwykle 8–24 godziny pracy, licząc z testami i poprawkami w checkoucie. Własna integracja oparta o ShipX API to realnie 40–80 godzin, bo dochodzi obsługa błędów, statusów, zwrotów i logów. Na czas wpływa przede wszystkim to, czy masz standardowy checkout i jeden sklep, czy niestandardowy szablon, multistore i ERP.

Czy da się zrobić integrację bez programisty?

Przy gotowym module często tak — instalacja, wklejenie kluczy API, ustawienie stref wysyłki i metod to praca konfiguracyjna. Problem pojawia się, gdy widget nie zapisuje Point ID, checkout blokuje walidację albo cache psuje mapę. Wtedy potrzebna jest osoba, która czyta logi API i kod szablonu, a nie tylko panel.

Czy integracja działa na PrestaShop 1.7, 8 i 9?

To zależy od modułu, a nie od samego InPost. Starsze moduły pisane pod 1.7 często nie działają poprawnie na 8 i 9 — inne hooki, inny checkout, inne API szablonów. Przed wdrożeniem sprawdź deklarowane wsparcie wersji i przetestuj na kopii sklepu w twojej wersji, z twoim motywem.

Czy BaseLinker wystarczy zamiast własnej integracji?

Przy kilku kanałach sprzedaży i niewielkim wolumenie pośrednik ma sens, bo porządkuje etykiety w jednym miejscu i skraca wdrożenie. Staje się wąskim gardłem, gdy masz niestandardowy checkout, multistore, własne statusy zamówień albo ERP jako źródło prawdy. Wtedy dochodzi drugie miejsce konfiguracji i pytanie, który system jest odpowiedzialny za dane o przesyłce.

Jak sprawdzić, czy Point ID zapisuje się poprawnie?

Złóż testowe zamówienie z wybranym paczkomatem i zajrzyj w szczegóły zamówienia oraz do bazy danych. Numer punktu musi być widoczny i identyczny z tym, który wysyłasz do ShipX. Jeśli pole jest puste, a etykieta się nie tworzy, problem jest w zapisie danych z widgetu, nie w samym API.

Czy integracja obejmuje zwroty, reklamacje i COD?

To zależy od zakresu, który ustalisz na starcie — wiele wdrożeń kończy się na etykietach nadania i to jest częsty błąd. Zwroty, przesyłki za pobraniem i zgłoszenia reklamacyjne wymagają osobnych procesów i osobnego testu. Lepiej zapisać je w zakresie prac od razu niż dokładać po miesiącu, gdy magazyn pracuje na produkcji.

Jeśli chcesz przejść przez wdrożenie bez przestoju w sprzedaży, możemy zacząć od przeglądu checklisty i wyceny godzinowej. Zajrzyj do zakładki PrestaShop albo napisz do nas z krótkim opisem sklepu — wersja, checkout, liczba zamówień dziennie.

Źródła i materiały