Интеграция 1С-Битрикс с SendPulse: email, SMS, push-уведомления

Когда интернет-магазин на 1С-Битрикс растёт, стандартных уведомлений уже не хватает, а ручные рассылки рискуют попасть в спам. Мы настраиваем интеграцию с SendPulse, чтобы объединить email, SMS и push-уведомления в единую систему. Наша команда реализует проект под ключ — от подключения API до синхронизации подписчиков, обеспечивая стабильную работу и последующую поддержку.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Интеграция 1С-Битрикс с SendPulse: email, SMS, push-уведомления
Средний
~1-2 недели

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

Часто задаваемые вопросы

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1532
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1045
  • Разработка виджета онлайн-записи на прием для медицинского центра
    Разработка виджета онлайн-записи на прием для медицинского центра
    820
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    915
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    853
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1208

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

Мы часто сталкиваемся с ситуацией: интернет-магазин на Битрикс растёт, стандартные email-уведомления перестают справляться, а ручная рассылка через почтовый клиент — риск попасть в спам. SendPulse решает эти задачи: мультиканальные коммуникации (email, SMS, Viber, push) с единым API. Но просто подключить сервис недостаточно — нужна глубокая интеграция с кэшированием токенов, обработкой ошибок API и синхронизацией подписчиков.

Мы реализовали десятки таких интеграций для магазинов с каталогами до 500 000 товаров. Наш опыт показывает: без грамотного кэширования OAuth-токена и тегированного кэширования списков рассылки проект быстро упирается в лимиты API.

Как правильно аутентифицироваться в API SendPulse?

SendPulse использует OAuth 2.0 Client Credentials. Токен живёт 1 час, но кэшировать его нужно с учётом параллельных запросов. Мы храним токен в тегированном кэше Битрикс с ключом /sendpulse/ — это исключает множественные запросы к API при пиковых нагрузках. Вот реализация клиента:

class SendPulseClient {
    private string $apiId;
    private string $apiSecret;
    private ?string $token = null;

    public function __construct() {
        $this->apiId = COption::GetOptionString('site', 'sendpulse_id');
        $this->apiSecret = COption::GetOptionString('site', 'sendpulse_secret');
    }

    private function getToken(): string {
        $cached = \Bitrix\Main\Data\Cache::createInstance();
        if ($cached->initCache(3500, 'sendpulse_token', '/sendpulse/')) {
            return $cached->getVars()['token'];
        }

        $http = new \Bitrix\Main\Web\HttpClient();
        $response = json_decode($http->post('https://api.sendpulse.com/oauth/access_token', [
            'grant_type' => 'client_credentials',
            'client_id' => $this->apiId,
            'client_secret' => $this->apiSecret,
        ]), true);
        $token = $response['access_token'];

        $cached->startDataCache();
        $cached->endDataCache(['token' => $token]);

        return $token;
    }

    public function call(string $method, string $endpoint, array $data = []): array {
        $http = new \Bitrix\Main\Web\HttpClient();
        $http->setHeader('Authorization', 'Bearer ' . $this->getToken());
        $http->setHeader('Content-Type', 'application/json');

        $url = 'https://api.sendpulse.com/' . ltrim($endpoint, '/');
        $response = $method === 'POST' ? $http->post($url, json_encode($data)) : $http->get($url);

        return json_decode($response, true) ?? [];
    }
}

Кэширование тегированное — если меняются настройки модуля (ID/Secret), кэш сбрасывается автоматически. Это гарантирует, что токен всегда актуален, но не пересоздаётся при каждом запросе.

Почему стоит использовать тегированное кэширование для токена?

Типичная ошибка — запрос нового токена на каждый вызов API. SendPulse лимитирует количество запросов на получение токена (50 в час). Если магазин обрабатывает 1000 заказов в час, без кэширования интеграция ляжет через 3 минуты. Тегированное кэширование решает проблему: токен запрашивается раз в 58 минут (чуть меньше времени жизни), а при сбое — сразу перезапрашивается.

Управление адресными книгами

Адресная книга (mailing list) в SendPulse = список рассылки. Получаем ID книги через GET /addressbooks, сохраняем в COption. Добавление подписчика:

