Интеграция 1С-Битрикс с Mailchimp

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с Mailchimp
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Интеграция 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 ч