Использование рекомендаций MoodRec в сообщениях
MoodRec — это внешний сервис персональных рекомендаций, которы й подбирает для каждого подписчика релевантные товары и предложения на основе его поведения и каталога. Рекомендации вставляются в сообщение как динамический контент: для каждого получателя в момент отправки формируется своя подборка товаров.
Подключите MoodRec к сообщению как источник динамического JSON-контента. Ссылку на контент можно взять из вкладки Подключение email-плейсмента в кабинете MoodRec.
Подключение внешнего сервиса рекомендаций MoodRec
- Откройте плейсмент в кабинете рекомендательного сервиса и перейдите на вкладку Подключение.
- В поле Платформа для рассылок выберите Altcraft.
- Скопируйте ссылку на динамический JSON-контент и пример кода шаблона:

- В редакторе сообщения Altcraft откройте вкладку Опции, раздел Настройки динамического контента, и вставьте скопированную ссылку в поле Ссылка на динамический JSON контент. В ссылке из кабинета указана заглушка идентификатора — замените её на переменную профиля, в которой хранится идентификатор пользователя на сайте. Подробности — в разделе Формат запроса.

- Вставьте пример кода шаблона из кабинета рекомендательного сервиса в HTML-версию письма. Код уже содержит цикл по массиву рекомендаций.
Формат запроса
Ссылка на динамический JSON-контент выглядит так:
https://<домен сервиса>/catboss/getOffers?token=<токен>&user_id={lead._acid}&limit=15&attributes[]=name&attributes[]=price&attributes[]=url&attributes[]=picture
| Параметр | Описание |
|---|---|
token | Токен доступа к плейсменту. Добавляется в ссылку автоматически. |
user_id | Идентификатор пользователя на сайте. Платформа не подставляет его сама: в ссылке должна быть переменная профиля, в которой хранится идентификатор (см. ниже). |
limit | Количество рекомендаций в ответе. |
attributes[] | Атрибуты товара, которые нужно вернуть: название, цена, ссылка, изображение. |
contextOfferIds[] | Идентификаторы товаров, которые пользователь добавил в корзину или просмотрел. Обязателен для алгоритмов «Похожие товары» и «Кросс-сейл». |
contextCatIds[] | Идентификаторы категорий, учитываемых при подборе рекомендаций. Необязателен: если не передать, категории берутся из внутренней статистики пользователя. |
user_id — уникальный идентификатор, по которому вы определяете, что посетитель сайта и профиль в Altcraft — один и тот же человек. Подставьте в ссылку перем енную профиля, в которой хранится этот идентификатор, — например, {lead._acid}, {lead._email} или переменную дополнительного поля. Значение переменной должно совпадать с идентификатором, по которому пользователь загружен в каталог рекомендаций.
Если оставить в ссылке заглушку или подставить переменную с другим идентификатором, сервис не сможет сопоставить получателя с пользователем сайта — рекомендации будут одинаковыми для всех.
Контекст запроса
Часть алгоритмов учитывает контекст запроса — товары из корзины и просмотренные пользователем товары, а также интересующие его категории. Контекст передаётся в ссылке параметрами contextOfferIds[] и contextCatIds[]:
| Алгоритм | Параметр контекста |
|---|---|
| Похожие товары | contextOfferIds[] — обязателен |
| Кросс-сейл | contextOfferIds[] — обязателен |
| Популярные в любимых категориях | contextCatIds[] — опционально |
| Популярные новинки в любимых категориях | contextCatIds[] — опционально |
| Популярные по продажам в любимых категориях | contextCatIds[] — опционально |
| Кросс-категории (часто покупают вместе) | contextCatIds[] — опционально |
Для алгоритмов «Похожие товары» и «Кросс-сейл» передача contextOfferIds[] обязательна. Для остальных алгоритмов из таблицы параметр contextCatIds[] необязателен: если его не передать, категории берутся из внутренней статистики пользователя; если передать — используются переданные значения. Контекст учитывают только перечисленные алгоритмы.
Формат ответа
Сервис возвращает JSON с массивом рекомендаций в поле recoms:
{
"placement_id": 272,
"client_id": "1493995421.1771423091",
"user_id": "AA123462374",
"recoms": [
{
"offer_id": "487927",
"attributes": [
{ "name": "name", "value": "Куртка зимняя" },
{ "name": "price", "value": "12 990" },
{ "name": "url", "value": "https://example.com/catalog/jacket" },
{ "name": "picture", "value": "https://example.com/img/jacket.png" }
]
}
]
}
В шаблоне доступны все поля ответа через переменные {json.<имя поля>}: например, {json.recoms} — массив рекомендаций, {json.placement_id} — идентификатор плейсмента.
Цикл по массиву рекомендаций:
{for $index $el = json.recoms}
{$el.offer_id}
<div>
{for $i $item = $el.attributes}
{$item.name} — {$item.value}
{else}
Атрибутов нет
{end}
</div>
{else}
Рекомендаций нет
{end}
Атрибуты каждой рекомендации лежат в массиве attributes парами имя-значение, поэтому в шаблоне они перебираются вложенным циклом. Тот же принцип работает, если вы выводите атрибуты по условию: проверяйте $item.name и подставляйте $item.value в нужно е место разметки.
Особенности работы
- Рекомендации запрашиваются у сервиса в момент отправки каждого сообщения, поэтому подборка всегда актуальна.
- Для атрибуции кликов и покупок по рекомендательному блоку в запросе передаётся идентификатор рассылки.
- Предпросмотр сообщения обращается к сервису рекомендаций так же, как реальная отправка. Чтобы увидеть подборку, в профиле предпросмотра должны быть данные, по которым сервис находит рекомендации.