# InSales
# Установка приложения
- В панели управления REES46 вашего магазина установите значение
InSalesв разделе"Настройки"-"Настройки магазина"->"CMS"и нажмите кнопку "Сохранить".
- Затем перейдите в раздел
"Настройки"-"Настройки InSales"и нажмите кнопку "Настроить".
- Заполните форму в которой требуется указать доступ к данным магазина через InSales API и нажмите кнопку "Сохранить".
Чтобы создать доступ к данным магазина через InSales API необходимо в панели администрирования InSales перейти в "Расширения"->"Разработчикам"->"Ключи доступа", указать название ключа и нажать кнопку "Создать новый ключ доступа".
Далее заполняем форму, используя данные созданного ключа.

- Запускаем установку плагина.

- Активируем нужные настройки после успешной установки.

# Создание товарного фида
В панели администрирования вашего магазина перейдите на страницу 'Товарные выгрузки' - "Товары" -> "Товарные выгрузки".

В раскрывающемся списке выберите "Яндекс.Маркет - Произвольная выгрузка", нажмите "Добавить".
На следующей странице заполните следующие поля:
- название - используйте уникальное название "REES46", чтобы всегда помнить, что данный XML-файл предназначен для сервиса персонализации
- категории - выберите категории с товарам, которые необходимо выгрузить, необходимо, чтобы все товары попали в создаваемый XML-файл
- название организации и название компании - необходимы для идентификации магазина
- размер картинок - указывайте изображения с оригинальным размером
- не выгружать отсутствующие товары - отметьте этот пункт, чтобы посетителям не рекомендовались отсутствующие на складе товары
- кодировка - выберите UTF-8
- замените строку вывода категорий в шаблоне выгрузки на:
<category id="{{collection.id}}" {% if collection.parent_id %}parentId="{{collection.parent_id}}"{% endif %} url="{{marketplace.url}}/collection/{{collection.handle}}">{{collection.title}}</category>
- Если трекинг будет работать без вариантов товара (в качестве id товара используем product.id (id карточки товара)), замените предлагаемый шаблон блока offer следующим кодом и сохраните настройки:
<offer type="vendor.model" available="{% if product.available %}true{% else %}false{% endif %}" id="{{product.id}}" >
<url>{{account.url}}/product_by_id/{{product.id}}</url>
<price>{{product.price}}</price>
<oldprice>{{product.old_price}}</oldprice>
<currencyId>{{product.currency_id}}</currencyId>
<categoryId>{{collection.id}}</categoryId>
{%for image in product.images limit: 1 %}
<picture>{{image.url}}</picture>
{% endfor %}
<vendor>{{product.properties.vendor}}</vendor>
<model>{{product.title}}</model>
<description>{{product.description}}</description>
</offer>
- Если трекинг будет работать с вариантами товара (в качестве id товара используем id варианта товара), замените предлагаемый шаблон блока offer следующим кодом и сохраните настройки:
{% for variant in product.variants %}
<offer id="{{variant.id}}" available="true" group_id="{{product.id}}" >
<name>{{product.title}}</name>
<model>{{variant.title}}</model>
<url>{{account.url}}/product_by_id/{{product.id}}</url>
{% if variant.images.size %}
<picture>{{variant.images.first.url}}</picture>
{% else %}
<picture>{{product.images.first.url}}</picture>
{% endif %}
<categoryId>{{collection.id}}</categoryId>
<price>{{variant.price}}</price>
<old_price>{{variant.old_price}}</old_price>
</offer>
{% endfor %}
Укажите ссылку на созданный XML-файл в процессе регистрации магазина или в настройках в личном кабинете REES46.
# Настройка событий
Откройте редактор шаблонов вашей текущей темы. Для этого в левом меню выберите "Дизайн", затем на открывшейся странице выберите "Редактор HTML/CSS/JS" текущей темы.
Информация
Вы можете сделать копию текущей активной темы и внести все изменения в неё. Затем, когда вы убедитесь, что всё работает правильно, копию темы можно будет опубликовать.
Если что-то не получается
Обратите внимание, что если какой-то функционал (например, трекинг событий или отображение блоков рекомендаций) не работает даже в случае соблюдения всех инструкций документации, то скорее всего возникает конфликт с каким-то другим модулем или вы используете модифицированные шаблоны InSales. Пожалуйста, свяжитесь с нами по адресу desk@rees46.ru, и мы поможем вам разобраться с возникшей проблемой.
# Настройка отслеживания просмотра товаров и категорий
Откройте основной шаблон темы: layouts.layout.liquid
Где под тегом <head> вставьте следующий код:
Не забудьте сохранить шаблон.
# Настройка отслеживания просмотра товаров и категорий, если работаем с вариантами товара
Обратите внимание
Данный вид трекинга работает только при наличии EventBus (opens new window) в шаблоне сайта.
Необходимо проверить, что шаблон сайта InSales поддерживает EventBus (opens new window). Для этого на станице товара в браузере открываем консоль в инструментах разработчика и вводим EventBus, если консоль не вернула ошибку, значит шаблон поддерживает EventBus и мы можем использовать трекинг с вариантами товара. Пример с поддержкой EventBus
Пример с ошибкой

