Od 19 czerwca 2026 r. sklepy internetowe w Unii mają dawać konsumentowi przycisk, którym odstąpi od umowy tak łatwo, jak ją zawarł. Wymóg pochodzi z art. 11a dyrektywy 2011/83/UE, dodanego dyrektywą (UE) 2023/2673. Polska tego artykułu do dziś nie wdrożyła: 24 października 2026 r. ani tekst jednolity ustawy o prawach konsumenta, ani lista jej nowelizacji w ISAP nie zawierają funkcji odstąpienia. Ten tekst pokazuje, co dokładnie mówi przepis, jak sprawdziłem stan polskiego prawa, kiedy polski sklep i tak musi mieć przycisk, i jak go zbudować w WooCommerce, Shopify albo we własnym systemie.
Artykuł opisuje treść przepisów i stan prac legislacyjnych na dzień publikacji, nie jest indywidualną poradą prawną dla twojego sklepu.
Od kiedy obowiązuje przycisk odstąpienia od umowy
Dyrektywa (UE) 2023/2673 z 22 listopada 2023 r. (EUR-Lex) dotyczy głównie usług finansowych zawieranych na odległość, ale jej art. 1 pkt 3 dopisuje do ogólnej dyrektywy o prawach konsumentów nowy art. 11a. Ten artykuł obejmuje każdą umowę zawieraną na odległość przez interfejs internetowy, nie tylko finansową. Motyw 37 mówi to wprost: obowiązek ma dotyczyć także umów o inne towary i usługi, przy których prawo Unii daje prawo odstąpienia.
Daty są w art. 2 ust. 1 dyrektywy:
| Etap | Data | Podstawa |
|---|---|---|
| Przyjęcie i publikacja przepisów krajowych | do 19 grudnia 2025 r. | art. 2 ust. 1 akapit pierwszy |
| Stosowanie przepisów krajowych | od 19 czerwca 2026 r. | art. 2 ust. 1 akapit pierwszy |
| Raport Komisji o funkcjonowaniu przycisku | do 31 lipca 2030 r. | art. 2 ust. 3 |
Dyrektywa nie działa bezpośrednio wobec sklepu. Obowiązek powstaje dopiero w prawie krajowym, które ją przenosi. Stąd różnica między “przepis obowiązuje w UE od 19 czerwca” a “przepis obowiązuje mój sklep”, i stąd sekcja niżej.
Czy Polska wdrożyła przycisk odstąpienia od umowy
Nie. Sprawdziłem to w trzech miejscach.
Pierwsze to tekst jednolity ustawy z 30 maja 2014 r. o prawach konsumenta, ogłoszony obwieszczeniem Marszałka Sejmu z 4 września 2026 r. (Dz.U. 2026 poz. 1244). Zwrot “odstąpienia od umowy” pada w nim kilkadziesiąt razy, ale nie ma ani funkcji odstąpienia, ani etykiety “odstąp od umowy tutaj”, ani odesłania do dyrektywy 2023/2673.
Drugie to karta ustawy w ISAP (Dz.U. 2014 poz. 827) i jej lista aktów zmieniających. Najnowszy z nich to ustawa z 4 września 2026 r. o zmianie ustawy o przeciwdziałaniu nieuczciwym praktykom rynkowym oraz ustawy o prawach konsumenta (Dz.U. 2026 poz. 1353). Ona wdraża inną dyrektywę, 2024/825 o ekologicznych twierdzeniach i aktualizacjach oprogramowania, i wchodzi w życie 27 września 2027 r. O funkcji odstąpienia nie ma w niej ani słowa.
Trzecie to lista druków Sejmu X kadencji, pobrana 24 października 2026 r. z API Sejmu (ostatni druk z 22 października). Wśród druków, których tytuł wymienia ustawę o prawach konsumenta albo umowy zawierane na odległość, jedynym rządowym projektem jest druk 2799, czyli ten sam projekt, który stał się ustawą z poz. 1353. Projekt zmieniający kilka ustaw pod innym tytułem mógłby to wyszukiwanie ominąć. Nie sprawdzałem też etapu rządowego w Rządowym Centrum Legislacji, więc nie wykluczam, że projekt istnieje przed skierowaniem do Sejmu.
Polskie prawo zna już coś podobnego, tylko dobrowolnego. Art. 30 ust. 3 ustawy o prawach konsumenta pozwala przedsiębiorcy dać możliwość złożenia oświadczenia o odstąpieniu na swojej stronie internetowej, a art. 30 ust. 4 każe wtedy niezwłocznie przesłać konsumentowi potwierdzenie na trwałym nośniku. Art. 11a idzie dalej w trzech punktach: funkcja staje się obowiązkowa, ma określoną etykietę i osobny przycisk potwierdzenia, a potwierdzenie musi zawierać treść oświadczenia oraz datę i godzinę złożenia.
Co dokładnie musi robić funkcja odstąpienia od umowy
Art. 11a ma pięć ustępów. Poniżej każdy z nich przełożony na zachowanie sklepu, z oficjalnym polskim brzmieniem etykiet z Dziennika Urzędowego UE.
| Ustęp | Wymóg | Co to znaczy w sklepie |
|---|---|---|
| ust. 1 | Funkcja oznaczona słowami „odstąp od umowy tutaj” lub odpowiadającym im jednoznacznym sformułowaniem, w czytelnej formie | przycisk albo link z tym napisem, nie “Zwroty” ani “Pomoc” |
| ust. 1 | Stale dostępna przez cały okres na odstąpienie, umieszczona w wyróżniony sposób i łatwo dostępna | widoczna od złożenia zamówienia do końca terminu, nie schowana w regulaminie |
| ust. 2 | Internetowe oświadczenie pozwala łatwo podać lub potwierdzić imię i nazwisko, dane identyfikujące umowę i dane środka elektronicznego do potwierdzenia | formularz z numerem zamówienia i adresem e-mail, wstępnie wypełniony u zalogowanego klienta |
| ust. 3 | Wysłanie przez funkcję potwierdzenia oznaczoną słowami „potwierdź odstąpienie od umowy” lub jednoznacznym odpowiednikiem | drugi krok z osobnym przyciskiem, dopiero on wysyła oświadczenie |
| ust. 4 | Po potwierdzeniu: bez zbędnej zwłoki potwierdzenie otrzymania na trwałym nośniku, z treścią oraz datą i godziną złożenia | automatyczny e-mail z pełną treścią i znacznikiem czasu |
| ust. 5 | Termin jest zachowany, jeśli oświadczenie złożono przed jego upływem | liczy się chwila kliknięcia, nie chwila, w której ktoś w sklepie przeczyta zgłoszenie |
Motyw 37 dodaje kilka wskazówek do interpretacji. Konsument nie powinien musieć wykonywać czynności, żeby znaleźć funkcję, na przykład pobierać aplikacji, jeśli umowy nie zawarł w tej aplikacji. Przedsiębiorca może prowadzić do funkcji hiperłączami. Klient zalogowany nie powinien drugi raz podawać danych identyfikacyjnych. Przy zamówieniu kilku towarów sklep może pozwolić odstąpić od części umowy. Krok potwierdzenia ma chronić przed przypadkowym odstąpieniem.
Dwie rzeczy z tej tabeli najczęściej giną przy wdrożeniu. Pierwsza to etykieta: “Zwróć produkt” opisuje coś innego, bo zwrot towaru to skutek odstąpienia, nie samo oświadczenie. Druga to ust. 5: jeśli formularz zapisuje zgłoszenie w kolejce, a e-mail wychodzi godzinę później, liczy się czas złożenia, więc ten czas trzeba zapisać po stronie serwera w chwili kliknięcia.
Kogo dotyczy obowiązek przycisku odstąpienia
Art. 11a dotyczy umów zawieranych na odległość “za pośrednictwem interfejsu internetowego”, czyli strony, sklepu, aplikacji. Nie ma znaczenia platforma: WooCommerce, Shopify, PrestaShop, sklep headless na Astro albo Next.js, aplikacja mobilna. Zakres wyznacza prawo odstąpienia, więc obowiązek odpada tam, gdzie tego prawa nie ma.
- Sprzedaż firmom (B2B) nie jest objęta, bo dyrektywa 2011/83 chroni konsumentów. Sklep mieszany potrzebuje przycisku dla zamówień konsumenckich.
- Wyjątki z art. 16 dyrektywy 2011/83 (EUR-Lex), w Polsce art. 38 ustawy o prawach konsumenta: towary wykonane według specyfikacji konsumenta, szybko psujące się, zapieczętowane towary otwarte po dostarczeniu ze względów higienicznych, treści cyfrowe po rozpoczęciu dostarczania za zgodą konsumenta, usługi w pełni wykonane za jego zgodą i inne.
- Sklep z personalizowanymi i zwykłymi towarami potrzebuje przycisku, ale może wyłączyć z formularza pozycje objęte wyjątkiem.
- Subskrypcje i usługi cyfrowe zawierane online są objęte w okresie odstąpienia. Wypowiedzenie umowy po tym okresie to osobny temat, którego art. 11a nie reguluje.
Polski sklep sprzedaje do Niemiec: czy musi mieć przycisk już teraz
Brak polskiej ustawy nie chroni sklepu, który sprzedaje konsumentom w państwie, które art. 11a wdrożyło. Decyduje o tym art. 6 rozporządzenia Rzym I (WE) nr 593/2008 (EUR-Lex). Jeśli przedsiębiorca kieruje działalność do państwa, w którym konsument ma miejsce zwykłego pobytu, umowa podlega prawu tego państwa (ust. 1 lit. b). Strony mogą wybrać inne prawo, ale ten wybór nie może pozbawić konsumenta ochrony przepisów, których nie da się wyłączyć umową (ust. 2). Klauzula “prawem właściwym jest prawo polskie” w regulaminie nie usuwa więc obowiązków z prawa kraju klienta.
Kierowanie działalności to kwestia oceny konkretnego sklepu: wersja językowa, waluta, dostawa do danego kraju, domena krajowa, reklama skierowana na ten rynek. Sklep, który ma niemiecką wersję i wysyła do Niemiec, trudno uznać za niekierujący oferty do Niemiec.
Niemcy mają przepis gotowy. § 356a BGB “Elektronische Widerrufsfunktion bei Fernabsatzverträgen” (gesetze-im-internet.de) przenosi art. 11a niemal słowo w słowo: etykieta “Vertrag widerrufen”, przycisk potwierdzenia “Widerruf bestätigen”, potwierdzenie na trwałym nośniku z treścią oraz datą i godziną. Art. 246e § 1 ust. 2 pkt 14a EGBGB (gesetze-im-internet.de) wymienia brak takiej funkcji wśród zakazanych naruszeń interesów konsumentów, gdy naruszenie jest powszechne w rozumieniu rozporządzenia (UE) 2017/2394, a § 2 tego artykułu przewiduje za nie grzywnę. Wzór pouczenia o odstąpieniu w załączniku 1 do EGBGB ma też nowe zdanie o tym, gdzie konsument znajdzie funkcję online.
Praktyczna reguła dla polskiego sklepu: sprawdź prawo każdego kraju, do którego kierujesz ofertę konsumentom. Tam, gdzie art. 11a jest wdrożony, przycisk jest obowiązkowy już teraz. Dla rynku polskiego obowiązek zacznie się z dniem wejścia w życie polskiej nowelizacji. Najprościej wdrożyć jedną funkcję dla wszystkich rynków: działa tak samo, a po polskiej nowelizacji nie trzeba niczego przebudowywać.
Co grozi sklepowi za brak przycisku odstąpienia
Sankcje ustala prawo krajowe, więc odpowiedź zależy od kraju klienta. Dla Niemiec podstawę daje wspomniany art. 246e EGBGB. Dla Polski dziś nie ma przepisu, który można naruszyć, bo art. 11a nie został przeniesiony.
Jedna konsekwencja wynika z samej dyrektywy. Art. 6 ust. 1 lit. h dyrektywy 2011/83 po zmianie wymaga podania przed zawarciem umowy także “w stosownych przypadkach” informacji o istnieniu i umiejscowieniu funkcji odstąpienia. Art. 10 tej dyrektywy wydłuża termin na odstąpienie o 12 miesięcy, jeśli przedsiębiorca nie przekazał informacji z art. 6 ust. 1 lit. h. W Polsce odpowiednikiem art. 10 jest art. 29 ustawy o prawach konsumenta. Czy sąd w danym kraju zastosuje wydłużenie terminu do sklepu, który nie podał informacji o funkcji odstąpienia, przepisy nie przesądzają, ale sklep, który podaje tę informację i ma działający przycisk, nie musi tego sprawdzać w sądzie.
Dlatego regulamin i pouczenie o odstąpieniu warto zaktualizować razem z przyciskiem: jedno zdanie o tym, że konsument może odstąpić online, i link do funkcji.
Przycisk odstąpienia od umowy w WooCommerce: gdzie go umieścić
W WooCommerce masz dziś trzy drogi: funkcję wbudowaną od wersji 11.1, wtyczkę albo własny kod. Wszystkie muszą odpowiedzieć na te same pytania: gdzie klient zobaczy przycisk, czy gość bez konta też go znajdzie, co trafia do bazy i jaki mail wychodzi.
Funkcja wbudowana. WooCommerce 11.1, wydany 3 września 2026 r. (GitHub), dodał funkcję Order withdrawal. Według dokumentacji WooCommerce i kodu wersji 11.2.1, którą sprawdziłem:
- jest domyślnie wyłączona, włączasz ją w panelu w WooCommerce > Settings > Advanced > Features (ścieżka z angielskiej wersji panelu),
- formularz działa bez logowania pod adresem /ja-account/withdraw-order/ (końcówkę adresu zmienisz w Advanced > Page setup),
- pyta o imię, nazwisko, e-mail podany dwa razy i numer zamówienia, potem o to, czy odstąpienie dotyczy całego zamówienia czy wybranych pozycji (pozycje klient opisuje tekstem),
- ma krok przeglądu z przyciskiem “Confirm withdrawal” i wysyła klientowi potwierdzenie z danymi oraz datą i godziną złożenia,
- dopasowane zgłoszenie dodaje notatkę do zamówienia i powiadomienie w skrzynce WooCommerce, jedno zamówienie przyjmuje jedno zgłoszenie, a kolejne próby z tego samego adresu e-mail i IP blokuje na 30 sekund,
- ostrzeżenie o upływie 14 dni liczy od daty utworzenia zamówienia, bo WooCommerce nie zna daty dostawy, i jest tylko informacją dla sprzedawcy.
Czego funkcja nie robi: nie umieszcza nigdzie linku. W kodzie 11.2.1 nie ma pozycji w menu konta klienta, przycisku przy zamówieniu, linku w mailach ani w stopce. Bez tego formularz istnieje, ale klient go nie znajdzie, a art. 11a ust. 1 wymaga funkcji umieszczonej w wyróżniony sposób. Etykieta “odstąp od umowy tutaj” w polskiej wersji sklepu i miejsca jej wyświetlania to twoja praca.
Wtyczka. Jedną z opcji jest Withdraw, wtyczka do WooCommerce, którą rozwijam w WPPoland i publikuję w katalogu WordPress.org (wersja 1.10.1). Według jej opisu dodaje przycisk Withdraw from contract here pod szczegółami zamówienia i na liście zamówień w Moim koncie, wstawia link do maili o zamówieniu w realizacji i zrealizowanym, pozwala odstąpić od wybranych sztuk każdej pozycji, liczy okres dla towarów od realizacji zamówienia i prowadzi rejestr zgłoszeń ze statusami. Odrzucenie zgłoszenia wymaga podania powodu. Wtyczka niczego nie zwraca sama, zwrot pieniędzy robisz w zamówieniu jak zwykle. Zrzut z jej widoku zamówień jest grafiką tego artykułu.
Aktualizacja, . Withdraw 1.8.0 liczy termin odstąpienia według art. 3 rozporządzenia 1182/71: dnia początkowego nie wlicza, termin kończy się o północy ostatniego dnia, a gdy ten wypada w sobotę lub niedzielę, przesuwa się na poniedziałek. Terminy tylko się wydłużają, nigdy nie skracają. Gdy znasz faktyczną datę dostawy, filtr withdraw/delivery_date zastępuje nią status “zrealizowane”, ustawienie dni zwłoki dodaje dni, a tryb doradczy przyjmuje spóźnione oświadczenie i oznacza je w rejestrze oraz w notatce do zamówienia. Po częściowym odstąpieniu reszta zamówienia nadal może być objęta odstąpieniem: sztuki z oświadczeniem oczekującym, przyjętym lub zrealizowanym nie są już oferowane, a odrzucone zwalnia swoje. Produkty i kategorie oznaczysz jako wyjątki z art. 16 lit. c, d i e dyrektywy (w Polsce art. 38 ustawy o prawach konsumenta), z informacją na karcie produktu, a oznaczenie zapisuje się przy pozycji zamówienia w kasie, więc późniejsza zmiana nie rusza prawa przy złożonych już zamówieniach. Przy usługach pomaga Polski for WooCommerce 1.44.0: w kasie, klasycznej i blokowej, pokazuje pole wyboru dla usług (żądanie rozpoczęcia świadczenia przed upływem terminu), gdy w koszyku jest produkt z kategorii wyłączonej z odstąpienia powodem Usługa (art. 38 ust. 1), a odpowiedź zapisuje przy zamówieniu. Taka usługa przestaje podlegać odstąpieniu dopiero wtedy, gdy żądanie jest przy zamówieniu, a zamówienie zrealizowane. Dla towarów dla dorosłych ta sama wtyczka dodaje pole potwierdzenia wieku 18+, zapisane przy zamówieniu. To moje wtyczki, darmowe w katalogu WordPress.org.
Aktualizacja, . Withdraw 1.8.1 pokazuje na ekranie potwierdzenia hash weryfikacyjny SHA-256 oświadczenia (dyrektywa 2011/83/UE art. 11a ust. 4), wpisuje go do potwierdzenia dla klienta i do rejestru zgłoszeń oraz eksportuje rejestr do CSV z filtrami statusu i daty oraz ochroną przed wstrzyknięciem formuł do arkusza. Na liście zamówień WooCommerce pojawia się kolumna ze statusem odstąpienia, linkiem do rejestru i ostrzeżeniem o spóźnionym zgłoszeniu (lista zmian).
Aktualizacja, . Withdraw 1.11.0, moja własna wtyczka do WooCommerce, wysyła teraz potwierdzenie także wtedy, gdy oświadczenie o odstąpieniu nie pasuje do żadnego zamówienia. Włączasz opcję Accept declarations that match no order, a klient, który wpisał zły numer zamówienia lub inny adres e-mail, i tak dostaje potwierdzenie (dyrektywa 2011/83/UE, załącznik I część A, instrukcja wypełniania 3). Adres nie jest zweryfikowany, więc wiadomość podaje tylko, że oświadczenie wpłynęło, kiedy, i jego kod odbioru, bez numeru zamówienia, towaru i powodu. Dla sklepu oznacza to, że żadne oświadczenie nie zostaje bez odpowiedzi.
Aktualizacja, . Withdraw 1.9.0 i 1.10.0 odróżniają towary od usług. Zamówienie złożone wyłącznie z produktów wirtualnych (usług, treści cyfrowych) liczy okres odstąpienia od daty zamówienia, czyli dnia zawarcia umowy (art. 9 ust. 2 lit. a i c dyrektywy 2011/83/UE). Zamówienie z choć jednym towarem fizycznym nadal liczy go od dostawy. Ustawienie Your contracts are for (towary, usługi, treści cyfrowe) dopasowuje wzór pouczenia o odstąpieniu i wzór formularza: dla usług i treści cyfrowych pouczenie liczy termin od zawarcia umowy i pomija akapity o odesłaniu towaru, a usługi dostają jeszcze akapit o zapłacie za świadczenie wykonane do chwili odstąpienia i wersję formularza dla usług (załącznik I część A i B dyrektywy). Towary, czyli ustawienie domyślne, działają jak dotąd (lista zmian).
Aktualizacja, . Od wersji 1.0.18 Redono Pro, moja wtyczka do zwrotów w WooCommerce, współpracuje z Withdraw. Oświadczenie o odstąpieniu zapisane przez Withdraw od razu otwiera zgłoszenie zwrotu, które wskazuje to oświadczenie, a pieniądze wracają do klienta tylko z tego zgłoszenia (lista zmian). Sklep ma wtedy jeden ślad od oświadczenia do zwrotu pieniędzy i nie wypłaci zwrotu dwa razy, gdy klient napisze jeszcze maila albo założy drugie zgłoszenie.
Aktualizacja, . Najwięcej pułapek kryje się w liczeniu terminu. Przy sprzedaży towaru okres odstąpienia kończy się 14 dni po dniu, w którym konsument wszedł w posiadanie rzeczy (art. 9 ust. 2 lit. b dyrektywy 2011/83/UE), a funkcja odstąpienia ma być dostępna nieprzerwanie przez cały ten okres (art. 11a ust. 1). Sklep, który liczy 14 dni od daty zamówienia, zabiera przycisk klientowi, którego paczka jeszcze jedzie, na przykład przy przedsprzedaży albo długiej wysyłce. Tak to rozwiązuje moja wtyczka Polski for WooCommerce: przycisk pojawia się od zawarcia umowy (zamówienie w realizacji albo wstrzymane), zostaje do zrealizowania zamówienia i znika 14 dni po tej dacie, a zamówienia anulowane, zwrócone i nieopłacone go nie pokazują. W oświadczeniu klient widzi swoje imię i adres e-mail, na który pójdzie potwierdzenie, bo tych danych wymaga art. 11a ust. 2. Withdraw pokazuje akcję odstąpienia na liście zamówień w Moim koncie i link w mailach tylko w okresie odstąpienia, a dopóki strona z formularzem nie jest opublikowana, nie drukuje linku, który prowadziłby donikąd. Status “zrealizowane” jest tu przybliżeniem daty doręczenia, więc ustawiaj go po dostawie, nie w chwili nadania paczki. Sprawdzisz swój sklep jednym testem: zostaw zamówienie testowe w realizacji dłużej niż 14 dni i zobacz, czy przycisk nadal jest widoczny.
Własny kod ma sens, gdy sklep ma niestandardowy proces zwrotów, integrację z ERP albo działa headless. Wtedy wymagania z tabeli wyżej są specyfikacją.
Niezależnie od drogi, przycisk powinien być w czterech miejscach:
| Miejsce | Dla kogo | Uwagi |
|---|---|---|
| Lista zamówień i szczegóły zamówienia w Moim koncie | klienci z kontem | ukryj po upływie terminu |
| Mail z potwierdzeniem i mail o wysyłce lub realizacji | wszyscy, także goście | link z numerem zamówienia, bez zmuszania do logowania |
| Stopka sklepu | goście, którzy zgubili maila | link do formularza z wyszukiwaniem po numerze i e-mailu |
| Pouczenie o odstąpieniu i regulamin | wszyscy | informacja o istnieniu i miejscu funkcji |
Goście to najsłabszy punkt. Funkcja wbudowana i wtyczka Withdraw obsługują ich przez numer zamówienia i adres e-mail. Jeśli twój formularz wymaga konta, klient, który kupił bez rejestracji, musiałby je zakładać, a motyw 37 mówi o braku dodatkowych procedur przy dostępie do funkcji.
Przycisk odstąpienia w Shopify
Shopify opisuje temat na dwóch stronach pomocy. Strona o prawie odstąpienia w UE streszcza wymogi dyrektywy: łatwy do znalezienia przycisk lub link, na przykład z konta klienta albo strony statusu zamówienia, dwuetapowe potwierdzenie i automatyczne potwierdzenie na trwałym nośniku. Strona o regułach zwrotów podaje konfigurację:
- włącz samoobsługowe zwroty i anulowania, z opcją zgłaszania zarówno zwrotów, jak i anulowań,
- ustaw okno anulowania na Until item is fulfilled, żeby klient mógł zrezygnować przed wysyłką,
- ustaw okno zwrotu na co najmniej 14 dni liczone od dostawy ostatniej pozycji i zaznacz wydłużenie na weekendy i święta,
- dodaj widoczny link do kont klientów albo pozycję menu prowadzącą do zamówień, osobno dla rynku UE, jeśli masz osobne menu per rynek.
Shopify sam zaznacza, że te narzędzia nie oznaczają automatycznie zgodności. Dwie rzeczy warto sprawdzić względem art. 11a. Pozycja menu może mieć dowolną nazwę, więc nazwij ją “odstąp od umowy tutaj”, a nie “Moje zamówienia”. Konta klientów w Shopify wymagają zalogowania kodem z e-maila, więc oceń, czy dla gościa to nie jest dodatkowa procedura, i rozważ osobną stronę z formularzem bez logowania.
Sklep headless lub własny system: co musi zapisać backend
W sklepie na Astro, Next.js albo własnym frameworku wszystko powyżej trzeba zbudować samodzielnie. Minimalny zapis zgłoszenia, który pozwoli wykazać spełnienie ust. 4 i 5:
- identyfikator zamówienia i, przy odstąpieniu częściowym, lista pozycji z ilościami,
- imię i nazwisko oraz adres e-mail, na który poszło potwierdzenie,
- dokładny tekst oświadczenia, który klient zobaczył w kroku potwierdzenia, zapisany w chwili wysłania, a nie odtwarzany później z szablonu,
- znacznik czasu z serwera w UTC, z wyświetleniem w strefie sklepu w mailu,
- identyfikator wysłanego maila i status doręczenia z dostawcy poczty.
Ostatni punkt łączy się z dostarczalnością. Potwierdzenie na trwałym nośniku to zwykle e-mail, a sklep, którego maile trafiają do spamu albo w ogóle nie wychodzą, nie spełnia ust. 4, choć formularz działa. Jak to sprawdzić w WordPressie, opisałem w poradniku o SMTP, SPF i DKIM.
Formularz bez logowania to też powierzchnia ataku: ktoś znający numer zamówienia i e-mail może złożyć odstąpienie w cudzym imieniu albo podejrzeć zawartość zamówienia. Ograniczenie liczby prób, brak różnicy w odpowiedzi dla istniejącego i nieistniejącego zamówienia oraz pokazywanie pozycji dopiero po weryfikacji to rozsądne minimum. Wtyczka Withdraw ma do tego opcjonalny jednorazowy link wysyłany na adres z zamówienia, domyślnie wyłączony, bo uzależnia odstąpienie od działającej poczty.
Jak przetestować przycisk odstąpienia przed wdrożeniem
Testuj na stagingu, na fikcyjnym zamówieniu i skrzynce, którą kontrolujesz. Dokumentacja WooCommerce proponuje podobną procedurę dla funkcji wbudowanej. Lista kontrolna:
- Otwórz sklep w oknie prywatnym, bez logowania. Znajdź przycisk ze strony głównej w nie więcej niż dwóch kliknięciach.
- Złóż zamówienie jako gość. Sprawdź, czy mail z potwierdzeniem zamówienia zawiera link do funkcji.
- Wypełnij formularz. Sprawdź, czy krok drugi ma osobny przycisk z etykietą “potwierdź odstąpienie od umowy” i czy przed jego kliknięciem nic nie zostało wysłane.
- Potwierdź. Sprawdź, czy mail przyszedł od razu, zawiera pełną treść oświadczenia, datę i godzinę, i czy nie trafił do spamu.
- Sprawdź w panelu, czy zgłoszenie jest przypisane do zamówienia i czy status płatności się nie zmienił.
- Złóż zgłoszenie dla zamówienia z nieistniejącym numerem. Sprawdź, czy sklep i tak je przyjął i powiadomił obsługę do ręcznego sprawdzenia.
- Zmień datę realizacji testowego zamówienia na starszą niż termin. Sprawdź, czy przycisk zniknął z konta klienta.
- Przejdź formularz samą klawiaturą i czytnikiem ekranu. Funkcja, której nie da się obsłużyć bez myszy, nie jest “łatwo dostępna”; wymagania dostępności sklepu opisałem w artykule o WCAG 2.2 i EAA.
Po wdrożeniu sprawdź jeszcze, czy narzędzia analityczne nie ładują się na stronie formularza bez zgody: formularz odstąpienia to strona z danymi osobowymi, a typowe błędy banerów zgód opisałem w tekście o skryptach ładujących się mimo odrzucenia.
Od czego zacząć w swoim sklepie
Najpierw lista rynków: do jakich krajów kierujesz ofertę konsumentom i które z nich wdrożyły art. 11a. Potem wybór drogi technicznej i miejsca przycisku według tabeli wyżej, aktualizacja pouczenia o odstąpieniu i test z listy. Kolejność ma znaczenie, bo od listy rynków zależy, czy przycisk jest pilny już dziś, czy dopiero po polskiej nowelizacji.
Jeśli chcesz, żeby ktoś przejrzał sklep pod kątem tego i innych wymogów unijnych (dostępność, zgody, GPSR, Omnibus), opisuję to w audycie zgodności EU dla WordPressa. Wdrożenie w WooCommerce, od funkcji wbudowanej po integrację zwrotów z ERP, robię w ramach usług programisty WooCommerce.







