Для передачи информации о брошенных корзинах через Daemon Collector необходимо выполнить несколько шагов.
Примечание
ICML каталог должен быть синхронизирован с товарным каталогом в InSales.
Важно, чтобы клиент был зарегистрирован в CRM с externalId как ID клиента в InSales, так как поиск клиента происходит по externalId и корзины передаются только для зарегистрированных клиентов.
Сгенерируйте ключ-сайта для работы Daemon Collector в системе по пути Настройки → Интеграция → Collector.
Внесите изменения в шаблонах InSales:
- Перейдите в административную панель сайта, слева внизу будет пункт Сайт → Дизайн, нажмите Редактировать шаблон. Вас перенаправит в редактор шаблонов.
- Далее опуститесь в самый низ сайта и найдите футер (подвал) вашего сайта. Нажмите Редактировать.
- В зависимости от ваших настроек справа или слева откроется дополнительное окно с редактором виджетов, вам необходимо нажать Код виджета.
- В открывшемся окне перейдите на вкладку «JS».
- Если вы редактируете виджет впервые, тогда появится окно с предупреждением, нажмите Продолжить.
- Вставьте код, привденный ниже, в окно для ввода.
Важно!
Данный код необходимо размещать в конструкции
$(function() {});
.
$(function() {
(function(_, r, e, t, a, i, l) {
_['retailCRMObject'] = a;
_[a] = _[a] || function() {
(_[a].q = _[a].q || []).push(arguments)
};
_[a].l = 1 * new Date();
l = r.getElementsByTagName(e)[0];
i = r.createElement(e);
i.async = !0;
i.src = t;
l.parentNode.insertBefore(i, l)
})(window, document, 'script', 'https://collector.retailcrm.pro/w.js', '_rc');
_rc('require', 'cart');
ajaxAPI.shop.client.get()
.done(function(clientData) {
_rc('create', 'КЛЮЧ КОЛЛЕКТОРА', {
customer: {
externalId: clientData.id
}
});
EventBus.subscribe('add_items:insales:cart', function(data) {
setCart(data.order_lines)
})
EventBus.subscribe('set_items:insales:cart', function(data) {
setCart(data.order_lines)
})
EventBus.subscribe('delete_items:insales:cart', function(data) {
setCart(data.order_lines)
})
// Оформили заказ, очищаем корзину и связываем ее с заказом.
if (window.location.href.includes('/orders')) {
clearCartOnSuccessCheckout();
}
function setCart(orderLines) {
if (Array.isArray(orderLines) && orderLines.length === 0) {
_rc('cart:clear')
return;
}
_rc('cart:set', {
customer: {
email: clientData.email,
},
items: getCartItems(orderLines),
createdAt: new Date(),
link: window.location.origin + '/cart_items'
})
}
function getCartItems(inputArray) {
const items = [];
inputArray.forEach(item => {
items.push({
externalId: item.product_id + '-' + item.id,
// xmlId: item.sku,
quantity: item.quantity,
price: item.sale_price,
});
});
return items;
}
function clearCartOnSuccessCheckout() {
let iframe = $('iframe').get(0);
if (iframe) {
let iframeContent = iframe.contentDocument || iframe.contentWindow.document;
let externalId = $(iframeContent).find('#retailcrm_external_id').text().trim();
if (externalId) {
_rc('cart:clear', {
customer: {
email: clientData.email,
},
order: {
externalId: externalId,
}
})
}
}
}
})
});
В данном коде, вам необходимо установить сгенерированный на первом шаге ключ-сайта в методе create
. Также если вы используете сторонний каталог, в методе getCartItems
необходимо раскомментировать xmlId: item.sku
и закомментировать externalId: item.product_id + '-' + item.id
.
- Нажмите Сохранить изменения.
- Далее необходимо добавить код для очистки корзины при успешном оформлении заказа. Также данный код позволяет привязать корзину к созданному заказу.
- Вернитесь в административную панель сайта, перейдите по пути «Сайт» → «Счетчики и коды».
- Найдите окно для ввода «HTML-разметка для вывода на iframe-странице после оформления заказа».
- Скопируйте и вставьте приведенный ниже код в окно для ввода и сохраните настройки.
<span id="retailcrm_external_id" style="display: none;">{{ order.id }}</span>
Важно!
Передача, обновление данных и очистка корзины в системе происходит с задержкой.