Откройте основной шаблон темы:
layouts.layout.liquid, затем под тегом<head>вставьте следующий код:
# Настройка отслеживания оформления заказа
Откройте страницу "Счётчики и коды" на настройках магазина. Затем по поле "JavaScript-код для вывода на странице успешного оформления заказа" вставьте следующий код выше или ниже существующего.
<!-- REES46 purchase tracking begin -->
{% if order %}
<script type="text/javascript">
{% if order.client %}
window.__rees_user_id = {{ order.client.id }};
window.__rees_user_email = '{{ order.client.email }}';
window.__rees_user_phone = '{{ order.client.phone }}';
{% endif %}
window.REES46_ORDER = {
order: {{ order.number }},
order_price: {{ order.total_price }},
products: []
};
{% for item in order.items %}
window.REES46_ORDER.products.push({
id: {{ item.product.id }},
amount: {{ item.quantity }},
price: {{ item.sale_price }}
});
{% endfor %}
</script>
{% endif %}
<!-- REES46 purchase tracking end -->
Не забудьте сохранить настройки.
# Настройка отслеживания оформления заказа, если работаем с вариантами товара
Откройте страницу "Счётчики и коды" на настройках магазина. Затем по поле "JavaScript-код для вывода на странице успешного оформления заказа" вставьте следующий код выше или ниже существующего.
<!-- REES46 purchase tracking begin -->
{% if order %}
<script type="text/javascript">
{% if order.client %}
window.__rees_user_id = {{ order.client.id }};
window.__rees_user_email = '{{ order.client.email }}';
window.__rees_user_phone = '{{ order.client.phone }}';
{% endif %}
window.REES46_ORDER = {
order: {{ order.number }},
order_price: {{ order.total_price }},
products: []
};
{% for item in order.items %}
window.REES46_ORDER.products.push({
id: {{ item.variant.id }},
amount: {{ item.quantity }},
price: {{ item.sale_price }}
});
{% endfor %}
</script>
{% endif %}
<!-- REES46 purchase tracking end -->
Не забудьте сохранить настройки.
Обратите внимание
Сообщение о необходимости проверить корректность трекера событий не исчезнет из виджета "Важные задачи" до тех пор, пока в систему не поступит информация об очередном заказе. Дождитесь оформления заказа покупателем или оформите заказ самостоятельно.
# Товарные рекомендации
Подробная инструкция по созданию и управлению блоками товарных рекомендаций находится в Товарные рекомендации.
В этой главе описывается процедура размещения блока рекомендаций на страницы сайта на платформе InSales.
# Уникальный идентификатор блока рекомендаций
Чтобы узнать уникальный идентификатор блока рекомендаций необходимо перейти в раздел "Товарные рекомендации" -> "Блоки рекомендаций" выбрать вкладку "Все блоки", найти нужный блок, код будет указан в описании блока

Также можно перейти в сам блок рекомендаций и на вкладке "Статистика" нажать в правом верхнем углу кнопку “Скопировать код”

Копируем data-recommender-code из модального окна