public function addContact(string $email, array $variables = []): void {
    $this->call('POST', '/addressbooks/' . $this->listId . '/emails', [
        'emails' => [[
            'email' => $email,
            'variables' => $variables,
        ]],
    ]);
}

Переменные аналогичны merge fields Mailchimp — name, phone, city, orders_count и любые кастомные. Мы настраиваем передачу данных из заказа: имя, сумма, статус, ссылка на оплату.

Push-уведомления через SendPulse

Уникальная возможность SendPulse — push-уведомления в браузере. Подписчики, давшие разрешение, получают push даже без открытого сайта. Подключение в шаблоне Битрикса:

<script>
  (function(d,w) {
    var n = d.getElementsByTagName('script')[0];
    var s = d.createElement('script');
    s.type = 'text/javascript';
    s.async = true;
    s.src = 'https://cdn.sendpulse.com/push/scripts/push.js';
    n.parentNode.insertBefore(s, n);
    w.PushwooshSDK_onLoad = function() {
      Pushwoosh.init({
        'applicationCode': '<?= COption::GetOptionString("site","sendpulse_push_id") ?>'
      });
    };
  })(document, window);
</script>

При оформлении заказа — отправляем push с подтверждением через API:

$sp->call('POST', '/push/tasks', [
    'task' => [
        'list_id' => $pushListId,
        'subject' => 'Заказ #' . $orderId . ' принят',
        'body' => 'Ваш заказ на сумму ' . $orderPrice . ' руб. принят в обработку',
        'send_date' => 'now',
        'filter' => [
            'variable' => 'user_id',
            'operator' => '=',
            'value' => $userId,
        ],
    ],
]);

Фильтр по user_id позволяет отправлять персонализированные push только конкретному клиенту.

Автоматизация через SendPulse Automation 360

SendPulse Automation 360 — визуальный редактор триггерных цепочек. Запускаем цепочку через API-событие:

$sp->call('POST', '/flows/run', [
    'flow_id' => 'FLOW_ID_FROM_SENDPULSE',
    'email' => $email,
    'variables' => [
        'order_id' => $orderId,
        'product_name' => $productName,
    ],
]);

Цепочка в SendPulse включает: email → задержка 2 дня → SMS → если не открыл email → Viber-сообщение. Мы настраиваем до 10 веток с условиями на основе данных из Битрикс (статус заказа, сумма, регион).

Что входит в работу

  • Проектирование архитектуры интеграции: выбор способа аутентификации, кэширования, синхронизации.
  • Разработка OAuth-клиента с тегированным кэшем.
  • Настройка адресных книг и полей подписчиков под структуру Битрикс.
  • Интеграция push-уведомлений (скрипт в шаблоне + API-отправка).
  • Подключение триггерных цепочек Automation 360.
  • Документация по интеграции (схема данных, описание кэширования, инструкция по обновлению токена).
  • Обучение ваших менеджеров работе с панелью SendPulse.
  • Гарантийная поддержка 1 месяц после запуска.

Сроки ориентировочно

Задача Трудозатраты
OAuth-клиент + базовая синхронизация 4–5 ч
Push-уведомления 3–5 ч
Триггерные события для автоматизации 5–7 ч
Мультиканальные сценарии (email+SMS+Viber) 6–10 ч
Обучение и документация 2–4 ч

Итоговый срок — от 2 до 5 рабочих дней в зависимости от сложности. Стоимость рассчитывается индивидуально после анализа вашего проекта.

Типичные ошибки и как их избежать

  • Утечка токена: не храните ID/Secret в открытом виде — используйте COption или .env. Мы закрываем доступ к настройкам модуля через права доступа.
  • Игнорирование лимитов: SendPulse ограничивает частоту запросов (RPS). Мы встраиваем ретрай-логику с экспоненциальной задержкой.
  • Неправильные переменные в push-фильтре: всегда тестируем фильтрацию на тестовом подписчике перед боевым запуском.

Мы гарантируем стабильную работу интеграции даже при 100 000 подписчиков. За 10 лет работы с Битрикс и SendPulse мы проверили все сценарии — от простого сбора email до мультиканальных триггеров с Viber.

Закажите интеграцию сейчас — обсудим архитектуру и подготовим оценку сроков.