Інтеграція 1С-Бітрікс з UniSender
UniSender — один з провідних сервісів email-розсилок з простим REST API. Підходить для середнього бізнесу: доступні тарифи, хороша доставлюваність на основні поштові сервіси (Mail.ru, Яндекс.Пошта).
API UniSender
Усі методи доступні за адресою https://api.unisender.com/ru/api/{method}?format=json&api_key={KEY}. Автентифікація — API-ключ у параметрі запиту або заголовку. Ключ створюється в налаштуваннях акаунта UniSender.
Синхронізація контактів
class UniSenderClient {
private string $apiKey;
private string $baseUrl = 'https://api.unisender.com/ru/api/';
public function __construct() {
$this->apiKey = COption::GetOptionString('site', 'unisender_api_key');
}
public function importContacts(array $contacts, int $listId): array {
// Пакетний імпорт до 500 контактів за раз
$fieldNames = ['email', 'email_list_ids', 'Name', 'Phone'];
$fieldValues = [];
foreach ($contacts as $c) {
$fieldValues[] = [
$c['email'],
(string)$listId,
$c['name'] ?? '',
$c['phone'] ?? '',
];
}
$http = new \Bitrix\Main\Web\HttpClient();
return json_decode($http->post($this->baseUrl . 'importContacts', [
'api_key' => $this->apiKey,
'format' => 'json',
'field_names' => $fieldNames,
'data' => $fieldValues,
'overwrite_tags' => 1,
'overwrite_lists' => 0,
]), true);
}
}
Метод importContacts — основний для масової синхронізації. За один виклик — до 500 контактів. При експорті всієї бази розбиваємо на пакети.
Обробник підписки
AddEventHandler('subscribe', 'OnSubscribeSubscribe', function($id, $email, $fields) {
$listId = COption::GetOptionString('site', 'unisender_list_id');
$client = new UniSenderClient();
$client->subscribe($email, $listId, [
'Name' => $fields['NAME'] ?? '',
'Phone' => $fields['PERSONAL_PHONE'] ?? '',
]);
});
Метод subscribe додає одиночний контакт і надсилає йому лист підтвердження (double opt-in), якщо цей параметр увімкнено в UniSender.
Отримання статусу контакту
Перед створенням розсилки корисно знати статус підписника — чи активний, чи не відписався:
public function getContactStatus(string $email): string {
$http = new \Bitrix\Main\Web\HttpClient();
$response = json_decode($http->get(
$this->baseUrl . 'getContact?api_key=' . $this->apiKey
. '&format=json&email=' . urlencode($email)
), true);
return $response['result']['status'] ?? 'unknown';
// 'active', 'unsubscribed', 'bounced', 'spam'
}
Використовуємо при обробці замовлення: якщо покупець відписаний — не додаємо його до нових списків розсилки.
Тригерна розсилка після замовлення
Після оформлення замовлення надсилаємо серію транзакційних листів через UniSender Automation:
AddEventHandler('sale', 'OnSaleOrderSaved', function($order) {
if (!$order->isNew()) return;
$email = getOrderEmail($order);
// Надсилаємо транзакційний лист через UniSender
$client = new UniSenderClient();
$client->sendEmail([
'to' => [['email' => $email, 'name' => getOrderName($order)]],
'subject' => 'Замовлення #' . $order->getId() . ' оформлено',
'body' => renderOrderEmailTemplate($order),
'list_id' => UNISENDER_TRANSACT_LIST_ID,
'sender_name' => 'Магазин',
'sender_email' => '[email protected]',
]);
});
Аналітика доставлюваності
UniSender надає статистику через getCampaignStatus та getCampaignCommonStats. Отримуємо дані по кожній розсилці та логуємо в користувацький інфоблок 1С-Бітрікс для моніторингу тренду:
- Open rate, CTR, bounces, unsubscribes.
- Якщо bounce rate перевищує 5% — автоматично зупиняємо кампанію та повідомляємо маркетолога.
| Завдання | Трудовитрати |
|---|---|
| API-клієнт + обробники підписки | 3–5 год |
| Пакетний експорт бази підписників | 3–4 год |
| Транзакційні листи за подіями | 4–6 год |
| Збір аналітики в 1С-Бітрікс | 3–4 год |







