Koszyk sklep internetowy nie działa? Szybkie rozwiązania

koszyk sklep internetowy nie działa – brzmi znajomo? Dla klienta to frustrujący moment, a dla właściciela e‑commerce realna strata przychodu. Na szczęście większość problemów z koszykiem da się szybko naprawić, jeśli wiesz, gdzie szukać i co sprawdzić jako pierwsze. Poniżej znajdziesz praktyczną, ludzką w odbiorze instrukcję: od szybkiej diagnozy, przez typowe przyczyny, aż po gotowe rozwiązania dla popularnych platform i wskazówki, jak zapobiec powtórkom w przyszłości.

Co dokładnie nie działa? Rozpoznaj objawy

Zanim cokolwiek zmienisz, nazwij problem i zawęź obszar poszukiwań.

Najpierw odpowiedz sobie (lub zespołowi) na proste pytania, które precyzyjnie nakierują diagnostykę:

– Czy przycisk „Dodaj do koszyka” nie reaguje, czy może pojawia się komunikat błędu?
– Produkt dodaje się, ale po przeładowaniu strony znika?
– Koszyk jest pusty tylko na urządzeniach mobilnych, a na desktopie działa?
– Problem dotyczy wszystkich produktów, czy tylko części (np. wariantów)?
– Czy błąd występuje dla wszystkich użytkowników, czy tylko dla zalogowanych/niezalogowanych?
– Czy pojawił się po ostatniej aktualizacji wtyczki, motywu lub wdrożeniu nowej funkcji?

Te odpowiedzi pozwolą w 5–10 minut oszczędzić godziny błądzenia.

Szybka diagnoza w 5 minut

Kilka prostych testów, które natychmiast wskażą kierunek.

1) Otwórz konsolę przeglądarki i zakładkę Sieć (Network).
Odśwież stronę, kliknij „Dodaj do koszyka” i sprawdź, czy wywołanie kończy się statusem 200/204, czy błędem 4xx/5xx. Zobacz, czy odpowiedź zawiera JSON z błędem i czy endpoint jest tym, którego oczekujesz.

2) Przetestuj w trybie incognito i na innej przeglądarce/urządzeniu.
Jeśli w incognito działa, winny bywa cache, cookies, wtyczka lub konflikt skryptów u użytkownika.

3) Wyłącz na chwilę blokery reklam i rozszerzenia prywatności.
Adblock, Ghostery, uBlock, a nawet niektóre antywirusy potrafią blokować skrypty koszyka, piksele lub requesty.

4) Sprawdź komunikaty błędów w logach serwera i aplikacji.
Błędy 500 z logów PHP/Node, zapisy w error_log, raporty Sentry/Datadog – to kopalnia konkretów.

5) Zobacz, czy działa to samo na wersji staging/testowej.
Jeśli tam działa, różnice w konfiguracji, cache/CDN lub w wersjach wtyczek są tropem.

6) Wyłącz na chwilę cache (page cache, CDN, wtyczki optymalizacyjne).
Jeśli po wyłączeniu cache wszystko działa, problemem jest niewłaściwe cache’owanie endpointów koszyka lub ciastek sesyjnych.

Gdy koszyk sklep internetowy nie działa: checklista 15‑minutowa

Krótkie działania, które najczęściej rozwiązują sprawę „od ręki”.

1) Wyczyść cache na wszystkich warstwach.
Page cache (np. wtyczki cache), opcache, Varnish, CDN (Cloudflare), cache przeglądarki. Upewnij się, że endpointy koszyka są wyłączone z cache.

2) Wymuś HTTPS i popraw mieszane treści.
Mieszane treści (HTTP w HTTPS) psują cookies i blokują skrypty. Włącz „Force HTTPS” i napraw linki do zasobów.

3) Zresetuj/ustanów poprawnie domenę cookies i atrybuty SameSite.
Dla koszyka używającego sesji ustaw SameSite=Lax/None (z Secure, jeśli HTTPS), właściwą domenę (np. .twojadomena.pl) i ścieżkę.

4) Wyłącz (czasowo) wtyczki optymalizacyjne i minifikację JS.
Łączenie plików i opóźnianie JS często powoduje konflikty, opóźnia eventy click/submit lub psuje kolejność ładowania.

5) Sprawdź politykę zgód (CMP) i tag managera.
Bannery RODO potrafią blokować skrypty e‑commerce, jeśli zgoda marketingowa/analytics jest wymagana do uruchomienia komponentu koszyka – nie powinna.

6) Przetestuj różne metody dostawy/płatności.
Często błąd wybucha dopiero przy wyborze konkretnego przewoźnika lub przy pluginie bramki płatniczej.

