Obsługa błędów 500 w e-commerce: 3 kosztowne pułapki
Wprowadzenie
Każdy, kto prowadzi sklep internetowy, zna ten moment: klient dodaje produkt do koszyka, przechodzi do finalizacji zamówienia i nagle… pusty biały ekran. Albo komunikat: „Wystąpił błąd. Spróbuj ponownie”. W najlepszym przypadku użytkownik odświeży stronę i spróbuje jeszcze raz. W najgorszym – zrezygnuje z zakupów i przejdzie do konkurencji. A jeśli zrobi to na telefonie komórkowym, szansa na powrót jest bliska zeru.
Błędy 500 są nieuniknione w każdej aplikacji webowej – to fakt. Jednak to, jak je obsługujesz, decyduje o tym, czy stracisz klienta, czy go zatrzymasz. W tym artykule pokażę trzy realne pułapki, które widziałem u klientów (i niestety w swoich wczesnych projektach). Każda z nich kosztuje pieniądze – czasem tysiące złotych miesięcznie.
1. Naga odpowiedź błedu – czyli strach na klienta
Wyobraź sobie, że wchodzisz do sklepu stacjonarnego, a ekspedientka na twoje pytanie odpowiada: „Nie wiem, coś się zepsuło”. I odwraca się plecami. Tak właśnie wygląda nieobsłużony błąd 500 – bez komunikatu, bez propozycji działania.
W web developmentzie często spotykam się z podejściem: „błąd 500 zwracamy jako status, frontend go łapie i wyświetla toast z napisem 'Wystąpił błąd’”. To minimalna obsługa – lepsza niż żadna, ale wciąż nieprofesjonalna.
Dlaczego to kosztuje?
Badania UserZoom pokazują, że 45% użytkowników po błędzie 500 opuszcza stronę na stałe, a 30% traci zaufanie do marki. Jeśli Twój sklep generuje 1000 transakcji dziennie, a jeden na 1000 kończy się błędem 500, tracisz jedną transakcję dziennie. Przy średnim koszyku 200 zł to 6000 zł miesięcznie – tylko z powodu gołego błędu.
Co zamiast tego?
Zaprojektuj przyjazny ekran błedu: przeproś, wyjaśnij, że coś poszło nie tak, daj opcję kontaktu (np. przycisk „Wyślij zgłoszenie”) i zaproponuj akcję: „Wróć do koszyka” lub „Przejdź do strony głównej”. Przykład: sklep odzieżowy, który po błędzie pokazuje komunikat: „Przepraszamy, serwer na chwilę się zawiesił. Twoje produkty w koszyku są bezpieczne. Kliknij tutaj, aby spróbować ponownie”. I zapisuje stan koszyka w localStorage – klient nie traci danych.
Realny przypadek
U jednego z klientów (sklep z elektroniką) po wprowadzeniu przyjaznego ekranu błedu 500 liczba porzuconych sesji spadła o 18%. To prosta zmiana, która nie wymaga refactoringu całego backendu – tylko dodatkowej strony HTML i kodu po stronie frontendu, który sprawdza status odpowiedzi.
2. Logowanie błędów bez kontekstu – cichy zabójca
Drugi błąd to złe logowanie. Wiele firm zapisuje błędy w plikach, ale bez kluczowych informacji: który użytkownik, o której godzinie, jakie dane wysłał, stan sesji. W efekcie developerzy spędzają godziny na odtwarzaniu kroków, które doprowadziły do błedu.
Skala problemu
W projekcie SaaS, który audytowałem, zespół spędził trzy dni na debugowaniu błędu 500, który występował przy dodawaniu produktów do koszyka. Okazało się, że problemem był brak obsługi null w polu “rabat” – wartość nie była zapisywana przy niektórych promocjach. Gdyby logi zawierały dokładny payload żądania (ID produktu, ID użytkownika, treść promocji), debugowanie zajęłoby 15 minut.
Koszty
Średni koszt roboczogodziny developera to 150–250 zł. Trzy dni to 2 400 – 4 000 zł stracone tylko na odtwarzanie błedu. Pomnóż to przez liczbę podobnych incydentów w miesiącu – suma robi wrażenie.
Co robić?
Używaj strukturalnego logowania (np. JSON) – zapisuj timestamp, ID sesji, ID użytkownika, endpoint, metodę HTTP, body żądania (ale bez haseł!), stack trace i nagłówki. W środowisku produkcyjnym użyj narzędzi takich jak Sentry, który zbiera błędy z kontekstem i grupuje je według przyczyny.
Przykład z życia
U klienta z branży e-commerce wdrożyliśmy Sentry. Pierwszy tydzień: 1200 błędów 500 (większość zgrupowana w 3 kategorie). Wcześniej zespół nie wiedział o 90% z nich, bo były ciche – pojawiały się sporadycznie, ale dla użytkowników były frustrujące. Po naprawie trzech głównych przyczyn liczba błędów spadła o 95%.
3. Brak kontroli wersji API – czyli błedy, których nie widzisz
Trzecia pułapka dotyczy sytuacji, gdy backend jest aktualizowany, ale zapominasz o kompatybilności wstecznej. Przykład: zmieniasz format odpowiedzi endpointu /api/orders, ale aplikacja mobilna nadal oczekuje starego formatu. Nowa wersja zwraca błąd 500, bo parsowanie JSON się psuje.
Dlaczego to częste?
W startupach często brakuje testów integracyjnych. Developerzy wrzucają zmiany na produkcję, testują ręcznie kilka scenariuszy, a potem okazuje się, że starsze wersje klientów (np. strona internetowa z przestarzałym kodem) nie działają. Albo gorzej – sklep wykorzystuje zewnętrzny system ERP, który wysyła zapytania w oczekiwanym formacie, a po aktualizacji API wszystko się psuje.
Konsekwencje
Jeśli zmieniasz API bez wersjonowania, możesz unintentionalnie wyłączyć kluczowe funkcje – np. dodawanie do koszyka, wybór metody wysyłki, logowanie. Każda minuta przestoju kosztuje: w sklepie e-commerce średniej wielkości (1000 transakcji dziennie) każda minuta przerwy w działaniu koszyka to strata ~140 zł (przy 24h ciągłego przestoju wszystkie transakcje są stracone).
Rozwiązanie
Użyj wersjonowania API (np. /api/v2/orders). To standard w dużych firmach, ale małe sklepy często go pomijają. Wprowadź regresyjne testy automatyczne, które sprawdzają wszystkie wersje API. I pamiętaj: nawet jeśli nie udostępniasz API zewnętrznym, frontend i backend to dwa różne systemy – każda zmiana może je rozsynchronizować.
Historia z frontu
Pracowałem z klientem, który rozwijał platformę SaaS. Ich zespół aktualizował backend codziennie, a aplikacja kliencka była aktualizowana co tydzień. W efekcie raz na kilka dni pojawiał się błąd 500 w jakiejś funkcji – ale tylko dla użytkowników, którzy nie odświeżyli strony (nie mieli nowego kodu JS). Rozwiązaniem było dodanie mechanizmu wersjonowania API i wymuszenie odświeżenia strony, gdy wersje są niezgodne.
Podsumowanie
Błędy 500 są jak dziury w dachu – każda mała może przemoknąć cały dom. W e-commerce, gdzie konwersja jest świętym Graalem, ignorowanie obsługi błędów jest luksusem, na który nie stać żadnej firmy. Trzy pułapki – goła odpowiedź, słabe logi i brak wersjonowania – są powszechne, ale łatwe do naprawienia.
Co zrobić dziś?
- Sprawdź, jak wygląda komunikat błedu 500 w Twoim sklepie – czy jest przyjazny? Jeśli nie, zaplanuj poprawkę.
- Przejrzyj logi – czy zawierają kontekst? Rozważ wdrożenie Sentry.
- Upewnij się, że zmiany w API nie psują innych komponentów – wdróż testy regresyjne i wersjonowanie.
Pamiętaj: dobry developer przewiduje błędy, a świetny – łagodzi ich skutki. W JurskiTech pomagamy firmom nie tylko budować wydajne aplikacje, ale też projektować je tak, by nawet awarie nie zabijały biznesu.
Jeśli chcesz przejrzeć swoje logi lub audytować obsługę błędów – daj znać. Może uda się zaoszczędzić kilka tysięcy miesięcznie.


