Cechy i zalety modułu
- Newsletter w całości wewnątrz PrestaShop — dane subskrybentów, treść kampanii i statystyki zostają w bazie sklepu, bez przekazywania listy adresowej do zewnętrznego dostawcy i bez opłat za liczbę wysłanych wiadomości.
- Kreator kampanii w czterech krokach (szablon, produkty, odbiorcy, wysyłka) z podglądem na każdym etapie i z podsumowaniem przed startem.
- Blok produktowy budowany z katalogu sklepu: miniatura, nazwa, cena i link prowadzą do realnych produktów, w cenach i stanach z chwili przygotowania kampanii.
- Własny silnik wysyłki z kolejką: praca porcjami, blokada przed równoległym wysyłaniem tej samej kampanii, ponawianie nieudanych adresów i wznowienie po przerwaniu — nic nie ginie po zamknięciu karty przeglądarki.
- Konsola wysyłki na żywo z linią na każdą próbę: godzina, adres, wynik i pełna odpowiedź serwera pocztowego przy odmowie — widać, co dokładnie odrzucił serwer, bez wchodzenia w dzienniki PrestaShop.
- Jedenaście kontroli przed wysyłką, które nie są dekoracją: wiersz oznaczony jako blokujący odrzuca start kampanii z podaniem konkretnej przyczyny.
- Diagnostyka domeny nadawcy (MX, SPF, DKIM, DMARC) wprost w panelu — te rekordy decydują, czy Gmail i Yahoo potraktują wysyłkę masową jako uwierzytelnioną.
- Zgodność z wymogami wypisu: nagłówki jednokliknięciowego wypisu (RFC 8058) oraz link wypisu wymagany w każdym języku szablonu, sprawdzany przed wysyłką.
- Tryb próbny (dry run) pozwala przećwiczyć całą kampanię od początku do końca — silnik przechodzi całą kolejkę, ale żadna wiadomość nie opuszcza sklepu.
- Rejestr zgód czyta dowody z samego PrestaShop na żywo i nigdy nie twierdzi, że ktoś wyraził zgodę, jeśli nie ma na to zapisu — adres bez odnotowanej daty opisany jest jako „brak dowodu”, a nie jako zgoda.
- Zbundlowany edytor TinyMCE 6.8.6 na licencji MIT — treści szablonów edytujesz WYSIWYG bez pobierania czegokolwiek z CDN.
- Pięć gotowych, responsywnych szablonów wiadomości w polskiej i angielskiej wersji, instalowanych razem z modułem i możliwych do odtworzenia jednym przyciskiem.
- Pełne wsparcie wielu języków i multistore: temat i treść osobno dla każdego języka, kampania na stałe przypisana do jednego sklepu.
- Interfejs w całości przetłumaczony na polski, w dualnym systemie tłumaczeń obsługującym zarówno klasyczne słowniki, jak i system PrestaShop 1.7.8+.
- Brak Composera, brak zewnętrznych bibliotek PHP i brak połączeń do zewnętrznych usług przy wysyłce — moduł korzysta z konfiguracji poczty samego PrestaShop.
Najważniejsze funkcjonalności modułu
- Własna zakładka w panelu administracyjnym (pod menu Klienci) z ośmioma sekcjami: Pulpit, Kampanie, Szablony, Odbiorcy, Import, Zgody, Statystyki i Ustawienia.
- Kreator kampanii: krok 1 — nazwa i szablon, krok 2 — produkty i wygląd bloku, krok 3 — odbiorcy, krok 4 — kontrole, harmonogram i wysyłka.
- Wyszukiwarka produktów po nazwie, referencji i kodzie EAN oraz hurtowe dodawanie z kategorii: 8 bestsellerów, 8 najnowszych albo cała kategoria.
- Bestsellery liczone na podstawie sztuk sprzedanych w ostatnich 30 dniach, wyłącznie z ważnych zamówień.
- Układ bloku produktowego: 1, 2 lub 3 kolumny oraz cztery style kart (Jasny, Ciemny, Z obramowaniem, Rozbudowany) z własną paletą kolorów, kolejność produktów zmieniana strzałkami góra/dół przy każdej pozycji.
- Ostrzeżenie o rozmiarze wiadomości mierzone po stronie serwera względem progu przycinania w Gmailu (~102 kB) — zanim kampania zostanie wysłana obcięta.
- Możliwość wysłania kampanii całkiem bez bloku produktowego.
- Biblioteka szablonów: pięć gotowych układów (Klasyczny (default), Promocja, Editorial, Minimal, Grid), tworzenie własnych, duplikowanie, podgląd, wysyłka testowa i przycisk odtworzenia szablonów z paczki.
- Temat i treść wiadomości osobno dla każdego języka sklepu, edytowane w TinyMCE 6.8.6 bez CDN.
- Siedemnaście znaczników do wstawienia w szablonie: {firstname}, {lastname}, {email}, {shop_name}, {shop_url}, {shop_logo_url}, {date_text}, {unsubscribe_link}, {view_in_browser}, {page_new_products}, {page_best_sales}, {page_contact_link}, {page_sitemap}, {page_my_orders}, {page_my_addresses}, {page_my_vouchers}, {page_my_personal_info} — plus {products} na blok produktowy.
- Adresy stron sklepu w znacznikach rozwiązywane dla sklepu kampanii i języka odbiorcy, z użyciem przyjaznych adresów URL danego języka.
- Dobór odbiorców: grupy klientów, języki odbiorców, lista zaimportowana z CSV, listy mailingowe oraz lista adresów wykluczonych — z liczbami na żywo (Natywni, Zaimportowani, Wykluczeni, Łącznie).
- Scalanie i odduplikowanie adresów ze wszystkich źródeł po adresie e-mail, z automatycznym odjęciem wypisanych i wykluczonych.
- Listy mailingowe stałe (dokładnie te adresy, które do niej wrzucisz) i dynamiczne (zapisane filtry przeliczane w chwili przygotowania kampanii), z możliwością zmiany nazwy, duplikowania, eksportu do CSV i usunięcia.
- Przeglądarka wszystkich znanych adresów — klienci, goście zapisani przez blok newslettera PrestaShop i adresy zaimportowane — w jednym miejscu, z filtrami źródła, statusu, języka i grupy klientów.
- Segmentacja po historii zakupów: minimalna wydana kwota, minimalna liczba zamówień, zakup w ciągu ostatnich N dni, klienci którzy kupowali wcześniej ale nie w ostatnich N dniach, zakup z konkretnej kategorii, zakup konkretnego produktu (ID) oraz brak zakupu konkretnego produktu.
- Import adresów z pliku CSV w formacie
email;firstname;lastname;iso— wymagana jest wyłącznie kolumna e-mail, separator (średnik, przecinek lub tabulator) wykrywany automatycznie, wiersz nagłówka pomijany, do 50 000 wierszy na plik. - Ponowny import tego samego adresu aktualizuje jego dane zamiast tworzyć duplikat; importowane adresy można od razu dopisać do wybranej listy mailingowej.
- Wysyłka natychmiastowa z otwartej karty przeglądarki albo zaplanowana na wybraną datę i godzinę i realizowana przez zadanie cron.
- Silnik wysyłki z parametrami: wielkość porcji 1–500 wiadomości (domyślnie 20), przerwa między wiadomościami 0–5000 ms (domyślnie 100), budżet czasu jednego przebiegu 5–45 s (domyślnie 20) i liczba prób na odbiorcę 1–10 (domyślnie 3).
- Sterowanie wysyłką: Wstrzymaj, Wznów i Zatrzymaj, a także przejęcie kampanii, która została uruchomiona w innej karcie lub jest prowadzona przez cron.
- Konsola wysyłki na żywo w formie okna tekstowego: jedna linia na każdą próbę, z godziną, adresem, wynikiem (przyjęty, odrzucony i ponawiany, porzucony, pominięty) i pełnym komunikatem serwera pocztowego.
- Liczniki postępu rozróżniające Nieudane od Ponawianych — adres odrzucony przed wyczerpaniem prób jest widoczny od razu, a nie dopiero po zakończeniu kampanii.
- Tabela kolejki z filtrowaniem po statusie (Wszyscy, Nieudane, Wysłano, Oczekujące, Pominięte), grupowaniem błędów według odpowiedzi serwera i rozróżnieniem błędów tymczasowych (4xx) od trwałych (5xx).
- Eksport nieudanych adresów do pliku CSV wprost z ekranu wysyłki.
- Jedenaście kontroli przed wysyłką: metoda wysyłki poczty w PrestaShop, poprawność adresów na kopercie (BCC i Reply-To), obecność odbiorców, zamrożona treść wiadomości, link wypisu w każdym języku, temat w każdym języku, wysłana wiadomość testowa, zgodność adresu nadawcy z domeną sklepu, rekordy SPF/DKIM/DMARC, tryb próbny oraz nagłówki jednokliknięciowego wypisu.
- Wysyłka testowa na dowolny adres, w wybranym języku, działająca również przy włączonym trybie próbnym.
- Tryb próbny (dry run): silnik przechodzi całą kolejkę i oznacza odbiorców jako wysłanych, ale wywołanie wysyłki nie następuje — z ostrzeżeniem widocznym na ekranie wysyłki i w ustawieniach.
- Ustawienia nadawcy: adres i nazwa nadawcy, adres Reply-To dla odpowiedzi klientów oraz kopia archiwalna BCC każdej wiadomości kampanii (wiadomości testowe nie są archiwizowane).
- Adres URL zadania cron z tajnym kluczem, informacja o ostatnim uruchomieniu, ostrzeżenie gdy cron nie zgłosił się od ponad godziny oraz przycisk wygenerowania nowego adresu; błędny lub brakujący klucz otrzymuje samo 403.
- Diagnostyka domeny nadawcy uruchamiana z zakładki Ustawienia: odczyt rekordów MX, SPF, DKIM i DMARC bez wprowadzania jakichkolwiek zmian.
- Śledzenie otwarć niewidocznym pikselem 1×1, z opcją całkowitego wyłączenia — przy wyłączonym śledzeniu piksel nie jest w ogóle osadzany, a liczba otwarć pozostaje zerowa.
- Śledzenie kliknięć: linki w treści kampanii są rejestrowane przy jej przygotowaniu i prowadzą przez własne przekierowanie modułu; adres docelowy odczytywany jest z bazy po identyfikatorze, nigdy z żądania, więc przekierowanie nie da się przejąć.
- Przypisanie przychodu do kampanii metodą ostatniego kliknięcia w oknie 1–90 dni (domyślnie 7); zastosowane okno zapisywane jest przy każdym przypisanym zamówieniu, więc zmiana ustawienia nie przepisuje historii.
- Zakładka Statystyki: dla każdej kampanii stan, liczba odbiorców, wysłane, nieudane, otwarcia, współczynnik otwarć, przypisany przychód oraz daty rozpoczęcia i zakończenia.
- Pulpit z wyborem okresu (cały czas, 7, 30 lub 90 dni) i siedmioma blokami: kluczowe wskaźniki, wykres wysyłek i otwarć w czasie, baza subskrybentów, stan dostarczalności, wypisy, ostatnie kampanie i najskuteczniejsze kampanie.
- Strona „Zobacz w przeglądarce” dla każdej kampanii, spersonalizowana dla odbiorcy i działająca również dla kampanii jeszcze niewysłanej.
- Strona wypisu bez logowania, zabezpieczona tokenem: wejście linkiem wyświetla stronę potwierdzenia, a wypis następuje dopiero po jej zatwierdzeniu — dzięki temu skanery bezpieczeństwa poczty i podglądy linków nie wypisują nikogo przypadkiem.
- Wypis aktualizuje jednocześnie zgodę klienta w PrestaShop, wpis w tabeli zapisów gości i pozycję na liście zaimportowanej, a adres trafia na wspólną listę wypisanych.
- Rejestr zgód: źródło adresu, odnotowany dowód (data i adres IP zapisu), informacja czy do adresu wolno wysyłać, ostatnie zdarzenie zarejestrowane przez moduł i eksport całości do CSV.
- Lista wypisanych z wyszukiwarką i możliwością usunięcia wpisu, gdy odbiorca ponownie poprosi o zapis.
- Duplikowanie kampanii oraz siedem jednoznacznych stanów: robocza, gotowa, zaplanowana, w trakcie wysyłki, wstrzymana, zakończona i zatrzymana.
- Zamrożenie kampanii przy przygotowaniu: treść, ceny, produkty i lista odbiorców są utrwalane w chwili przygotowania, a nie odczytywane ponownie w momencie faktycznej wysyłki.
Dostarczalność wiadomości
- Kontrola metody wysyłki poczty w PrestaShop: sklep ustawiony na „nigdy nie wysyłaj e-maili” zostaje wykryty przed startem, zamiast raportować całą kampanię jako dostarczoną.
- Sprawdzenie adresów na kopercie (BCC i Reply-To) przed wysyłką — jeden adres w domenie nieprzyjmującej poczty potrafi zablokować całą wiadomość, razem ze wszystkimi prawdziwymi odbiorcami.
- Odczyt rekordów SPF i DMARC domeny nadawcy oraz sprawdzenie klucza DKIM dla selektora używanego przez PrestaShop.
- Porównanie adresu nadawcy z domeną sklepu — wysyłka masowa z cudzej domeny (np. z darmowej skrzynki) jest najczęstszą przyczyną trafiania do spamu.
- Nagłówki
List-UnsubscribeiList-Unsubscribe-Postzgodne z RFC 8058, dzięki którym dostawcy skrzynek pokazują własny przycisk wypisu (PrestaShop 1.7.5 i nowsze). - Wymuszenie obecności linku wypisu w każdym zapisanym języku kampanii — jego brak blokuje wysyłkę.
- Krótka przerwa po każdej wiadomości i praca porcjami, żeby nie przeciążać serwera pocztowego i nie wpaść w limity nadawcze.
- Rozróżnienie odmów tymczasowych (kody 4xx — np. greylisting, pełna skrzynka) od trwałych (kody 5xx — np. nieistniejący adres), widoczne przy każdej grupie błędów.
Zgody, wypisy i dane osobowe
- Rejestr zgód czyta dowody bezpośrednio z PrestaShop przy każdym zapytaniu (data zapisu na newsletter, adres IP zapisu, adres strony odsyłającej) — nie tworzy własnej kopii, która mogłaby rozjechać się ze sklepem.
- Adres bez odnotowanej daty zapisu opisany jest jako „brak dowodu”, a nie jako zgoda — moduł nigdy nie podstawia daty założenia konta ani daty wgrania pliku CSV w miejsce daty zgody.
- Własny dziennik zdarzeń modułu odnotowuje wyłącznie to, czego PrestaShop nie zapisuje: import adresu z pliku CSV, wypis przez link modułu i zmiany przynależności do list mailingowych.
- Wypis obowiązuje w całej instalacji: adres wypisany w jednej kampanii i w jednym sklepie jest wykluczony ze wszystkich przyszłych kampanii we wszystkich sklepach.
- Adres z listy wypisanych pozostaje wykluczony niezależnie od tego, ile razy zostanie ponownie zaimportowany lub przełączony na aktywny.
- Eksport rejestru zgód do pliku CSV na potrzeby dokumentacji i kontroli.
- Śledzenie otwarć można wyłączyć całkowicie, jeśli na danym rynku niezapowiedziany piksel śledzący traktowany jest jako kwestia zgody.
Multistore i wielojęzyczność
- Kampania należy do dokładnie jednego sklepu — jej odbiorcy, ceny produktów oraz nazwa i adres sklepu w treści pochodzą z tego sklepu, nigdy z bieżącego kontekstu panelu.
- Lista wypisanych i lista zaimportowana są wspólne dla całej instalacji, co jest świadomą decyzją: rezygnacja z otrzymywania wiadomości dotyczy osoby i adresu, a nie jednego ze sklepów.
- Temat i treść wiadomości ustawiane osobno dla każdego języka sklepu, z awaryjnym powrotem do języka domyślnego, gdy dany język nie ma własnej treści.
- Filtr języków odbiorców na etapie wyboru adresatów; adresy z importu bez własnego języka liczone są jako język domyślny sklepu.
- Znaczniki adresów stron sklepu rozwijane w języku odbiorcy, z użyciem przyjaznych adresów URL tego języka.
Bezpieczeństwo i wpływ na sklep
- Moduł nie rejestruje żadnego hooka wyświetlającego treść na froncie, więc nie dokłada niczego do stron katalogu, koszyka ani zamówienia.
- Jedyne własne strony frontowe to: wypis, podgląd wiadomości w przeglądarce, piksel otwarcia, przekierowanie kliknięcia i punkt wejścia zadania cron — arkusz stylów modułu ładowany jest wyłącznie na stronie wypisu.
- Przy instalacji moduł zakłada dwa indeksy pomocnicze na tabelach klientów i zapisów na newsletter, żeby liczenie odbiorców nie skanowało całych tabel; przy deinstalacji oba są usuwane.
- Zapis przypisania sprzedaży wykonywany jest przy tworzeniu i zmianie statusu zamówienia, w bloku przechwytującym wszystkie błędy — statystyka newslettera nie może zepsuć złożenia zamówienia.
- Linki wypisu i podglądu w przeglądarce podpisane są tajnym kluczem instalacji; token jest funkcją adresu i klucza, więc nie da się go zgadnąć.
- Adres URL zadania cron chroniony tajnym kluczem — każde wywołanie bez poprawnego klucza dostaje 403 i nic więcej.
- Każdy punkt AJAX panelu sprawdza uprawnienia profilu pracownika (podgląd lub edycja), a kampanie są ograniczone do sklepu, w którym pracownik pracuje.
- Strona wypisu nigdy nie wyświetla przesłanego adresu e-mail przy błędnym tokenie.
- Przekierowanie kliknięcia zawsze kończy się na stronie sklepu, nawet przy nieznanym linku lub błędzie bazy — recepta na to, żeby nie tracić wizyty, którą kampania właśnie opłaciła.
Zastosowanie biznesowe
- Dla sklepów, które chcą prowadzić newsletter bez abonamentu zewnętrznego systemu mailingowego i bez przekazywania mu bazy adresowej.
- Dla sklepów wysyłających kampanie produktowe — nowości, wyprzedaże, bestsellery — w których treść wiadomości ma się składać z realnych produktów z katalogu.
- Dla sprzedawców, którzy muszą udokumentować podstawę wysyłki: rejestr zgód, dziennik wypisów i eksport do CSV odpowiadają na pytanie „skąd macie mój adres”.
- Dla sklepów po migracji do PrestaShop 8 lub 9, które potrzebują newslettera działającego na aktualnym rdzeniu i na PHP 8.x.
- Dla sklepów multistore, w których każdy sklep prowadzi własne kampanie, ale rezygnacje mają obowiązywać wszędzie.
- Dla sprzedawców odzyskujących uśpionych klientów — segmentacja po historii zakupów pozwala wyodrębnić tych, którzy kupowali wcześniej, ale nie w ostatnich miesiącach.
Kompatybilność
- PrestaShop: 1.7.x – 9.x
- PHP: 7.0 – 8.5
- MySQL 5.6+ / MariaDB 10.x+
- Bez Composera i bez zewnętrznych bibliotek PHP; TinyMCE 6.8.6 (licencja MIT) zbundlowany w module.
- Wysyłka odbywa się przez konfigurację poczty samego PrestaShop (SMTP lub funkcja mail), bez zewnętrznego API.
Link do demo modułu:
Demo panel administracyjny:
https://moduly-prestashop.eu/pdnewsletterpro/admin-dev
Demo panel przedni:
https://moduly-prestashop.eu/pdnewsletterpro