Інтеграція CRM-системи RetailCRM з сайтом
RetailCRM — спеціалізована CRM для інтернет-торговлі, де-факто стандарт для середніх та великих російських інтернет-магазинів. На відміну від універсальних CRM, RetailCRM була побудована спеціально для управління замовленнями, роботи з клієнтською базою та маркетинговими комунікаціями в e-commerce.
Архітектура інтеграції
RetailCRM виступає операційною системою для менеджерів, сайт — фронтендом для покупців. Інтеграція двустороння:
Сайт → RetailCRM: замовлення, клієнти, платежі
RetailCRM → Сайт: статуси замовлень, дані про клієнта, доставка
Підключення через офіційний SDK
composer require retailcrm/api-client-php
$client = \RetailCrm\Factory::createClient(
'https://your-store.retailcrm.ru',
env('RETAILCRM_API_KEY')
);
Передача замовлення
При створенні замовлення на сайті воно негайно передається в RetailCRM:
$order = [
'number' => (string)$order->id,
'externalId' => (string)$order->id,
'createdAt' => $order->created_at->format('Y-m-d H:i:s'),
'status' => 'new',
'customer' => [
'externalId' => (string)$user->id,
'email' => $user->email,
'firstName' => $user->first_name,
'phones' => [['number' => $user->phone]]
],
'delivery' => [
'code' => 'courier',
'address' => ['text' => $order->delivery_address]
],
'items' => array_map(fn($item) => [
'offer' => ['externalId' => $item->product_id],
'productName' => $item->product_name,
'quantity' => $item->quantity,
'initialPrice' => $item->price / 100
], $order->items->toArray()),
'totalSumm' => $order->total / 100
];
$client->orders->create(new \RetailCrm\Api\Model\Request\Orders\OrdersCreateRequest(
\RetailCrm\Api\Model\Entity\Orders\Order::fromArray($order)
));
Синхронізація статусів назад
RetailCRM відправляє webhook коли менеджер змінює статус замовлення. Налаштуйте endpoint:
Route::post('/webhooks/retailcrm', function (Request $request) {
$data = json_decode($request->getContent(), true);
if ($data['topic'] === 'order_update') {
$order = $data['order'];
Order::where('id', $order['externalId'])
->update(['status' => $this->mapStatus($order['status'])]);
// Повідомити покупця про зміну статусу
dispatch(new OrderStatusChangedJob($order['externalId'], $order['status']));
}
});
Каталог товарів
RetailCRM може виступати джерелом цін та наявності через ICML-фід:
<!-- retailcrm.xml - генерується сайтом, імпортується в RetailCRM -->
<yml_catalog>
<shop>
<offers>
<offer id="123" available="true">
<price>1500</price>
<stockCount>10</stockCount>
<name>Футболка синя XL</name>
</offer>
</offers>
</shop>
</yml_catalog>
Фід генерується раз на годину, RetailCRM імпортує оновлення.
Клієнтська база та історія
RetailCRM зберігає повну історію замовлень клієнта, його сегменти та теги. Через API можна отримати ці дані для персоналізації на сайті: показувати "рекомендовано для вас" на основі попередніх покупок, відображати статус програми лояльності.
Триггерні комунікації
RetailCRM вміє запускати email/SMS/push за подіями: брошена корзина, N днів без покупок, день народження. Налаштовується усередині RetailCRM, вимагає тільки коректної передачі даних клієнта — коду на сайті не потрібно.
Терміни інтеграції: 1–2 тижні для повної двусторонної синхронізації з передачею замовлень, обробкою webhook та ICML-фідом каталогу.







