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

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

Mailchimp — найпоширеніший західний ESP з потужним API і розвиненими інструментами автоматизації. Для проектів з аудиторією СНД його використання виправдане при роботі з міжнародною аудиторією або коли замовник вже веде маркетинг через Mailchimp.

API Mailchimp v3

Mailchimp надає REST API v3. Базовий URL залежить від дата-центру акаунту: https://us1.api.mailchimp.com/3.0/ (замініть us1 на дата-центр вашого акаунту — він вказаний у URL після входу).

Аутентифікація — Basic Auth: логін довільний, пароль — API-ключ з розділу Account → API Keys.

Додавання підписника до списку (Audience)

class MailchimpClient {
    private string $apiKey;
    private string $dataCenter;
    private string $listId;

    public function __construct() {
        $this->apiKey     = COption::GetOptionString('site', 'mailchimp_api_key');
        $this->dataCenter = explode('-', $this->apiKey)[1]; // us1, us2 тощо
        $this->listId     = COption::GetOptionString('site', 'mailchimp_list_id');
    }

    public function upsertMember(string $email, array $mergeFields = [], array $tags = []): array {
        $subscriberHash = md5(strtolower($email));
        $url = "https://{$this->dataCenter}.api.mailchimp.com/3.0/lists/{$this->listId}/members/{$subscriberHash}";

        $http = new \Bitrix\Main\Web\HttpClient();
        $http->setHeader('Authorization', 'Basic ' . base64_encode('anystring:' . $this->apiKey));
        $http->setHeader('Content-Type', 'application/json');

        $data = [
            'email_address' => $email,
            'status_if_new' => 'subscribed', // не перезаписувати статус відписаних
            'merge_fields'  => $mergeFields, // FNAME, LNAME, PHONE, CITY тощо
            'tags'          => $tags,
        ];

        // PUT — створює або оновлює (upsert)
        $response = $http->query(HttpClient::HTTP_PUT, $url, json_encode($data));
        return json_decode($response, true);
    }
}

Метод PUT /members/{hash} працює як upsert — створює нового підписника або оновлює наявного за хешем email. Це запобігає дублюванню.

Merge fields і теги

Merge fields — кастомні поля аудиторії Mailchimp. Стандартні: FNAME, LNAME. Створюємо додаткові в налаштуваннях аудиторії:

Merge tag Тип Джерело у Бітріксі
FNAME Text USER.NAME
LNAME Text USER.LAST_NAME
PHONE Phone USER.PERSONAL_PHONE
CITY Text Властивість профілю
ORDERS Number Кількість замовлень
LTV Number Сума замовлень

Теги — вільні мітки для сегментації. Синхронізуємо з групами користувачів Бітрікса (b_user_group):

// Отримуємо теги користувача для Mailchimp
function getUserMailchimpTags(int $userId): array {
    $tags = [];
    $groups = CUser::GetUserGroup($userId);
    $tagMap = ['9' => 'buyer', '12' => 'vip', '15' => 'wholesale'];
    foreach ($groups as $groupId) {
        if (isset($tagMap[$groupId])) $tags[] = $tagMap[$groupId];
    }
    return $tags;
}

Кейс: кинутий кошик

Ситуація. Інтернет-магазин електроніки, конверсія кошика — 18%. Завдання: автоматично надсилати лист з вмістом кошика через 1 годину після додавання товару, якщо замовлення не оформлено.

Реалізація. У Бітріксі кошики незареєстрованих користувачів зберігаються в b_sale_basket. При збереженні кошика (OnSaleBasketSaved) ставимо агент на 1 годину:

AddEventHandler('sale', 'OnSaleBasketSaved', function($basket) {
    $userId = $basket->getFUserId();
    // Агент перевірить через годину — якщо замовлення не оформлено, передасть до Mailchimp
    CAgent::AddAgent(
        'AbandonedCartAgent::check(' . $userId . ');',
        'my_module', 'N', 3600 // через 3600 секунд
    );
});

Агент перевіряє: якщо замовлення так і не створено, передає дані кошика до Mailchimp через POST /lists/{id}/members/{hash}/events — подія abandoned_cart запускає автоматизацію в Mailchimp.

Обробка вебхука відписки

Mailchimp надсилає POST на вказаний URL при відписці або bounce:

// /bitrix/tools/mailchimp_webhook.php
$data = $_POST;
if ($data['type'] === 'unsubscribe') {
    $email = $data['data']['email'];
    // Оновлюємо статус у Бітріксі
    $mailchimp->updateLocalSubscription($email, 'unsubscribed');
}
if ($data['type'] === 'cleaned') {
    // Hard bounce — адреса недійсна
    $mailchimp->markEmailInvalid($data['data']['email']);
}
Завдання Трудовитрати
API-клієнт + базова синхронізація 4–6 год
Merge fields + теги за групами 3–4 год
Автоматизація кинутого кошика 6–8 год
Вебхуки відписок і bounces 3–4 год