7) Zdezaktywuj krok po kroku ostatnio dodane wtyczki/widżety.
Po każdej zmianie testuj dodanie do koszyka. Winowajca szybko wyjdzie na jaw.

Najczęstsze przyczyny po stronie przeglądarki

Od cookies i ciasteczek SameSite, przez adblocki, po Safari ITP i PWA.

– Cookies i sesje: ograniczenia SameSite w nowoczesnych przeglądarkach potrafią „odciąć” ciasteczko koszyka, zwłaszcza przy cross‑subdomenach (np. sklep.twoja.pl vs www.twoja.pl).
– Adblocki/antytrackery: blokują requesty do znanych endpointów lub domen CDN, myląc je z trackerami.
– Safari ITP: agresywnie skraca żywotność cookies, szczególnie dla domen klasyfikowanych jako trackingowe.
– Cache i Service Worker (PWA): stary Service Worker może serwować nieaktualną wersję aplikacji z pamięci, ignorując nowe skrypty koszyka.
– Błędy JS: konflikt biblioteki (np. podwójne jQuery), brak zależności, wyjątki w konsoli zatrzymujące kolejne skrypty.
– Ustawienia prywatności/firmowe proxy: w sieciach korporacyjnych ruch do części CDN bywa blokowany.

Jak to naprawić po stronie użytkownika

Podaj klientom proste kroki i zapewnij miękkie obejścia, by nie tracić sprzedaży.

– Przyciski „Odśwież koszyk” i „Wyczyść koszyk” powinny być widoczne.
– Dodaj komunikat z instrukcją: „Jeśli masz problem z dodaniem produktu, spróbuj otworzyć koszyk w nowej karcie lub użyj trybu prywatnego.”
– Wprowadź mechanizm „Zapisz koszyk bez logowania” w localStorage – nawet jeśli cookies padną, klient wróci do zapisanych pozycji.
– Umieść link do szybkiego kontaktu (chat/telefon) na stronie koszyka.

Błędy po stronie serwera, CMS i back‑endu

Gdy front wygląda dobrze, winny bywa routing, sesje, cache lub integracje.

– Nieprawidłowe nagłówki cache: endpointy POST/PUT koszyka nie powinny być cache’owane.
– Przekierowania 301/302 na endpointach API koszyka: przeglądarka może nie wysłać cookies po przekierowaniu między subdomenami.
– Błędy w obsłudze sesji: katalog sesji pełny, brak zapisu do Redis/Memcached, konflikt ID sesji.
– Migracja na HTTPS bez aktualizacji domen cookies: ciasteczka ustawione dla starej domeny nie są odczytywane.
– CORS: jeśli koszyk działa przez API na innej domenie, ustaw poprawnie Access‑Control‑Allow‑Origin, credentials oraz nagłówki cookies.
– Brak walidacji stanu magazynowego i wariantów: dodanie produktu z niedostępnym wariantem generuje ukryty błąd 400.

Sesje i cookies (SameSite, domeny, HTTPS)

Najwięcej „magicznych” usterek znika po prawidłowej konfiguracji ciastek.

– Ustaw atrybuty: SameSite=Lax (lub SameSite=None; Secure gdy korzystasz z iframów/subdomen), HttpOnly, Secure w HTTPS.
– Zapewnij spójność domeny: jeżeli strona działa na www i bez www, wybierz jedną wersję i wymuś przekierowanie 301.
– W przypadku subdomen użyj domeny cookies typu .twojadomena.pl, aby była współdzielona.

Cache i CDN (Cloudflare, Varnish, serwer)

Wyklucz koszyk z cache, ustaw reguły bypass i zweryfikuj nagłówki.

– Wyłącz cache dla: /cart, /basket, /checkout, /wp-admin/admin-ajax.php, /?wc-ajax=… i wszystkich endpointów API koszyka.
– Dodaj reguły w CDN: Bypass Cache on Cookie dla cookie sesyjnych i koszyka.
– Upewnij się, że odpowiedzi koszyka mają nagłówki: Cache‑Control: no-store, no-cache, must-revalidate.

Konflikty wtyczek i widżetów

Pop‑upy, czaty, optymalizatory i A/B testy potrafią namieszać w JS.

– Testuj z wyłączonymi: pop‑upami newslettera, wtyczkami lazy load, optymalizacją JS/CSS, wieloma czatami naraz.
– Wyklucz selektory przycisku „Dodaj do koszyka” z narzędzi, które „przeklejają” DOM (np. narzędzia do personalizacji).

API i CORS, bramki płatności, dostawy

Integracje bywają wąskim gardłem, zwłaszcza przy dynamicznych kosztach.

