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

Замовте інтеграцію зараз — проведемо консультацію з архітектури та надамо оцінку термінів.