Інтеграція 1С-Бітрікс з eSputnik
eSputnik — українська CDP (Customer Data Platform) з розвиненими інструментами для ecommerce: омніканальні ланцюжки, рекомендації товарів, відновлення покинутого кошика, динамічний вміст листів на основі каталогу товарів. Підходить для магазинів з великим каталогом та складними тригерними сценаріями.
Особливості API eSputnik
eSputnik надає REST API v1. Автентифікація — Basic Auth (логін/пароль від акаунта, не API-ключ). Базовий URL: https://esputnik.com/api/v1/.
Ключова відмінність від інших ESP — події як основний механізм тригерів. Замість прямого керування розсилками ми надсилаємо події (order placed, cart updated, page viewed) — eSputnik будує автоматизації на їх основі.
Синхронізація контактів
class ESputnikClient {
private string $login;
private string $password;
private string $baseUrl = 'https://esputnik.com/api/v1/';
public function upsertContact(array $contactData): array {
$http = new \Bitrix\Main\Web\HttpClient();
$auth = base64_encode($this->login . ':' . $this->password);
$http->setHeader('Authorization', 'Basic ' . $auth);
$http->setHeader('Content-Type', 'application/json');
$http->setHeader('Accept', 'application/json');
$payload = [
'contacts' => [[
'channels' => [
['type' => 'email', 'value' => $contactData['email']],
],
'fields' => [
['id' => 1, 'value' => $contactData['first_name'] ?? ''],
['id' => 2, 'value' => $contactData['last_name'] ?? ''],
['id' => 3, 'value' => $contactData['phone'] ?? ''],
],
]],
];
return json_decode($http->post($this->baseUrl . 'contact', json_encode($payload)), true);
}
}
Номери полів (id: 1, 2, 3) відповідають полям у налаштуваннях eSputnik — їх потрібно перевірити в розділі «Контакти → Додаткові поля» конкретного акаунта.
Надсилання подій ecommerce
Головна сила eSputnik — події. Надсилаємо подію при кожній значущій дії користувача:
public function sendEvent(string $email, string $eventTypeKey, array $params): void {
$http = new \Bitrix\Main\Web\HttpClient();
// ... auth headers
$payload = [
'eventTypeKey' => $eventTypeKey,
'keyValue' => $email,
'params' => array_map(fn($k, $v) => ['name'=>$k,'value'=>$v],
array_keys($params), $params),
];
$http->post($this->baseUrl . 'event', json_encode($payload));
}
// Подія: замовлення оформлено
$esp->sendEvent($email, 'OrderCreated', [
'orderId' => $orderId,
'orderTotal' => $orderTotal,
'currency' => 'UAH',
'items' => json_encode($orderItems), // JSON-рядок з товарами
]);
// Подія: товар додано до кошика
$esp->sendEvent($email, 'CartUpdated', [
'cartTotal' => $cartTotal,
'items' => json_encode($cartItems),
]);
Кейс: динамічні товарні рекомендації в листах
Ситуація. Магазин спортивного харчування, 15 000 активних покупців. Завдання: листи з персональними рекомендаціями на основі історії покупок.
Реалізація. eSputnik приймає товарний фід у форматі XML/JSON і будує рекомендації на основі collaborative filtering. Фід генерується з каталогу 1С-Бітрікс і публікується за захищеним URL:
// /bitrix/components/custom/esputnik.feed/component.php
$products = CIBlockElement::GetList(
['SORT' => 'ASC'],
['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y', 'CATALOG_AVAILABLE' => 'Y'],
false, ['nTopCount' => 10000],
['ID', 'NAME', 'DETAIL_PAGE_URL', 'PREVIEW_PICTURE', 'PROPERTY_PRICE_RRP', 'PROPERTY_BRAND']
);
// Генеруємо XML у форматі Google Shopping (eSputnik приймає цей формат)
header('Content-Type: application/xml');
// ...
У редакторі листів eSputnik блок «Рекомендації» автоматично підставляє персоналізовані товари для кожного отримувача в момент відкриття листа (real-time рендеринг).
Результат: CTR листів з рекомендаціями зріс з 2,1% до 6,8% за 3 місяці.
Групи контактів і сегментація
eSputnik підтримує сегментацію за полями контакту та за подіями. Передаємо з 1С-Бітрікс поля для сегментації:
- Дата останнього замовлення → реактиваційні ланцюжки.
- Загальна сума покупок → VIP-сегмент.
- Категорії куплених товарів → тематичні розсилки.
| Завдання | Трудовитрати |
|---|---|
| API-клієнт + синхронізація контактів | 4–5 год |
| Події ecommerce (замовлення, кошик, перегляд) | 6–8 год |
| Товарний фід для рекомендацій | 4–6 год |
| Налаштування тригерних ланцюжків у eSputnik | 4–8 год |







