DfCartRecovery: odzyskiwanie porzuconego koszyka dla Shopware 6
Instalacja i konfiguracja odzyskiwania porzuconych koszyków w Shopware 6: zaplanowane przypomnienia, unikalne kody rabatowe, link przywracający i tracking.
Wprowadzenie
DfCartRecovery dodaje do Shopware 6 (Community Edition) odzyskiwanie porzuconych koszyków, normalnie zarezerwowane dla planu Commercial: wykrywanie koszyków, do 3 zaplanowanych e-maili przypominających, unikalny kod rabatowy per klient, link przywracający koszyk jednym kliknięciem i tracking odzyskanych zamówień. Żadnych usług zewnętrznych, żadnego builda administracji: wszystko konfiguruje się w ustawieniach pluginu.
Wymagania
- Shopware 6.5, 6.6 lub 6.7 (Community Edition self-hosted; Shopware Cloud SaaS nie jest obsługiwany)
- PHP 8.1 lub nowszy (zalecane 8.2+)
- Aktywny konsument wiadomości i wykonywanie zadań cyklicznych (standardowa rekomendacja Shopware w produkcji)
- Działająca wysyłka e-maili w sklepie (przypomnienia idą przez natywny serwis mail Shopware)
Instalacja
- Rozpakuj archiwum i umieść katalog
DfCartRecoverywcustom/plugins/. - Z katalogu głównego Shopware wykonaj:
bin/console plugin:refresh
bin/console plugin:install --activate DfCartRecovery
bin/console cache:clear
Zadanie cykliczne df_cart_recovery.process rejestruje się automatycznie i wykonuje co 15 minut. Sprawdź, czy Twoje workery działają:
bin/console scheduled-task:run
bin/console messenger:consume async low_priority
Instalacja tworzy tabelę śledzenia df_cart_recovery i szablon e-maila “Przypomnienie o porzuconym koszyku (DataFirefly)”, wstępnie przetłumaczony na FR, EN, DE, ES i IT.
Konfiguracja
Przejdź do Rozszerzenia → Moje rozszerzenia → DfCartRecovery → Konfiguracja. Trzy karty ustawień:
Ogólne
- Włącz odzyskiwanie koszyków: globalny przełącznik pluginu.
- Minimalna wartość koszyka: koszyki poniżej tej kwoty są ignorowane (0 = brak minimum).
- Retencja danych (dni): starsze rekordy śledzenia są usuwane automatycznie (domyślnie 30 dni, zobacz sekcję RODO).
E-maile przypominające
- Liczba przypomnień: 1, 2 lub 3 (domyślnie 2).
- Przypomnienie 1: minuty po porzuceniu koszyka (domyślnie 60, czyli 1 godzina).
- Przypomnienie 2: minuty po przypomnieniu 1 (domyślnie 1440, czyli 24 godziny).
- Przypomnienie 3: minuty po przypomnieniu 2 (domyślnie 4320, czyli 72 godziny).
Sekwencja 1 h / +24 h / +72 h to sprawdzony standard e-mailowego retargetingu: zostaw ją jako punkt wyjścia, a potem dostrajaj według swoich statystyk odzyskiwania.
Kod rabatowy
- Dołącz unikalny kod rabatowy: włącza generowanie kodów indywidualnych.
- Promocja dla generowanych kodów: wybierz promocję Shopware, która będzie nośnikiem kodów (patrz niżej).
- Wyślij kod z przypomnieniem nr: domyślnie 2: klienci wracający po pierwszym e-mailu zamawiają bez rabatu.
- Prefiks kodu: domyślnie CART; generowane kody wyglądają jak
CART-7F3A91B2.
Utworzenie promocji dla unikalnych kodów
- W administracji Shopware otwórz Marketing → Promocje i utwórz promocję (albo użyj istniejącej).
- W zakładce ogólnej włącz Indywidualne kody promocyjne.
- Ustaw rabat (procent lub kwota), warunki i okres ważności jak zwykle.
- Aktywuj promocję, a następnie wybierz ją w konfiguracji pluginu.
Promocja musi koniecznie mieć włączone kody indywidualne: plugin wstawia wygenerowane kody do tej listy. Bez tej opcji wysłane kody nie zostaną zaakceptowane w checkoucie.
Personalizacja e-maila przypominającego
Treść edytujesz w Ustawienia → Szablony e-mail, typ “Przypomnienie o porzuconym koszyku (DataFirefly)”, dla każdego języka sklepu. Dostępne zmienne Twig:
firstName/lastName: imię i nazwisko klientaitems: pozycje koszyka, każda zlabeliquantitytotalicurrency: kwota koszyka i kod walutyrecoveryUrl: link przywracający koszyk (umieść go na przycisku akcji)voucherCode: unikalny kod rabatowy (pusty, gdy opcja wyłączona lub przypomnienie bez kodu: otocz jego blok warunkiem Twig)shopName: nazwa sklepu kanału sprzedażyreminderNumber: numer bieżącego przypomnienia (1, 2 lub 3)
Link przywracający
Każdy e-mail zawiera unikalny link postaci /df-cart-recovery/token, generowany na domenie kanału sprzedaży klienta, w jego języku. Po kliknięciu plugin odbudowuje koszyk pozycja po pozycji, sygnalizuje produkty, które stały się niedostępne, komunikatem w storefroncie, odnotowuje czas kliknięcia i przekierowuje na stronę koszyka. Linki nieprawidłowe lub wygasłe przekierowują na stronę główną z czytelnym komunikatem.
Tracking odzyskiwania
Gdy tylko zamówienie zostaje złożone, plugin dopasowuje adres e-mail klienta do trwających porzuconych koszyków: rekord przechodzi w status “odzyskany” z identyfikatorem zamówienia, datą i liczbą wysłanych przypomnień. Przypomnienia dla tego koszyka natychmiast się kończą. Dane można przeglądać w tabeli df_cart_recovery (tokeny, statusy, kliknięcia, powiązane zamówienia) na potrzeby Twoich raportów SQL lub BI.
RODO i dane
- Żadne dane nie opuszczają Twojego serwera; nie jest wywoływana żadna usługa firm trzecich.
- Rekordy śledzenia są automatycznie czyszczone po skonfigurowanym okresie retencji.
- Przy odinstalowaniu wybierz “Usuń wszystkie dane aplikacji”, aby skasować tabelę, szablon e-maila i konfigurację, albo zachowaj je, żeby zatrzymać historię.
Rozwiązywanie problemów
Żaden e-mail nie jest wysyłany
- Sprawdź, czy zadanie cykliczne działa:
bin/console scheduled-task:listpowinno pokazywaćdf_cart_recovery.processw statusie scheduled, a Twoje workery messengera muszą być aktywne. - Przetestuj globalną wysyłkę e-maili sklepu (Ustawienia → Agent pocztowy): plugin korzysta ze standardowego serwisu mail.
- Skontroluj minimalną wartość koszyka i opóźnienie przypomnienia 1: koszyk porzucony 20 minut temu przy opóźnieniu 60 minut nie jest jeszcze kwalifikowany.
Goście nic nie otrzymują
To oczekiwane zachowanie: bez adresu e-mail żadne przypomnienie nie jest możliwe. Goście są śledzeni od momentu identyfikacji (logowanie lub założenie konta podczas checkoutu); scalenie koszyka aktualizuje rekord ich adresem.
Kod rabatowy nie pojawia się w e-mailu
- Sprawdź, czy opcja “Dołącz unikalny kod rabatowy” jest aktywna i czy wybrano promocję.
- Promocja musi istnieć, być aktywna i mieć włączone kody indywidualne.
- Kod jest dołączany dopiero od skonfigurowanego przypomnienia (domyślnie drugiego): przypomnienie 1 w standardowej konfiguracji go nie zawiera.
Link przywracający odsyła na stronę główną
Token jest nieprawidłowy albo rekord został wyczyszczony (przekroczona retencja); klient otrzymuje komunikat zachęcający do ponownego złożenia koszyka. Wydłuż okres retencji, jeśli Twoje opóźnienia przypomnień są długie.