# Главная страница
Блок вставляются вверху шаблона "Главная страница" (index.liquid). Обратите внимание, что каждый блок имеет уникальный идентификатор, который необходимо скопировать из примера в личном кабинете REES46 в код ниже.
<!-- REES46: блок на главной странице -->
<div class='rees46-recommend'
data-recommender-block='dynamic'
data-recommender-code='УНИКАЛЬНЫЙ_ИДЕНТИФИКАТОР_БЛОКА_РЕКОМЕНДАЦИЙ'>
</div>
<!-- /REES46: блок на главной странице -->
# Страница категории
Блок вставляется вверху шаблона "Категория" (collection.liquid). Обратите внимание, что каждый блок имеет уникальный идентификатор, который необходимо скопировать из примера в личном кабинете REES46 в код ниже.
<!-- REES46: блок на странице категорий -->
<div class='rees46-recommend'
data-recommender-block='dynamic'
data-recommender-code='УНИКАЛЬНЫЙ_ИДЕНТИФИКАТОР_БЛОКА_РЕКОМЕНДАЦИЙ'
data-recommender-category='{{ collection.id }}'>
</div>
<!-- /REES46: блок на странице категорий -->
# Карточка товара
Блок вставляется в шаблон "Товар" (product.liquid) внизу или над описанием текущего товара. Обратите внимание, что каждый блок имеет уникальный идентификатор, который необходимо скопировать из примера в личном кабинете REES46 в код ниже.
<!-- REES46: блок на странице товара -->
<div class='rees46-recommend'
data-recommender-block='dynamic'
data-recommender-code='УНИКАЛЬНЫЙ_ИДЕНТИФИКАТОР_БЛОКА_РЕКОМЕНДАЦИЙ'
data-recommender-item='{{ product.id }}'>
</div>
<!-- /REES46: блок на странице товара -->
# Страница корзины
Блок вставляется внизу шаблона "Корзина" (cart.liquid). Обратите внимание, что каждый блок имеет уникальный идентификатор, который необходимо скопировать из примера в личном кабинете REES46 в код ниже.
<!-- REES46: блок на странице корзины -->
<div class='rees46-recommend'
data-recommender-block='dynamic'
data-recommender-code='УНИКАЛЬНЫЙ_ИДЕНТИФИКАТОР_БЛОКА_РЕКОМЕНДАЦИЙ'>
</div>
<!-- /REES46: блок на странице корзины -->
# Страница с результатами поиска
Блок вставляется внизу шаблона "Поиск" (search.liquid). Обратите внимание, что каждый блок имеет уникальный идентификатор, который необходимо скопировать из примера в личном кабинете REES46 в код ниже.
<!-- REES46: блок на странице поиска -->
<div class='rees46-recommend'
data-recommender-block='dynamic'
data-recommender-code='УНИКАЛЬНЫЙ_ИДЕНТИФИКАТОР_БЛОКА_РЕКОМЕНДАЦИЙ'
data-recommender-search_query='{{ search.query | escape }}'>
</div>
<!-- /REES46: блок на странице поиска -->
# Страница 404
Блок вставляется в шаблон "404" (page_404.liquid). Обратите внимание, что каждый блок имеет уникальный идентификатор, который необходимо скопировать из примера в личном кабинете REES46 в код ниже.
<!-- REES46: блок на странице 404 -->
<div class='rees46-recommend'
data-recommender-block='dynamic'
data-recommender-code='УНИКАЛЬНЫЙ_ИДЕНТИФИКАТОР_БЛОКА_РЕКОМЕНДАЦИЙ'>
</div>
<!-- /REES46: блок на странице 404 -->
# Персонализированный поиск
# Общие настройки
В личном кабинете REES46 на странице настроек товарного поиска в поле "Адрес страницы с результатами поиска" необходимо указать ссылку на соответствующую страницу сайта. Обычно эта страница имеет ссылку следующего вида:
https://my-store.com/search?q=%query%
Где:
- my-store.com - это адрес сайта магазина
- %query% - это строка поискового запроса
Иногда ссылка на страницу результатов поиска может иметь такой вид:
https://my-store.com/collection/all?q=%query%
Определившись с правильным форматом ссылки, просто скопируйте один из примеров выше в соответствующее поле настроек поиска, не забыв изменить адрес сайта на реальный.

Затем измените остальные параметры и тексты заголовков в соответствии с собственными предпочтениями.
Не забудьте сохранить изменения.
# Быстрый поиск
Быстрый поиск интегрируется в магазины InSales автоматически после сохранения настроек и включения инструмента в личном кабинете REES46.
Пример виджета быстрого поиска.

