Інтеграція 1С-Бітрікс з UniSender

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція 1С-Бітрікс з UniSender
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Інтеграція 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 год