Daemon Collector
Скопировать ссылку на статью
Скопировано

Daemon Collector — специализированная системная служба, обеспечивающая тесное взаимодействие системы с пользователями, которые находятся на вашем сайте. Collector легко устанавливается на сайт с помощью js-вставок и позволяет:

  • видеть в интерфейсе системы, кто из ваших клиентов находится в данный момент на сайте;
  • собирать контактные данные пользователей в момент их ухода с сайта;
  • быстро подключать формы заявок и обратной связи вашего сайта к системе;
  • передавать информацию о брошенной корзине.

Инициализация

Разместите этот код непосредственно перед закрывающим тегом </head>

<script type="text/javascript">
        (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('create', 'ключ-сайта', {
                customer: {
                        externalId: 'ID-клиента-на-сайте  (customer.externalId в crm)'
                }
        });

        _rc('send', 'pageView');
</script>

В вызове _rc('create'... происходит инициализация контекста. Обязательным параметром для этого вызова является ключ сайта ключ-сайта, которые генерируется при активации сайта в системы по пути НастройкиИнтеграцияCollector.

Если пользователь авторизован на сайте, необходимо передавать внешний идентификатор пользователя в ключе customer.externalId (в качестве значения должен выступать внешний идентификатор клиента). Если же пользователь не авторизован, то ключ customer.externalId указывать не нужно.

Также можно установить актуальный идентификатор клиента (customer.externalId) с помощью следующего метода:

_rc('use', 'customer', { externalId: 'ID-клиента-на-сайте (customer.externalId в crm)' })

Данный метод будет полезен, например, для SPA-сайтов (single page application), когда Collector уже встроен на сайт. Посетитель сайта заходит не авторизовавшись - Collector подключается (происходит инициализация), но при вызове метода create не передается идентификатор клиента. В этом случае данный метод решает эту проблему, передавая id клиента, например, сразу же после того, как клиент авторизуется на сайте.

Ниже вы можете найти примеры установки счетчика.

Также возможно производить отслеживание online-статуса клиента на сайте. Отслеживание возможно как при помощи формы захвата для клиентов, оформивших через неё заказ, так и по метке clientId, при наличии интеграции с Google Analytics на сайте и настроенного модуля интеграции CRM и GA.

Помимо индикатора в списке клиентов есть фильтр по статусу Online.

Collector пытается идентифицировать клиента, пришедшего на сайт, по любому из следующих параметров:

  • Идентификатору клиента на сайте customer.externalId '(если он указан)'

  • Метке _ga Google Analytics

Примечание

Для отслеживания онлайн-активности с помощью Collector и метки GA, необходимо, чтобы метка GA передавалась в систему в карточку клиента с помощью модуля GoogleAnalytics 4 или иными способами, например, через API.

Подключенный на сайте Collector ищет метку GA в cookies и затем передает её в систему. При совпадении метки клиент будет отображаться Online в списке клиентов.

  • Собственной метке Collector-а

Работа с брошенными корзинами

Важно!

Для взаимодействия с корзинами потребуется customer.externalId, который указывается при инициализации коллектора через метод create или же с помощью метода use.

Для работы с корзинами нам понадобиться подключить следующий модуль используя команду require:

_rc('require', 'cart');

Методы для взаимодействия с корзинами

Важно!

При работе с датами в параметрах указывать дату в типе Date. Пример: createdAt: new Date(). В crm дата будет передаваться в формате UTC и конвертироваться в дату указанной таймзоны, выставленной в Общих настройках Системы.

Редактирование/создание корзины

Символьный код метода: `cart:set`

Описание: Если у клиента нет корзины, то запрос её создаёт, иначе редактирует.

Параметры:
  • customer
    • email (необязательный)
    • phone (необязательный)
  • items
    • externalId - offer.externalId в crm
    • xmlId - offer.xmlId в crm
    • quantity
    • price (необязательный)
  • link (необязательный) - ссылка на корзину
  • createdAt (необязательный, в этом случае подставляется автоматически)
  • updatedAt (необязательный, в этом случае подставляется автоматически)

    Пример использования:

        _rc('cart:set', {
    customer: {
        email: 'test@mail.ru',
    },
    items: [{
        externalId: '1',
        xmlId: '2',
        quantity: 1,
                price: 99.99,
    }],
        link:'https://test.test/customers/1/cart',
        createdAt: new Date(),
})

Очистка корзины

Символьный код метода: cart:clear

Описание: Данный метод нужен, если клиент полностью очистил корзину, либо оформил заказ из корзины.

Параметры:

  • customer
    • email (необязательный)
    • phone (необязательный)
  • order (необязательный)
    • externalId - order.externalId в crm
    • number - order.number в crm

Пример использования:

// Вариант 1. Без параметров
_rc('cart:clear')

// Вариант 2. С параметрами
_rc('cart:clear', {
    customer: {
        email: 'test@mail.ru',
  },
    order: {
        externalId: '1234',
        number: '44C',
    },
})

Пример ошибки в консоли браузера при отсутствии обязательного параметра

Запрос:

_rc('cart:set', {
    customer: {
        email: 'test@mail.ru',
    },
    items: [{
                // отсутствует externalId и xmlId
        quantity: 1,
    }],
    createdAt: new Date(),
});

Ошибка:

Логирование ошибок в журнале действий

Если по каким-то причинам корзина не была все же создана, то в этом случае стоит проверить прежде всего “Журнал действий”, выбрав тип записи “Collector”. Пример ошибки:

Примечание

Визит клиента завершится в том случае, если в течении 30 минут от клиента не было активности. При этом, если у клиента была оформлена корзина, то она станет брошенной. Если клиент спустя 30 минут станет снова активным и при этом у него была корзина, то «брошенность» убирается.

Подробнее о работе с брошенной корзиной в карточке клиента читайте в соответствующей статье.

Подключение формы захвата

Форма захвата определяет, что пользователь собирается уходить с сайта, и предлагает ему оставить свои контактные данные для получения спецпредложений, новостей и т.д.

Важно!

Стандартная форма захвата срабатывает при отводе мыши за границы сайта. Поэтому она не срабатывает в мобильной версии сайта.

Форма представляет из себя подключаемый модуль, для загрузки модуля используется команда require.

_rc('require', 'capture-form');

По умолчанию форма будет показана пользователю один раз независимо от того, оставил он в итоге контакты или просто закрыл форму. В параметре period можно задать (в минутах), через какое время форма будет показана пользователю повторно:

_rc('require', 'capture-form', {
        'period': 60 * 24 * 30 // показать через месяц
});

Важно!

Форма не будет показана пользователю, авторизованному на сайте, то есть если в коде вызова _rc('create'... указан параметр customer.externalId.

По умолчанию в форме отображаются поля Имя name, Телефон phone, Email email. Вы можете настроить состав полей:

_rc('require', 'capture-form', {
        'fields': {
                'name': {},
                'phone': { required: true, label: 'Phone' } // телефон обязателен
        }
});

Также можно переопределить вводный текст, надпись на кнопке и текст об успешной отправке формы обратной связи:

_rc('require', 'capture-form', {
        'fields': {
                'phone': { required: true }
        },
        labelPromo: "Хотите, мы вам перезвоним?",
        labelSend: "Перезвоните мне!"
        labelThanks: "Заявка отправлена"
});

При инициализации или открытии формы вы можете задать следующие параметры:

name Имя
email Email
phone Телефон
customerComment Комментарий пользователя
orderType Тип заказа
orderMethod Способ оформления
itemId ID товара на сайте
customSomeField Пользовательские поля

Значения для пользовательских полей указываются с префиксом custom, после которого нужно указывать код пользовательского поля в camelСase. Например, пользовательское поле bonus_code требуется указывать в виде customBonusCode.

_rc('require', 'capture-form', {
        orderMethod: 'online',
        email: "user@example.net",
        customTransactionId: "acde1625ab7"
});

Вы можете вручную вызвать показ формы:

_rc('capture-form:show', {
        'fields': ['phone']
});

Использование кастомизированной формы захвата

Вы можете полностью заменить форму, которая будет использоваться для взаимодействия с пользователем, для этого вам необходимо передать параметр form при инициализации:

_rc('require', 'capture-form', {
        form: {
                show: function () {
                        // код, который покажет пользователю форму, например:
                        // $('#my-cool-form').show();
                },
                hide: function () {
                        // код, который закроет форму, например:
                        // $('#my-cool-form').hide();
                }
     }
});

Отправку данных вам также необходимо реализовать самостоятельно.

Отправка заявки

Daemon Collector позволяет отправлять заявки с вашего сайта в систему, не прибегая к взаимодействию с полноценным API системы. Отправка осуществляется с помощью вызова _rc('send', 'order', {...}).

_rc('send', 'order', {
        'name': 'Виктор',
        'email': 'some-email@mail.ru'
});

При отправке можно указывать те же параметры, что и для формы захвата.

Ниже приведен пример отправки формы обратной связи в систему.

Примеры

Пример кода для инициализации отслеживания на landing page

Так будет выглядеть код отслеживания при установке на сайты без пользовательской базы, например, на landing page.

<script type="text/javascript">
        (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('create', 'RC-16632969589');
        _rc('send', 'pageView');
</script>

Пример кода шаблона на php для инициализации отслеживания

Код отслеживания будет похож на данный пример для сайтов с пользовательской базой, например, при установке на страницы интернет-магазина.

<script type="text/javascript">
        (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');

<?php
        $params = array();
        if ($customer->isAuth()) {
                $params['customer'] = [
                        'externalId' => $customer->getId(),
                ];
        }

        echo sprintf("_rc('create', 'RC-16632969589', %s);\n", json_encode((object) $params));
?>

        _rc('send', 'pageView');
</script>

Пример отправки заявки в систему через js api

Допустим, есть landing page с формой заявки, который подключен к CPA-сети. Нам требуется отправлять форму в систему с указанием ID транзакции CPA-сети в пользовательском поле transaction_id.

1) Заводим пользовательское поле transaction_id.

2) Подключаем jQuery для удобства работы с формой заявки и jQuery-плагин для получения URL-параметров:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript" src="/jquery.url.js"></script>

3) Добавляем код отслеживания Collector:

<script type="text/javascript">
        (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('create', 'RC-16632969589');
        _rc('send', 'pageView');
</script>

4) Настраиваем отправку формы. При отправке заявки указываем для нее способ оформления «Форма обратной связи» feedback. После отправки уведомляем пользователя о результате отправки формы.

<script type="text/javascript">
$(function() {
        $('#feedback-form').submit(function() {
                _rc('send', 'order', {
                        'name': $(this).find('input[name=name]').val(),
                        'email': $(this).find('input[name=email]').val(),
                        'customTransactionId': url('?transaction_id'),
                        'orderMethod': 'feedback',
                        'callback': function(success, response) {
                                // уведомляем пользователя о результате отправки формы
                                // вместо alert() можно вывести более юзер-френдли сообщение
                                if (success) {
                                        alert('Спасибо, ваша заявка принята! Её номер: ' + response.id); 
                                } else {
                                        alert('К сожалению, не удалось отправить заявку.');
                                }
                        }
                });

                return false;
        })
})
</script>

Что такое response.id в Demon Collector?

response.id в Demon Collector - это externalId заказа в CRM.

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