# Как настроить товарные рекомендации в email

Если в блоке «Товары» для параметра **Источник** установить значение **Рекомендации**, товары можно будет ранжировать по стратегиям **Бестселлеры**, **Снова в наличии**, **Снижение цены**, **Новинки**, **Часто покупают вместе** или **На основе просмотренного** без необходимости выбирать товары вручную или создавать правило для каталога. Описание всех полей, которые добавляет этот источник, см. в разделе [Получение рекомендованных товаров](/ru/product/content/email-content/drag-and-drop-email-editor/blocks/#get-recommended-products). Для работы трех из этих стратегий требуются данные не из вашего каталога: стратегия **Бестселлеры** считывает историю заказов, а стратегии **Часто покупают вместе** и **На основе просмотренного** считывают информацию о том, что покупатели просматривали и покупали. В этом руководстве рассказывается, какие данные нужно отправлять, чтобы у каждой стратегии была информация для ранжирования.

<Aside type="tip">
Уже отправляете события `PW_AbandonedCart` и `PW_OrderCreated` для [возвращения брошенных корзин](/ru/tutorials/product-guides/email-marketing-campaigns/how-to-set-up-an-abandoned-cart-campaign/)? Продолжайте чтение. Для стратегии **Бестселлеры** в событии `PW_OrderCreated` требуется еще одно поле, которое не рассматривается в руководстве по брошенным корзинам.
</Aside>

## Перед началом работы

Убедитесь, что в каталоге вашего аккаунта есть товары. Перейдите в **Контент → Каталог товаров** и подключите фид, импортируйте CSV-файл или добавьте товары вручную. [Узнайте, как заполнить каталог](/ru/product/content/product-catalog/#ways-to-populate-your-catalog).

<Aside type="caution" icon="setting" title="Требуется помощь разработчика">
Для отправки описанных ниже событий потребуется помощь вашей команды разработчиков, если только ваша интеграция с магазином еще не отправляет их. Пожалуйста, поделитесь с ними этим руководством.
</Aside>

<Aside type="note" title="В новых аккаунтах сначала отображается обычный каталог">
Для каждой из приведенных ниже стратегий необходимо накопить историю, прежде чем она сможет что-либо ранжировать. До тех пор в блоке будет отображаться обычный каталог. См. примечание в разделе [Получение рекомендованных товаров](/ru/product/content/email-content/drag-and-drop-email-editor/blocks/#get-recommended-products).
</Aside>

## Для каких стратегий требуются события

Три из шести стратегий ранжируют товары на основе отправляемых вами событий; остальные три ранжируют товары непосредственно из вашего каталога и не требуют от вас никаких действий.

| Стратегия | Требуются ли события? | Источник данных |
| :---- | :---- | :---- |
| **Снова в наличии** | Нет | Изменения остатков в каталоге |
| **Снижение цены** | Нет | Изменения цен в каталоге |
| **Новинки** | Нет | Дата добавления в каталог |
| **Бестселлеры** (7/30 дней) | Да | `PW_OrderCreated` / `PW_OrderUpdated` с `items` |
| **На основе просмотренного** | Да | Любое событие, содержащее ID товара |
| **Часто покупают вместе** | Да | Любое событие, содержащее ID товара, плюс тег устройства |

Изменение остатков или цены в вашем фиде, или следующая запланированная синхронизация, автоматически обновляют стратегии **Снова в наличии**, **Снижение цены** и **Новинки**. Для этих трех стратегий ничего отправлять не нужно.

## Бестселлеры: добавьте товары в события о заказах

Стратегии **Бестселлеры (7 дней)** и **Бестселлеры (30 дней)** ранжируют товары по количеству проданных единиц за указанный период. Они считывают массив `items` в событиях `PW_OrderCreated` и `PW_OrderUpdated`, а именно `productId` и `quantity` каждого товара.

Если вы уже отправляете `PW_OrderCreated` для [удаления тегов брошенной корзины](/ru/tutorials/product-guides/email-marketing-campaigns/how-to-set-up-an-abandoned-cart-campaign/#what-happens-when-you-send-pw_ordercreated), этот минимальный вызов (только с `orderId`) по-прежнему будет очищать корзину, но не предоставит стратегии «Бестселлеры» данных для подсчета. Добавьте в тот же вызов позиции заказа:

```json
{
  "request": {
    "hwid": "8f65b16df378e7a6bece9614e1530fb2",
    "application": "XXXXX-XXXXX",
    "event": "PW_OrderCreated",
    "attributes": {
      "orderId": "ORDER-10293",
      "items": [
        {
          "productId": "SKU-4821",
          "quantity": 1
        },
        {
          "productId": "SKU-5190",
          "quantity": 2
        }
      ]
    },
    "userId": "shopper@example.com"
  }
}
```

`productId` должен совпадать с ID, который используется для этого товара в вашем [Каталоге товаров](/ru/product/content/product-catalog/), чтобы стратегия «Бестселлеры» могла найти товар для отображения. Дополнительные поля товара (цена, название и т.д.) для этой стратегии игнорируются. Для ранжирования учитываются только `productId` и `quantity`. Отправляйте тот же массив `items` в событии `PW_OrderUpdated` при редактировании, возврате или частичной отмене заказа, так как стратегия «Бестселлеры» пересчитывает данные на основе последнего события для этого заказа.

<Aside type="tip">
Если вы используете [интеграцию с Shopify](/ru/product/integrations/shopify-integration/), событие `PW_OrderCreated` уже содержит `items` с `productId` и `quantity` для каждого заказа — с вашей стороны ничего добавлять не нужно. Однако интеграция не отправляет `PW_OrderUpdated`, поэтому стратегия «Бестселлеры» учитывает заказы в их первоначальном виде и не вычитает единицы товара при последующих изменениях, возвратах или отменах.
</Aside>

<Aside type="caution" title="Отправляйте количество как число">
Используйте для `quantity` настоящее число JSON, а не строку в кавычках. Pushwoosh сохраняет каждое значение атрибута только в том типе, в котором оно было впервые объявлено или определено; значение несоответствующего типа будет молча отброшено, а `postEvent` все равно вернет успешный результат. См. аналогичное предостережение для `PW_AbandonedCart` в разделе [Используйте правильные типы атрибутов](/ru/tutorials/product-guides/email-marketing-campaigns/how-to-set-up-an-abandoned-cart-campaign/#create-the-events-in-your-control-panel).
</Aside>

<Aside type="note">
Стратегия **Бестселлеры** ранжирует товары исключительно на основе истории заказов. Просмотры и действия в корзине не учитываются. Для ранжирования, которое также включает просмотры и действия в корзине, используйте стратегии **На основе просмотренного** или **Часто покупают вместе**.
</Aside>

## На основе просмотренного и Часто покупают вместе: отслеживайте активность по товарам

Обе стратегии строятся на одном и том же сигнале: событиях, содержащих ID товара. Вам не нужно специальное событие с названием «просмотр товара» — любое [пользовательское событие](/ru/product/audience-data-and-segmentation/events/custom-events/), отправленное через [postEvent](/ru/developer/api-reference/user-centric-api/#postevent), будет учтено, если его `attributes` включают один из следующих ключей:

* Один товар, как атрибут верхнего уровня: `product_id`, `productId`, `productid`, `item_id` или `sku`.
* Несколько товаров, как массив `products`, где каждый элемент имеет `product_id`, `productId`, `id` или `sku`.

Например, вызовите ваше существующее событие просмотра товара с уже имеющимся атрибутом ID товара:

```json
{
  "request": {
    "hwid": "8f65b16df378e7a6bece9614e1530fb2",
    "application": "XXXXX-XXXXX",
    "event": "ProductViewed",
    "attributes": {
      "product_id": "SKU-4821",
      "category": "Audio"
    },
    "userId": "shopper@example.com"
  }
}
```

Стратегия **На основе просмотренного** ранжирует товары, с которыми недавно взаимодействовал каждый покупатель — после настройки потока вышеуказанных событий дополнительная настройка не требуется.

<Aside type="tip">
Если вы используете [интеграцию с Shopify](/ru/product/integrations/shopify-integration/), встраиваемый код для витрины магазина уже отправляет `PW_ProductViewed` с `productId` при каждом просмотре страницы товара — с вашей стороны ничего добавлять не нужно, если переключатель **Push Init Embed** включен (по умолчанию он выключен). См. [События просмотра витрины](/ru/product/integrations/shopify-integration/#storefront-browsing-events).
</Aside>

Стратегия **Часто покупают вместе** ранжирует товары, которые часто покупают вместе с одним якорным товаром, на основе истории всего вашего аккаунта. Для этого требуется еще один элемент: **Тег товара**, [тег устройства](/ru/developer/api-reference/tags/), который содержит ID текущего якорного товара. Укажите имя поля при настройке стратегии в [блоке «Товары»](/ru/product/content/email-content/drag-and-drop-email-editor/blocks/#get-recommended-products) (например, `PW_LastViewedProductID`), а затем поддерживайте этот тег в актуальном состоянии на каждом устройстве. Например, [устанавливайте его](/ru/developer/api-reference/tags/) на ID товара всякий раз, когда покупатель просматривает товар. Если у получателя тег не установлен, для него в блоке будет отображаться обычный каталог.

<Aside type="caution" title="Правила именования тегов">
Имя тега может содержать только буквы, цифры, знаки подчеркивания и пробелы, так как оно должно быть доступно в Liquid. См. [Для стратегии «Часто покупают вместе» требуется тег товара](/ru/product/content/email-content/drag-and-drop-email-editor/blocks/#get-recommended-products).
</Aside>

## Убедитесь, что ваши события доставляются

Прежде чем добавлять блок, проверьте, что Pushwoosh действительно получает вышеуказанные события: перейдите в **Аудитория → События**, откройте отправленное вами событие (`PW_OrderCreated` или пользовательское событие, содержащее ID товара) и убедитесь, что последние обращения отображаются. См. [Статистика событий](/ru/product/audience-data-and-segmentation/events/).

<Aside type="note">
Пустой блок «Товары» может означать либо «события не были доставлены», либо «еще не накоплено достаточно истории» (см. примечание выше). Статистика событий позволяет исключить первую причину, прежде чем вы начнете разбираться со второй.
</Aside>

## Добавьте блок в ваше email-сообщение

Добавьте блок [Товары](/ru/product/content/email-content/drag-and-drop-email-editor/blocks/#products) в [контент вашего email-сообщения](/ru/product/content/email-content/drag-and-drop-email-editor/create-email-content-with-drag-and-drop-editor/), установите **Источник** в **Рекомендации** и выберите **Стратегию**. Описание всех полей в панели настроек см. в разделе [Получение рекомендованных товаров](/ru/product/content/email-content/drag-and-drop-email-editor/blocks/#get-recommended-products). Нажмите **Обновить предпросмотр**, чтобы убедиться, что холст заполнен реальными товарами, прежде чем отправлять сообщение.