WPNest Returns for WooCommerce
Zgodność z dyrektywą UE 2023/2673 (Return Button Directive, obowiązuje od 19 czerwca 2026). Plugin dodaje przycisk „Zwróć zamówienie" w My Account, prowadzi klienta przez wizard 3-krokowy i zarządza całym procesem zwrotu z poziomu admin — bez wchodzenia w edycję zamówienia WC.
100% zgodne z UE 2023/2673 · Bez konfiguracji — działa od pierwszej aktywacji
19 czerwca 2026
Termin transpozycji obowiązku przycisku zwrotu
14 dni
Minimum z art. 13 CRD (ustawa o prawach konsumenta)
do 10%
Maksymalna kara od rocznego obrotu firmy
0 zł
Dożywotnio, bez limitu sklepów
Pełny proces zwrotu — od kliknięcia po refund
Klient klika przycisk, przechodzi wizard, dostaje potwierdzenie z PDF i modelowym formularzem. Ty zarządzasz wszystkim z jednej strony w admin — zmieniasz statusy, wystawiasz refundy, prowadzisz notki, wysyłasz maile. Bez zewnętrznych usług.
Działa bez tworzenia strony
Od 1.2.0 nie musisz zakładać strony /returns/. Cały proces (weryfikacja gościa → wizard → wysyłka) otwiera się jako pop-up — klient bez konta zawsze ma działające wejście. Chcesz inline? Dodaj blok „WPNest Returns — Portal" lub shortcode na dowolnej stronie.
Wizard 3-krokowy
Per-item, ze strukturyzowanymi powodami, w stylu Zalando — klient wybiera ilości i przyczyny zwrotu krok po kroku.
Blok + shortcode + mail
Przy aktywacji przycisk zwrotu trafia automatycznie do maila „Zamówienie zrealizowane" (edytowalne w ustawieniach e-maili WooCommerce). Dodatkowo blok i shortcode [wpnestreturns_button] otwierają zwrot z menu, stopki czy strony produktu.
HPOS + REST API
Pełna kompatybilność z High-Performance Order Storage WooCommerce. REST namespace wpnestreturns/v1, bez admin-ajax.
Powiadomienia o statusie
Klient i sklep dostają plaintext maila przy zgłoszeniu i każdej zmianie statusu. Możliwość wyłączenia per zmiana oraz ustawienia własnego nadawcy — From, nazwa nadawcy i Reply-To (fallback do ustawień e-mail WooCommerce).
Token + .htaccess + REST stream
PDF z potwierdzeniem chroniony tokenem 32-hex, blokadą .htaccess Deny i autoryzowanym endpointem REST. URL nie da się zgadnąć.
Polski + Angielski
Statyczne PDF-y z oficjalnym wzorem odstąpienia z dyrektywy UE dołączane do każdego maila potwierdzającego. Możesz wgrać własne.
One-stop dashboard
Statusy, refundy (wc_create_refund), notki do zamówienia, historia statusów, timeline — wszystko z jednej strony, bez wchodzenia w edycję zamówienia WC.
4 nowe statusy WooCommerce
Return Pending, Return Accepted, Return Rejected, Return Refunded — natywnie zintegrowane z dropdown WooCommerce i bulk actions.
Polski + Angielski
Pełna polska translacja (369+ stringów). Źródło angielskie, .l10n.php z ręcznym ABSPATH guard, Plugin Check clean.
Trzy kroki do działającego systemu zwrotów
Plugin działa od momentu aktywacji — bez konfiguracji i bez tworzenia strony. Cały proces zwrotu otwiera się jako pop-up, custom statusy WooCommerce rejestrują się same, a przycisk „Zwróć zamówienie" pojawia się w My Account i w mailu o zrealizowaniu zamówienia. Chcesz osadzić proces inline? Dodaj blok „WPNest Returns — Portal" lub shortcode na wybranej stronie i wskaż ją w ustawieniach.
Aktywujesz wtyczkę
Wtyczki → Dodaj nową → wyszukaj „WPNest Returns" → Zainstaluj. Aktywacja tworzy 3 tabele, 4 custom statusy WC i automatycznie dodaje przycisk zwrotu do maila „Zamówienie zrealizowane". Żadnej strony nie musisz zakładać — zwroty działają od razu przez pop-up.
Klient zgłasza zwrot
Klient klika „Zwróć zamówienie" (w My Account, w mailu lub przyciskiem na stronie) i przechodzi wizard 3-krokowy: produkty → powody → podsumowanie — w pop-upie lub na osadzonej stronie. Goście bez konta weryfikują się emailem i numerem zamówienia. Maile lecą natychmiastowo do klienta i sklepu.
Zarządzasz z panelu
WooCommerce → Returns Manager → klikasz „View" przy zgłoszeniu → akceptujesz / odrzucasz / wystawiasz refund. Wszystko z jednej strony, bez edycji zamówienia WC.
Zgodne z prawem UE i polską ustawą
Plugin implementuje wymagania dyrektywy UE 2023/2673 (Return Button) oraz polskiej ustawy o prawach konsumenta. Domyślne ustawienia są zgodne z polskim prawem — możesz korzystać bez żadnej zmiany konfiguracji.
Dyrektywa 2023/2673 (Return Button)
Akt UE wymagający, aby każdy sklep e-commerce obsługujący konsumentów udostępnił widoczny przycisk inicjujący zwrot zamówienia. Termin transpozycji do prawa krajowego: 19 czerwca 2026.
art. 27 ustawy o prawach konsumenta
14 dni na odstąpienie od umowy zawartej na odległość bez podania przyczyny. Plugin domyślnie ustawia okno 14 dni — możesz je rozszerzyć w ustawieniach do dowolnej liczby dni.
Najczęściej zadawane pytania
Czy plugin wystarcza do zgodności z dyrektywą 2023/2673?
Tak. Wersja Free spełnia podstawowy wymóg dyrektywy: udostępnia widoczny przycisk „Return this order" w My Account, prowadzi klienta przez wizard zgłoszenia zwrotu i wysyła potwierdzenie z modelowym formularzem odstąpienia z dyrektywy UE. Wersja Pro dodaje warstwę automatyzacji (etykiety kurierskie, refundy przez bramkę, SMS) ale nie jest wymagana do zgodności prawnej.
Czy muszę tworzyć stronę /returns/?
Nie. Od wersji 1.2.0 plugin nie tworzy już żadnej strony przy aktywacji — zwroty działają od razu jako pop-up (modal), więc nawet klient bez konta zawsze ma działające wejście. Jeśli wolisz osadzić proces inline w swojej strukturze strony, dodaj blok „WPNest Returns — Portal" (lub shortcode [wpnestreturns_returns_page]) na dowolnej stronie i wskaż ją w WooCommerce → Returns Manager. Istniejące strony /returns/ ze starszych instalacji działają dalej bez zmian.
Co się dzieje gdy ktoś znajdzie URL do PDF potwierdzenia?
Trójwarstwowa ochrona. Nazwa pliku zawiera losowy token 32-hex (URL nie da się zgadnąć). Katalog ma .htaccess Deny from all (Apache) lub web.config (IIS) — bezpośredni link zwraca 403. Pobieranie odbywa się przez autoryzowany endpoint REST /wpnestreturns/v1/pdf/{id}, który sprawdza czy użytkownik jest właścicielem zamówienia, adminem albo ma ważny token gościa.
Czy klient bez konta (gość) może zgłosić zwrot?
Tak. Gość otwiera pop-up zwrotu — z linku w mailu „Zamówienie zrealizowane" albo przyciskiem „Zwróć zamówienie" — i podaje email oraz numer zamówienia. Po weryfikacji dostaje 15-minutowy token transient, który pozwala mu przejść wizard zwrotu bez zakładania konta, w tym samym oknie i bez przeładowania strony. Dwuwarstwowy rate-limit chroni endpoint przed brute-force: 5 prób weryfikacji na godzinę z jednego IP oraz 15 prób dziennie z jednego adresu email.
Czy mogę wgrać własny modelowy PDF zamiast tego z dyrektywy UE?
Tak. W ustawieniach (Customer-facing return forms) możesz wgrać własne PDF-y dla wersji EN i PL. Plugin automatycznie wybierze odpowiedni język na podstawie locale klienta i dołączy go do maila potwierdzającego. Jeśli nie wgrasz własnych, używane są domyślne formularze z dyrektywy.
Czy plugin wystawia refundy przez bramkę płatności?
W wersji Free: nie. Plugin wywołuje wc_create_refund() z refund_payment=false — refund jest zarejestrowany w WooCommerce i widoczny w panelu, ale samo zwrócenie pieniędzy musisz przepuścić ręcznie przez przycisk „Refund" w edycji zamówienia WC. Automatyczne refundy przez bramkę (Stripe/PayU/Przelewy24) to feature Pro.
Czy działa z HPOS (High-Performance Order Storage)?
Tak. Plugin deklaruje pełną kompatybilność z HPOS przez FeaturesUtil::declare_compatibility(). Wszystkie operacje na zamówieniach idą przez wc_get_order() i metody $order->*, nigdy bezpośrednio przez get_post_meta().
Co się stanie z danymi po odinstalowaniu?
Domyślnie tabele zwrotów zostają w bazie po dezaktywacji i odinstalowaniu — to dane regulacyjne, ważne dla audytu. Jeśli świadomie chcesz je usunąć, włącz opcję „Skasuj dane przy odinstalowaniu" w ustawieniach przed dezaktywacją.
Czy mogę wyłączyć przycisk zwrotu w niektórych zamówieniach?
Tak, na kilka sposobów. Możesz wykluczyć całe statusy zamówień (domyślnie wykluczone: cancelled, failed, refunded, trash), produkty z określonymi ID, subskrypcje (wymaga WC Subscriptions), produkty z waiver dla treści cyfrowych oraz produkty oznaczone jako personalizowane. Dla bardziej zaawansowanych reguł filter wpnestreturns_is_eligible pozwala dodać własną logikę.
Czy plugin wysyła jakiekolwiek dane na zewnątrz?
Nie. Wersja Free działa wyłącznie lokalnie — żadnych wp_remote_get/post, brak analityki, brak phone-home, brak licencjonowania domenowego (to feature Pro). PDF-y potwierdzeń są generowane lokalnie przez bundled tFPDF 1.33 (LGPL), maile wysyłane przez natywne WP wp_mail(). Refundy idą wyłącznie przez wc_create_refund() — bramki płatności wywoływane są tylko gdy ręcznie podasz refund_payment=true (admin UI Free domyślnie tego nie eskaluje).
Gdzie znajdę kod / mogę zgłosić bug?
Pełne źródło wersji Free jest publicznie dostępne na GitHubie: github.com/patrykluba/wpnest-returns-for-woocommerce. Licencja GPLv2 (lub nowsza). Issues, pull requests i security disclosures przyjmujemy bezpośrednio przez GitHub. Releases tagowane semver odpowiadają wersjom publikowanym na WordPress.org.
Pełna lista opcji
Wszystkie opcje konfiguracji dostępne w panelu admin (WooCommerce → Returns Manager). Domyślne wartości są zgodne z polskim prawem — możesz zostawić wszystko jak jest.
Włączanie, etykieta przycisku, nadawca maili (From / Reply-To), strona portalu, customowe PDF-y
Statusy, subskrypcje, produkty cyfrowe, customizowane
Etykiety kurierskie, bramka refundów i konwersacja z klientem
Wersja Pro automatycznie generuje etykiety zwrotów dla InPost / Apaczka / DHL, refunduje przez bramkę płatności jednym kliknięciem, wysyła SMS do klienta i prowadzi pełną konwersację — wszystko bez wychodzenia z panelu admin.
Co dostajesz w Pro
- ✦ Generowanie etykiet kurierskich (InPost, Apaczka, DHL)
- ✦ Refund przez bramkę płatności (refund_payment=true)
- ✦ Konwersacja klient ↔ sklep (threaded messages)
- ✦ SMS przez SMSAPI
- ✦ Webhooki Slack / Discord / generic JSON
- ✦ Dashboard analityki zwrotów
- ✦ Customowe templatki HTML maili
- ✦ White-label dla agencji