WP Mail Manager
Плагин WordPress для email-кампаний, оставляющий базу клиентов на вашем сервере. Сегменты-категории, выводимая очередь, которая продолжается после падения и не отправляет дважды, отправка по крону в темпе ваших лимитов SMTP и перехватчик писем, чтобы копия базы не написала реальным клиентам.

Стек
Проблема
У растущего магазина на WordPress были тысячи зарегистрированных пользователей и ни одного способа до них дозвониться, кроме писем о заказах WooCommerce. Каждая промо-рассылка требовала разработчика, аккаунт стороннего SaaS-сервиса и ручной выгрузки списка пользователей - то есть ещё и передачи клиентской базы наружу.
У самостоятельной отправки два сбоя, которые проявляются только на объёме. Отправишь весь список залпом - SMTP на общем хостинге режет или роняет прогон, домен получает удар по репутации, и никто не знает, до какого места дошло. Перезапустишь после падения - те, кто уже получил письмо, получат его снова, потому что «кому уже отправлено» нигде не записывалось.
До → После
| До | После |
|---|---|
| Ручная выгрузка CSV и сторонний инструмент под каждую кампанию | Кампания создаётся и отправляется из админки WordPress |
| Клиентская база передаётся стороннему сервису | Получатели не покидают собственную базу клиента |
| Весь список уходит разом: троттлинг SMTP, ошибки, урон репутации | Крон отправляет фиксированную порцию за тик с паузой между письмами |
| Упавший прогон приходилось начинать сначала, отправляя всем повторно | Очередь выводится джойном: никто не попадает в неё дважды |
| Восстановленная копия базы могла написать реальным клиентам | Отправка выключена по умолчанию, перехватчик пишет в лог вместо доставки |
| Никакого представления о том, что доставлено | В админке по каждой кампании: в очереди / отправлено / ошибка |
Как это работает
- Аудитории - это категории. Подписчики входят в категории, кампании привязываются к категориям, и обе связи - многие-ко-многим, поэтому одна кампания может бить в несколько сегментов, а подписчик состоять в нескольких без дублирования.
- Очередь выводится, а не хранится. Ожидающие получатели вычисляются джойном подписчиков с записями о доставке, где записи нет. «Кому ещё нужно отправить» - следствие данных, а не флаг, который кто-то поддерживает; именно поэтому прерванный прогон продолжается ровно с места остановки, а отправить одну кампанию одному человеку дважды просто невозможно.
- Крон задаёт темп. Свой интервал управляет тем, как часто уходит порция, размер порции - сколько писем, а пауза между письмами удерживает прогон в лимитах SMTP хостера вместо залпа, после которого домен уходит в спам.
- Каждая отправка фиксируется. По каждой доставке пишется результат, поэтому таблица в админке показывает «в очереди / отправлено / ошибка» по кампании без отдельного журнала.
- Тестовая отправка и стоп-кран. Кампанию можно сначала отправить на один адрес. После активации отправка выключена, а перехватчик писем умеет писать их в лог вместо доставки - поэтому копия боевой базы не может написать реальным клиентам.
Основные возможности
- Сегментация аудитории по категориям, многие-ко-многим с кампаниями
- Выводимая очередь - возобновляемая, без повторных отправок одному получателю
- Отправка по крону с настраиваемым интервалом, размером порции и паузой
- Статистика по кампании: в очереди / отправлено / ошибка
- Тестовая отправка на один адрес перед запуском
- Отправка выключена по умолчанию, перехватчик писем для небоевых копий
- HTML- и текстовые кампании со своими заголовками и отправителем
- Массовое зачисление существующих пользователей в новую категорию при её создании
Установка
- Загрузите папку плагина в
/wp-content/plugins/и активируйте - Дайте активации создать таблицы кампаний, категорий и доставок
- Откройте Mail Manager, создайте категорию и привяжите к ней кампанию
- Задайте интервал крона, размер порции и паузу под лимиты вашего SMTP
- Отправьте тестовое письмо и включите отправку - до этого она выключена
Открыт для работы по контракту
Я доступен для работы по контракту. Если у вас есть интересная идея проекта, запишитесь на звонок через Calendly.
Записаться на 30-минутный звонок