– Jeśli cena/dostawa liczy się w locie po API, utrata tokenu/cookie przerwie proces. Loguj odpowiedzi i błędy sieci.
– Sprawdź limity rate‑limit – przy dużym ruchu API może odrzucać żądania, co widać jako sporadyczne „nie dodaje się”.

Platformy e‑commerce: szybkie wskazówki

Najpopularniejsze systemy mają swoje typowe „pułapki”.

WooCommerce

Skoncentruj się na wc-ajax, cache i minifikacji JS.

– Upewnij się, że nie cachujesz: /?wc-ajax=add_to_cart, /cart, /checkout.
– Jeśli używasz wtyczek cache (np. WP Rocket, W3TC), dodaj reguły Bypass Cache on Cookie (woocommerce_cart_hash, woocommerce_items_in_cart).
– Wyłącz łączenie/minifikację JS dla skryptów WooCommerce.
– Sprawdź konflikt motywu: klasyczny test „Twenty Twenty‑Three + WooCommerce + brak wtyczek” na staging.

PrestaShop

Sprawdź cache Smarty, friendly URLs i override’y modułów.

– Wyczyść cache Smarty i wyłącz kompilację tylko na produkcji.
– Upewnij się, że moduły koszyka nie zostały nadpisane przez inny moduł promocyjny.
– Zweryfikuj poprawność hooków (displayHeader, displayFooter) – brak skryptu w headerze potrafi zablokować koszyk.

Shopify

Aplikacje i skrypty w theme.liquid to najczęstsze źródło konfliktów.

– Czasowo wyłącz aplikacje dodające pop‑upy, upselle i modyfikujące cart.js.
– Zobacz w konsoli, czy wywołania /cart/add.js i /cart/change.js kończą się 200.
– Jeżeli masz headless, skontroluj Storefront API i uprawnienia tokenu.

Shoper, IdoSell i inne SaaS

Najpierw zgłoś do supportu, równolegle weryfikuj skrypty i integracje.

– Wyłącz dodatkowe widgety, sprawdź wykryte błędy JS, zapytaj o status SLA i ewentualne awarie po stronie dostawcy.

UX i obsługa błędów: minimalizacja strat

Nawet jeśli coś padnie, możesz uratować koszyk i sprzedaż.

– Dodaj czytelne komunikaty błędów: „Nie udało się dodać produktu. Spróbuj ponownie lub skontaktuj się z nami.”
– Wprowadź „miękką degradację”: jeśli AJAX nie działa, przełącz na dodawanie przez klasyczny POST i przeładowanie strony.
– Zapisuj ostatnią akcję: gdy dodanie nie zadziała, po odświeżeniu spróbuj ponownie w tle i pokaż powiadomienie.
– Utrzymuj koszyk w localStorage jako kopię zapasową.
– Dodaj „Szybki koszyk” w nagłówku, który odzwierciedla stan w czasie rzeczywistym.
– Pokaż łatwą ścieżkę kontaktu: telefon, chat, messenger widoczne w pobliżu przycisku koszyka.

Monitorowanie i zapobieganie na przyszłość

Bez stałego nadzoru problem powróci w najmniej oczekiwanym momencie.

– Logowanie błędów front‑end: Sentry/TrackJS/LogRocket, z tagami przeglądarki, wersji release i użytkownika.
– Synthetic monitoring: testy add‑to‑cart co 5 minut z różnych lokalizacji (UptimeRobot, k6, Checkly).
– Analityka: twórz zdarzenia „add_to_cart_success” i „add_to_cart_error” w GA4, mierz współczynnik niepowodzeń.
– Alerty błędów 5xx i skoków w czasie odpowiedzi na endpointach koszyka.
– Kontrola wdrożeń: feature flags i stopniowe rollouty, aby szybko wycofać wadliwe zmiany.
– Polityka aktualizacji: aktualizuj wtyczki/motyw raz w miesiącu, ale zawsze testuj na staging.
– Kopie zapasowe konfiguracji cache/CDN: trzymaj gotowe reguły bypass, aby jednym kliknięciem przywrócić poprawne działanie koszyka.

Łukasz Janeczko

Nazywam się Łukasz i stoję za DropDigital – ogarniam PrestaShop, WordPressa i własne moduły, które ułatwiają życie przedsiębiorcom. Prywatnie fan muzyki, Linuxa i motoryzacji, z zamiłowaniem do rozwiązywania problemów “po swojemu”.

Zostaw swój numer - oddzwonię

Cześć! Zadzwoń +48 572 651 439 lub napisz lub zostaw numer telefonu, a oddzwonię w ciągu 1h i porozmawiamy o ofercie.

Picture of Łukasz Janeczko

Łukasz Janeczko

Programista - DropDigital.pl