# Полный поиск
В отличие от привычного поиска персональный товарный поиск применяет дополнительные алгоритмы сортировки так, чтобы пользователь увидел интересные ему товары в первую очередь.
Чтобы воспользоваться полным поиском, необходимо в шаблон search.liquid вставить следующий код:
<div class='rees46-full-search-results' data-search-query='{{ search.query }}'></div>
Обратите внимание
Если для полного персонального поиска вы решили использовать отдельную страницу (отличную от search.liquid), то в настройках поиска вам так же необходимо изменить ссылку на новую страницу.
# Синхронизация статусов заказов
Синхронизация статусов позволяет учитывать реально совершённые или отменённые заказы, она необходима для повышения эффективности работы триггерных рассылок и актуальности отчетов.
Обратите внимание!
Если вы не изменяете статусы заказов в бэк-офисе вашего магазина в InSales (например используете для этого внешнюю CDP), то включение учёта статусов заказов в REES46 приведёт к нарушению работы триггерных писем, а также сделает статистику по заказам некорректной, так как все заказы будут иметь статус невыполненных.
# Как включить синхронизацию
Для активации учёта статусов заказов, в панели управления REES46 в разделе "Настройки" -> "Настройки InSales" включите настройку Забирать статусы заказов из InSales 
# Как включить синхронизацию, если работаем с вариантами товара
В панели управления REES46 в разделе "Настройки" -> "Настройки InSales" включите две настройки Забирать статусы заказов из InSales и Работать с вариантами товаров в InSales 
# Как происходит синхронизация
Синхронизация происходит автоматически, при изменении статуса заказа в InSales данные по API передаются в REES46.
# Где отображается информация о реальных заказах
Подробнее об отчете о заказах читайте в отчёте о заказах.
# Профиль пользователя
Для авторизованных пользователей передавайте их email и номер телефона, а также любую другую информацию, которую хотите использовать для сегментации, рассылок и настройки инструментов.
Все доступные для передачи в REES46 поля профиля пользователя можно получить в этом документе (opens new window)
Для InSales можно использовать следующий код:
$(document).ready(function () {
$.getJSON('/client_account/contacts.json', function (data) {
if (data.status == 'error') return;
let r46_data = {};
if (typeof data.client.id != 'undefined' && data.client.id != null)
r46_data.id = data.client.id;
if (typeof data.client.email != 'undefined' && data.client.email != null)
r46_data.email = data.client.email;
if (typeof data.client.phone != 'undefined' && data.client.phone != null)
r46_data.phone = data.client.phone;
r46('profile', 'set', r46_data);
});
});
Добавить код можно в панели управления REES46 в разделе "Общий контент" -> "Встраиваемые скрипты"

# Проверка работоспособности
# Как выполнить проверку
- Включите консоль разработчика в вашем браузере.
- Выберите вкладку Network (или "Сеть"), в которой при обновлении страницы отображаются происходящие запросы.
- Включаете режим фильтрации только XHR-запросов.
- Проверяете, есть ли запросы, которые уходят на api.rees46.ru.
# Проверка отправки событий
- Откройте страницу карточки товара и убедитесь, что уходит PUSH-событие к API REES46.
- Добавьте товар в корзину и убедитесь, что уходит PUSH-событие к API REES46.
- Удалите товар из корзины и убедитесь, что уходит PUSH-событие к API REES46.
- Сделайте заказ товара и убедитесь, что уходит PUSH-событие к API REES46.

# Проверка запроса рекомендаций
- Откройте страницу сайта, где установлены блоки и убедитесь, что к API REES46 уходит столько запросов, сколько установлено блоков рекомендаций.
- Осуществите поиск товара и убедитесь, что к API REES46 ушёл запрос на рекомендации при установленном блоке "Искавшие это также купили".

# Если возникли проблемы
Рекомендации могут появиться не сразу – все зависит от посещаемости вашего сайта. Если на вашем сайте оформляются заказы, значит статистика собирается и скоро рекомендации начнут появляться. Но обязательно проверьте правильность установки.
Если что-то не получается
Обратите внимание, что если какой-то функционал (например, трекинг событий или отображение блоков рекомендаций) не работает даже в случае соблюдения всех инструкций документации, то скорее всего возникает конфликт с каким-то другим модулем или вы используете модифицированные шаблоны InSales. Пожалуйста, свяжитесь с нами по адресу desk@rees46.ru, и мы поможем вам разобраться с возникшей проблемой.