Odzyskiwanie porzuconych koszyków to jedna z najlepiej policzonych rzeczy w handlu internetowym. Ma jednak warunek wstępny, który w polskich poradnikach znika między akapitami: przypomnienie o koszyku jest informacją handlową, a informację handlową wysyła się za zgodą odbiorcy.
Adres podany w kasie został podany po to, żeby doszła faktura i plik. Nie po to, żeby przyszła zachęta do dokończenia zakupu.
Zgoda musi być osobna i odznaczona
Trzy rzeczy, które warunkują, czy zgoda w ogóle jest zgodą:
- Osobne pole - nie doklejone do akceptacji regulaminu. Zgoda zbiorcza na kilka rzeczy naraz nie jest zgodą na żadną z nich.
- Domyślnie odznaczone - pole zaznaczone z góry nie jest oświadczeniem woli klienta.
- Zapisane brzmienie - nie sam fakt „zaznaczył”, tylko konkretny tekst, data i okoliczności. Za dwa lata nikt nie będzie pamiętał, jak brzmiała zgoda z tamtej wersji kasy, a to właśnie trzeba będzie pokazać.
Brzmienia zgody nie bierz z cudzego sklepu. To tekst prawny, za który odpowiadasz, i powinien pochodzić od twojego prawnika - podobnie jak regulamin. Dobra wtyczka pozwala go wpisać i nie wpisuje go za ciebie.
Adres i zgodę trzeba poznać w trakcie, nie na końcu
To jest ta część, którą najłatwiej przeoczyć przy pisaniu. Wygląda na szczegół techniczny, a przesądza o tym, czy mechanizm w ogóle ma sens.
Koszyk, za który ktoś zapłacił, nie jest porzucony. Jeśli adres i zgodę odczytasz dopiero przy składaniu zamówienia, dostaniesz dane wyłącznie od osób, które dokończyły zakup - czyli od wszystkich poza tymi, do których chciałeś napisać.
Dane trzeba przechwycić wtedy, kiedy klient wypełnia formularz:
// Kasa blokowa - Store API aktualizuje klienta przy każdej zmianie pola.
add_action(
'woocommerce_store_api_cart_update_customer_from_request',
'moj_przechwyt_kasy',
10,
2
);
// Kasa klasyczna - to samo, inna ścieżka.
add_action( 'woocommerce_checkout_update_order_review', 'moj_przechwyt_klasyczny' );
Pole zgody musi być w grupie „contact”
Przy rejestracji pola przez woocommerce_register_additional_checkout_field lokalizacja nie jest kosmetyką. Pola z grupy order WooCommerce zapisuje dopiero razem z zamówieniem - czyli nigdy, jeśli zamówienia nie ma. Pole zgody na przypomnienie o koszyku musi mieć 'location' => 'contact', bo tylko wtedy poznasz jego wartość przed kliknięciem „kupuję”.

Dwie pułapki przy wysyłce
Znak „wysłane” stawiaj przed wysyłką
Kolejność wygląda niewinnie, a decyduje o tym, co się stanie przy awarii. Jeśli oznaczysz zadanie jako wykonane dopiero po udanej wysyłce, a serwer poczty zawiesi się w trakcie, przy następnym przebiegu zadanie będzie nadal „oczekujące” - i klient dostanie ten sam mail drugi raz.
Lepiej nie wysłać niż wysłać dwa razy. Niewysłane przypomnienie to utracona szansa; wysłane dwa razy to zgłoszenie spamu, które zabiera ze sobą reputację całej domeny - razem z fakturami.
Cron odrzuca zdarzenia, które stoją zbyt blisko siebie
Funkcja wp_schedule_single_event() odrzuca duplikat w promieniu dziesięciu minut od istniejącego zdarzenia o tym samym haku. Przy testach wygląda to jak błąd w kodzie: zaplanowane „na już” zdarzenie po cichu nie powstaje, bo cykliczne stoi za dwie minuty. Nie powstaje też komunikat - funkcja zwraca po prostu wartość, której nikt nie sprawdza.
Ile przypomnień i kiedy
Przy produktach cyfrowych pierwsze przypomnienie po godzinie trafia w moment, w którym decyzja jeszcze trwa. Drugie po dobie jest już ostatnie, które ma sens - trzeci mail przestaje być przypomnieniem, a zaczyna być naprzykrzaniem się.
Każdy mail musi mieć działający odnośnik do wypisania się, nagłówek List-Unsubscribe i prawdziwego nadawcę w domenie sklepu. Bez SPF, DKIM i DMARC nawet poprawnie zebrana zgoda nie pomoże - wiadomość i tak wyląduje w spamie.
Co, jeśli zgody nie masz
Wtedy mechanizm ma stać. My tak właśnie mamy w naszym sklepie: wtyczka do porzuconych koszyków jest wyłączona, bo nie mamy brzmienia zgody od prawnika - a bez wpisanego brzmienia nie pokazuje pola w kasie, nie zapisuje ani jednego adresu i nie wysyła ani jednej wiadomości.
To nie jest ostrożność na wyrost. Mechanizm, który zbiera adresy „na zapas”, do czasu aż ktoś dopisze zgodę, zdąży zebrać bazę, której nie wolno użyć - i której trzeba będzie się pozbyć.
Nowa wtyczka? Dowiesz się pierwszy.
Premiery, poradniki i promocje - raz na jakiś czas, bez zasypywania skrzynki.