Настройка передачи информации о брошенных корзинах
Скопировать ссылку на статью
Скопировано

Для передачи информации о брошенных корзинах через 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>

Важно!

Передача, обновление данных и очистка корзины в системе происходит с задержкой.

Благодарим за отзыв.
Была ли статья полезна?
Нет
  • Рекомендации не помогли
  • Нет ответа на мой вопрос
  • Текст трудно понять
  • Не нравится описанный функционал
Да
Предыдущая статья
Как выгрузить архив заказов и клиентов из InSales
В настройках интеграции присутствует возможность выгрузки архивных заказов и клиентов из InSales в систему тогда, когда это необходимо.
Следующая статья
Смена клиента в заказах системы и InSales
Обзор особенностей обмена между системой и InSales при изменении клиента в заказе.