Интеграция 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 недели для полной двунаправленной синхронизации с передачей заказов, обработкой webhooks и ICML-фидом каталога.







