Интеграция 1С-Битрикс с сервисами email-рассылок
Встроенный модуль рассылок Битрикса (bitrix:sender) справляется с базовыми задачами, но уступает специализированным сервисам по доставляемости писем, шаблонизатору, A/B-тестированию и аналитике. Интеграция с внешними ESP (Email Service Provider) — Mailchimp, SendPulse, UniSender, eSputnik — позволяет использовать возможности сервиса при сохранении данных в Битриксе.
Общая архитектура интеграции
Независимо от конкретного сервиса, интеграция решает три задачи:
- Экспорт подписчиков — пользователи сайта, оформившие подписку, попадают в список рассылочного сервиса.
- Синхронизация сегментов — группы пользователей Битрикса (покупатели, неактивные, VIP) соответствуют тегам или листам в ESP.
- Обратная синхронизация — отписка в рассылке обновляет статус подписчика в Битриксе.
Управление подписками в Битриксе
Подписки хранятся в таблицах:
-
b_subscribe— рубрики рассылок. -
b_subscribe_email— адреса подписчиков. -
b_user_subscribe— привязка пользователей к рубрикам.
Событие подписки — OnSubscribeSubscribe (модуль subscribe). Отписки — OnSubscribeUnSubscribe. Подписываемся на эти события для синхронизации с ESP.
Передача подписчика в ESP
AddEventHandler('subscribe', 'OnSubscribeSubscribe', function($subscribeId, $email, $fields) {
$espClient = new EspApiClient();
$user = CUser::GetByLogin($email)->Fetch();
$subscriberData = [
'email' => $email,
'first_name' => $user['NAME'] ?? '',
'last_name' => $user['LAST_NAME'] ?? '',
'tags' => getSubscriberTags($user),
'source' => 'bitrix_subscribe',
];
$espClient->addOrUpdateContact($subscriberData);
});
function getSubscriberTags(array $user): array {
$tags = ['site-subscriber'];
// Добавляем теги по истории покупок
if (hasOrders($user['ID'])) $tags[] = 'buyer';
if (isVipClient($user['ID'])) $tags[] = 'vip';
return $tags;
}
Сегментация по поведению
Ценность интеграции — передача поведенческих данных сайта в сервис рассылок для триггерных сценариев:
| Событие в Битриксе | Действие в ESP |
|---|---|
| Добавил товар в корзину, не купил | Добавить в сегмент «Брошенная корзина», запустить цепочку |
| Оформил заказ | Добавить в сегмент «Покупатели», запустить welcome-серию |
| Не заходил 90 дней | Добавить в сегмент «Неактивные», запустить реактивацию |
| День рождения через 7 дней | Добавить в сегмент «Именинники», отправить персональный оффер |
События отслеживаются через хендлеры OnSaleOrderSaved, OnSaleBasketSaved, агенты для проверки активности.
Обратная синхронизация отписок
ESP присылает уведомления об отписках через вебхуки. Принимаем вебхук на отдельном URL (/bitrix/tools/esp_webhook.php), обновляем статус в Битриксе:
// esp_webhook.php
$payload = json_decode(file_get_contents('php://input'), true);
$email = $payload['email'] ?? '';
$event = $payload['event'] ?? ''; // 'unsubscribe', 'spam_complaint'
if (in_array($event, ['unsubscribe', 'spam_complaint'])) {
// Отписываем в Битриксе
$subscribeEmail = CSubscribeEmail::GetByEmail($email)->Fetch();
if ($subscribeEmail) {
CSubscribeEmail::Update($subscribeEmail['ID'], ['CONFIRMED' => 'N']);
}
}
Транзакционные письма
Письма заказов (подтверждение, статус) можно отправлять через ESP вместо встроенного почтового сервера Битрикса — для лучшей доставляемости и аналитики. Переопределяем обработчик событий почты в bitrix/php_interface/init.php:
AddEventHandler('main', 'OnBeforeEventSend', function(&$eventFields, &$template) {
// Перехватываем письмо и отправляем через ESP
$esp = new EspTransactionalSender();
$esp->send($eventFields['EMAIL'], $template['SUBJECT'], $template['BODY_HTML']);
return false; // не отправляем через встроенный SMTP
});
| Задача | Трудозатраты |
|---|---|
| Экспорт подписчиков + обработчики событий | 4–6 ч |
| Сегментация по поведению | 6–10 ч |
| Обратная синхронизация отписок | 3–4 ч |
| Транзакционные письма через ESP | 4–6 ч |







