Особливості та переваги модуля
- Розсилка повністю всередині PrestaShop — дані підписників, вміст кампанії та статистика залишаються в базі магазину, без передавання списку адрес зовнішньому постачальнику і без оплат за кількість надісланих повідомлень.
- Конструктор кампанії у чотирьох кроках (шаблон, товари, одержувачі, надсилання) з попереднім переглядом на кожному етапі та з підсумком перед стартом.
- Товарний блок, побудований з каталогу магазину: мініатюра, назва, ціна та посилання ведуть до реальних товарів, за цінами та залишками на момент підготовки кампанії.
- Власний рушій надсилання з чергою: робота порціями, блокування від паралельного надсилання тієї самої кампанії, повторні спроби для невдалих адрес і відновлення після переривання — нічого не губиться після закриття вкладки браузера.
- Консоль надсилання в реальному часі з рядком для кожної спроби: час, адреса, результат і повна відповідь поштового сервера при відмові — видно, що саме відхилив сервер, без входу в журнали PrestaShop.
- Одинадцять перевірок перед надсиланням, які не є декорацією: рядок, позначений як блокувальний, відхиляє запуск кампанії із зазначенням конкретної причини.
- Діагностика домену відправника (MX, SPF, DKIM, DMARC) прямо в панелі — саме ці записи вирішують, чи Gmail і Yahoo вважатимуть масову розсилку автентифікованою.
- Відповідність вимогам відписки: заголовки відписки в один клік (RFC 8058) та посилання на відписку, обов’язкове в кожній мові шаблону, що перевіряється перед надсиланням.
- Пробний режим (dry run) дозволяє пройти всю кампанію від початку до кінця — рушій проходить усю чергу, але жодне повідомлення не залишає магазин.
- Реєстр згод читає докази безпосередньо з самого PrestaShop у реальному часі й ніколи не стверджує, що хтось дав згоду, якщо про це немає запису — адреса без зафіксованої дати описується як «немає доказу», а не як згода.
- Вбудований редактор TinyMCE 6.8.6 за ліцензією MIT — вміст шаблонів редагується у WYSIWYG без завантаження будь-чого з CDN.
- П’ять готових адаптивних шаблонів повідомлень у польській та англійській версіях, що встановлюються разом із модулем і можуть бути відновлені однією кнопкою.
- Повна підтримка багатомовності та multistore: тема і вміст окремо для кожної мови, кампанія назавжди прив’язана до одного магазину.
- Інтерфейс повністю перекладений польською мовою, у подвійній системі перекладів, що підтримує як класичні словники, так і систему PrestaShop 1.7.8+.
- Без Composer, без зовнішніх бібліотек PHP і без підключень до зовнішніх сервісів під час надсилання — модуль використовує конфігурацію пошти самого PrestaShop.
Найважливіші функціональності модуля
- Власна вкладка в адміністративній панелі (під меню Клієнти) з вісьмома секціями: Панель, Кампанії, Шаблони, Одержувачі, Імпорт, Згоди, Статистика та Налаштування.
- Конструктор кампанії: крок 1 — назва і шаблон, крок 2 — товари та вигляд блоку, крок 3 — одержувачі, крок 4 — перевірки, розклад і надсилання.
- Пошук товарів за назвою, артикулом і кодом EAN, а також масове додавання з категорії: 8 бестселерів, 8 найновіших або вся категорія.
- Бестселери обчислюються на основі кількості проданих одиниць за останні 30 днів, виключно з дійсних замовлень.
- Макет товарного блоку: 1, 2 або 3 колонки та чотири стилі карток (Світлий, Темний, З рамкою, Розширений) з власною палітрою кольорів, порядок товарів змінюється стрілками вгору/вниз біля кожної позиції.
- Попередження про розмір повідомлення, виміряний на боці сервера відносно порогу обрізання в Gmail (~102 kB) — до того, як кампанію буде надіслано в обрізаному вигляді.
- Можливість надіслати кампанію взагалі без товарного блоку.
- Бібліотека шаблонів: п’ять готових макетів (Класичний (default), Акція, Editorial, Minimal, Grid), створення власних, дублювання, попередній перегляд, тестове надсилання та кнопка відновлення шаблонів із пакета.
- Тема і вміст повідомлення окремо для кожної мови магазину, редагуються в TinyMCE 6.8.6 без CDN.
- Сімнадцять маркерів для вставлення в шаблон: {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} — плюс {products} для товарного блоку.
- Адреси сторінок магазину в маркерах розв’язуються для магазину кампанії та мови одержувача, з використанням дружніх URL-адрес цієї мови.
- Добір одержувачів: групи клієнтів, мови одержувачів, список, імпортований з CSV, списки розсилки та список виключених адрес — з числами в реальному часі (Нативні, Імпортовані, Виключені, Усього).
- Об’єднання та дедуплікація адрес з усіх джерел за адресою e-mail, з автоматичним відніманням відписаних і виключених.
- Списки розсилки постійні (саме ті адреси, які ви до нього додасте) і динамічні (збережені фільтри, що перераховуються в момент підготовки кампанії), з можливістю змінити назву, дублювати, експортувати в CSV і видалити.
- Переглядач усіх відомих адрес — клієнти, гості, записані через блок розсилки PrestaShop, і імпортовані адреси — в одному місці, з фільтрами джерела, статусу, мови та групи клієнтів.
- Сегментація за історією покупок: мінімальна витрачена сума, мінімальна кількість замовлень, покупка протягом останніх N днів, клієнти, які купували раніше, але не в останні N днів, покупка з конкретної категорії, покупка конкретного товару (ID), а також відсутність покупки конкретного товару.
- Імпорт адрес із файлу CSV у форматі
email;firstname;lastname;iso— обов’язковою є лише колонка e-mail, роздільник (крапка з комою, кома або табуляція) визначається автоматично, рядок заголовка пропускається, до 50 000 рядків на файл. - Повторний імпорт тієї самої адреси оновлює її дані замість створення дубліката; імпортовані адреси можна одразу додати до вибраного списку розсилки.
- Негайне надсилання з відкритої вкладки браузера або заплановане на вибрану дату й час та виконуване через завдання cron.
- Рушій надсилання з параметрами: розмір порції 1–500 повідомлень (за замовчуванням 20), пауза між повідомленнями 0–5000 мс (за замовчуванням 100), бюджет часу одного проходу 5–45 с (за замовчуванням 20) і кількість спроб на одержувача 1–10 (за замовчуванням 3).
- Керування надсиланням: Призупинити, Відновити і Зупинити, а також перехоплення кампанії, яку було запущено в іншій вкладці або яку веде cron.
- Консоль надсилання в реальному часі у формі текстового вікна: один рядок на кожну спробу, з часом, адресою, результатом (прийнято, відхилено і повторюється, покинуто, пропущено) та повним повідомленням поштового сервера.
- Лічильники прогресу, що розрізняють Невдалі та Повторювані — адресу, відхилену до вичерпання спроб, видно одразу, а не лише після завершення кампанії.
- Таблиця черги з фільтрацією за статусом (Усі, Невдалі, Надіслано, Очікують, Пропущені), групуванням помилок за відповіддю сервера та розрізненням тимчасових помилок (4xx) від постійних (5xx).
- Експорт невдалих адрес у файл CSV прямо з екрана надсилання.
- Одинадцять перевірок перед надсиланням: метод надсилання пошти в PrestaShop, правильність адрес на конверті (BCC і Reply-To), наявність одержувачів, заморожений вміст повідомлення, посилання на відписку в кожній мові, тема в кожній мові, надіслане тестове повідомлення, відповідність адреси відправника домену магазину, записи SPF/DKIM/DMARC, пробний режим і заголовки відписки в один клік.
- Тестове надсилання на будь-яку адресу, вибраною мовою, що працює також при ввімкненому пробному режимі.
- Пробний режим (dry run): рушій проходить усю чергу й позначає одержувачів як надісланих, але виклик надсилання не відбувається — з попередженням, видимим на екрані надсилання та в налаштуваннях.
- Налаштування відправника: адреса та ім’я відправника, адреса Reply-To для відповідей клієнтів, а також архівна копія BCC кожного повідомлення кампанії (тестові повідомлення не архівуються).
- URL-адреса завдання cron із секретним ключем, інформація про останній запуск, попередження, якщо cron не звертався понад годину, а також кнопка генерації нової адреси; неправильний або відсутній ключ отримує лише 403.
- Діагностика домену відправника, що запускається з вкладки Налаштування: зчитування записів MX, SPF, DKIM і DMARC без внесення будь-яких змін.
- Відстеження відкриттів невидимим пікселем 1×1, з можливістю повного вимкнення — при вимкненому відстеженні піксель взагалі не вбудовується, а кількість відкриттів залишається нульовою.
- Відстеження кліків: посилання у вмісті кампанії реєструються під час її підготовки та ведуть через власне перенаправлення модуля; цільова адреса зчитується з бази за ідентифікатором, ніколи із запиту, тому перенаправлення неможливо перехопити.
- Прив’язка доходу до кампанії методом останнього кліку у вікні 1–90 днів (за замовчуванням 7); застосоване вікно записується при кожному прив’язаному замовленні, тому зміна налаштування не переписує історію.
- Вкладка Статистика: для кожної кампанії стан, кількість одержувачів, надіслані, невдалі, відкриття, коефіцієнт відкриттів, прив’язаний дохід, а також дати початку і завершення.
- Панель з вибором періоду (увесь час, 7, 30 або 90 днів) і сімома блоками: ключові показники, графік надсилань і відкриттів у часі, база підписників, стан доставлюваності, відписки, останні кампанії та найефективніші кампанії.
- Сторінка «Переглянути в браузері» для кожної кампанії, персоналізована для одержувача і така, що працює також для ще не надісланої кампанії.
- Сторінка відписки без входу в систему, захищена токеном: перехід за посиланням показує сторінку підтвердження, а відписка відбувається лише після її підтвердження — завдяки цьому поштові сканери безпеки та попередні перегляди посилань нікого випадково не відписують.
- Відписка одночасно оновлює згоду клієнта в PrestaShop, запис у таблиці підписок гостей і позицію в імпортованому списку, а адреса потрапляє до спільного списку відписаних.
- Реєстр згод: джерело адреси, зафіксований доказ (дата та IP-адреса підписки), інформація про те, чи можна надсилати на адресу, остання подія, зареєстрована модулем, і експорт усього в CSV.
- Список відписаних із пошуком і можливістю видалити запис, коли одержувач знову попросить про підписку.
- Дублювання кампаній і сім однозначних станів: чернетка, готова, запланована, у процесі надсилання, призупинена, завершена і зупинена.
- Заморожування кампанії під час підготовки: вміст, ціни, товари та список одержувачів фіксуються в момент підготовки, а не зчитуються повторно в момент фактичного надсилання.
Доставлюваність повідомлень
- Контроль методу надсилання пошти в PrestaShop: магазин, налаштований на «ніколи не надсилати e-mail», виявляється до старту, замість того щоб звітувати всю кампанію як доставлену.
- Перевірка адрес на конверті (BCC і Reply-To) перед надсиланням — одна адреса в домені, що не приймає пошту, може заблокувати все повідомлення разом з усіма справжніми одержувачами.
- Зчитування записів SPF і DMARC домену відправника та перевірка ключа DKIM для селектора, який використовує PrestaShop.
- Порівняння адреси відправника з доменом магазину — масове надсилання з чужого домену (наприклад, з безкоштовної скриньки) є найчастішою причиною потрапляння в спам.
- Заголовки
List-UnsubscribeіList-Unsubscribe-Post, сумісні з RFC 8058, завдяки яким постачальники поштових скриньок показують власну кнопку відписки (PrestaShop 1.7.5 і новіші). - Примусова наявність посилання на відписку в кожній збереженій мові кампанії — його відсутність блокує надсилання.
- Коротка пауза після кожного повідомлення і робота порціями, щоб не перевантажувати поштовий сервер і не потрапити в ліміти надсилання.
- Розрізнення тимчасових відмов (коди 4xx — наприклад, greylisting, повна скринька) від постійних (коди 5xx — наприклад, неіснуюча адреса), видиме в кожній групі помилок.
Згоди, відписки та персональні дані
- Реєстр згод читає докази безпосередньо з PrestaShop при кожному запиті (дата підписки на розсилку, IP-адреса підписки, адреса сторінки, що перенаправляє) — не створює власної копії, яка могла б розійтися з магазином.
- Адреса без зафіксованої дати підписки описується як «немає доказу», а не як згода — модуль ніколи не підставляє дату створення облікового запису або дату завантаження CSV-файлу замість дати згоди.
- Власний журнал подій модуля фіксує виключно те, чого PrestaShop не записує: імпорт адреси з CSV-файлу, відписку через посилання модуля та зміни належності до списків розсилки.
- Відписка діє в усій інсталяції: адреса, відписана в одній кампанії та в одному магазині, виключається з усіх майбутніх кампаній у всіх магазинах.
- Адреса зі списку відписаних залишається виключеною незалежно від того, скільки разів її буде повторно імпортовано або перемкнено в активний стан.
- Експорт реєстру згод у файл CSV для потреб документації та контролю.
- Відстеження відкриттів можна повністю вимкнути, якщо на певному ринку неанонсований піксель відстеження вважається питанням згоди.
Multistore і багатомовність
- Кампанія належить рівно одному магазину — її одержувачі, ціни товарів, а також назва й адреса магазину у вмісті походять саме з цього магазину, а не з поточного контексту панелі.
- Список відписаних і імпортований список є спільними для всієї інсталяції, що є свідомим рішенням: відмова від отримання повідомлень стосується особи та адреси, а не одного з магазинів.
- Тема і вміст повідомлення задаються окремо для кожної мови магазину, з аварійним поверненням до мови за замовчуванням, якщо певна мова не має власного вмісту.
- Фільтр мов одержувачів на етапі вибору адресатів; адреси з імпорту без власної мови враховуються як мова магазину за замовчуванням.
- Маркери адрес сторінок магазину розгортаються мовою одержувача, з використанням дружніх URL-адрес цієї мови.
Безпека та вплив на магазин
- Модуль не реєструє жодного hook, що відображає вміст на фронті, тому нічого не додає до сторінок каталогу, кошика чи замовлення.
- Єдині власні фронтові сторінки — це: відписка, попередній перегляд повідомлення в браузері, піксель відкриття, перенаправлення кліку та точка входу завдання cron — таблиця стилів модуля завантажується виключно на сторінці відписки.
- Під час встановлення модуль створює два допоміжні індекси в таблицях клієнтів і підписок на розсилку, щоб підрахунок одержувачів не сканував цілі таблиці; під час деінсталяції обидва видаляються.
- Запис прив’язки продажу виконується під час створення та зміни статусу замовлення, у блоці, що перехоплює всі помилки — статистика розсилки не може зіпсувати оформлення замовлення.
- Посилання на відписку та перегляд у браузері підписані секретним ключем інсталяції; токен є функцією адреси та ключа, тому його неможливо вгадати.
- URL-адреса завдання cron захищена секретним ключем — кожен виклик без правильного ключа отримує 403 і нічого більше.
- Кожна AJAX-точка панелі перевіряє права профілю працівника (перегляд або редагування), а кампанії обмежені магазином, у якому працює працівник.
- Сторінка відписки ніколи не показує передану адресу e-mail при неправильному токені.
- Перенаправлення кліку завжди завершується на сторінці магазину, навіть при невідомому посиланні або помилці бази — рецепт того, щоб не втратити візит, який кампанія щойно оплатила.
Бізнес-застосування
- Для магазинів, які хочуть вести розсилку без абонплати за зовнішню систему e-mail-маркетингу і без передавання їй бази адрес.
- Для магазинів, що надсилають товарні кампанії — новинки, розпродажі, бестселери — у яких вміст повідомлення має складатися з реальних товарів із каталогу.
- Для продавців, які повинні документально підтвердити підставу надсилання: реєстр згод, журнал відписок і експорт у CSV відповідають на запитання «звідки у вас моя адреса».
- Для магазинів після міграції на PrestaShop 8 або 9, яким потрібна розсилка, що працює на актуальному ядрі та на PHP 8.x.
- Для магазинів multistore, у яких кожен магазин веде власні кампанії, але відмови мають діяти всюди.
- Для продавців, які повертають неактивних клієнтів — сегментація за історією покупок дозволяє виокремити тих, хто купував раніше, але не в останні місяці.
Сумісність
- PrestaShop: 1.7.x – 9.x
- PHP: 7.0 – 8.5
- MySQL 5.6+ / MariaDB 10.x+
- Без Composer і без зовнішніх бібліотек PHP; TinyMCE 6.8.6 (ліцензія MIT) вбудований у модуль.
- Надсилання відбувається через конфігурацію пошти самого PrestaShop (SMTP або функція mail), без зовнішнього API.
Посилання на демо модуля:
Демо адміністративної панелі:
https://moduly-prestashop.eu/pdnewsletterpro/admin-dev
Демо фронтальної панелі:
https://moduly-prestashop.eu/pdnewsletterpro