Несколько корзин и избранного
Если на вашем сайте предусмотрен функционал работы с множественными корзинами и списками избранного, то enKod позволяет интегрировать и такие механики. Для этого необходимо использовать идентификаторы (строка) для корзин/избранного при передаче событий изменения этих сущностей в enKod.
Идентификаторы корзин и избранного являются необязательными, и, если они не переданы, мы считаем, что работа происходит с дефолтной корзиной/избранным контакта. Подразумеваем, что на аккаунте для контакта могут параллельно и независимо существовать:
- корзина/избранное без идентификатора (далее «дефолтная» корзина/избранное)
- корзины/избранные, обладающие идентификатором
Настройка и особенности работы методов трекинга
Действия с корзиной (скрипт)
Параметр «cartId» необходим для передачи идентификатора корзины (тип данных - строка). Если этот параметр не передан - действия будут происходить с дефолтной корзиной без идентификатора.
- для добавления в определенную корзину одного товара используйте метод:
<script type="text/javascript"> ekEvents.push('productAdd', {productId: '...', cartId: '...'}); </script>
- для добавления в определенную корзину нескольких товаров используйте метод:
<script type="text/javascript"> ekEvents.push('productAdd', [{productId: '...', cartId: '...'}, {productId: '...', cartId: '...'}]); </script>
- для удаления из определенной корзины одного товара используйте метод:
<script type="text/javascript"> ekEvents.push('productRemove', {productId: '...', cartId: '...'}); </script>
- для удаления из определенной корзины нескольких товаров используйте метод:
<script type="text/javascript"> ekEvents.push('productRemove', [{productId: '...', cartId: '...'}, {productId: '...', cartId: '...'}]); </script>
При передаче в одном запросе нескольких товаров с разными cartId - они будут сгруппированы и записаны каждый в соответствующий корзину. Пример такой передачи:
<script type="text/javascript"> ekEvents.push('productAdd', [{productId: '...', cartId: '1'}, {productId: '...', cartId: '2'}]); </script>
Действия с корзиной (API)
Параметр «id» необходим для передачи идентификатора корзины (тип данных - строка). Если этот параметр не передан - действия будут происходить с дефолтной корзиной без идентификатора.
- Изменения корзины (POST /v1/product/cart/)
В теле запроса на уровне с параметрами «cart» и «history» передайте параметр «id» для работы с определенной корзиной:
{ "id": "...", "cart": {...}, "history": [...] }
- Удаления корзины (DELETE /v1/product/cart/)
Передайте тело запроса с единственным параметром «id» для работы с определенной корзиной:
{ "id": "..." }
Действия с избранным (скрипт)
Параметр «favouriteId» необходим для передачи идентификатора избранного (тип данных - строка). Если этот параметр не передан - действия будут происходить с дефолтным избранным без идентификатора.
- для добавления в определенное избранное одного товара используйте метод:
<script type="text/javascript"> ekEvents.push('productLike', {productId: '...', favouriteId: '...'}); </script>
- для добавления в определенное избранное нескольких товаров используйте метод:
<script type="text/javascript"> ekEvents.push('productLike', [{productId: '...', favouriteId: '...'}, {productId: '...', favouriteId: '...'}]); </script>
- для удаления из определенного избранного одного товара используйте метод:
<script type="text/javascript"> ekEvents.push('productDislike', {productId: '...', favouriteId: '...'}); </script>
- для удаления из определенного избранного нескольких товаров используйте метод:
<script type="text/javascript"> ekEvents.push('productDislike', [{productId: '...', favouriteId: '...'}, {productId: '...', favouriteId: '...'}]); </script>
При передаче в одном запросе нескольких товаров с разными favouriteId - они будут сгруппированы и записаны каждый в соответствующее избранное. Пример такой передачи:
<script type="text/javascript"> ekEvents.push('productLike', [{productId: '...', favouriteId: '1'}, {productId: '...', favouriteId: '2'}]); </script>
Действия с избранным (API)
Параметр «id» необходим для передачи идентификатора избранного (тип данных - строка). Если этот параметр не передан - действия будут происходить с дефолтным избранным без идентификатора.
- Изменения избранного (POST /v1/product/favourite/)
В теле запроса на уровне с параметрами «wishlist» и «history» передайте параметр «id» для работы с определенным избранным:
{ "id": "...", "wishlist": {...}, "history": [...] }
- Удаления избранного (DELETE /v1/product/favourite/)
Передайте тело запроса с единственным параметром «id» для работы с определенным избранным:
{ "id": "..." }
Обработка в методах работы с персонами в контексте параметров, влияющих на состояние корзин/избранного
API
Для API-метода Передача данных контакта с привязкой к основным полям (POST /v1/subscribe/) логика работы для кейсов с несколькими корзинами/избранным в зависимости от переданных параметров cartMergeMethod и favouriteMergeMethod следующая:
- replace - содержимое корзины/избранного существующего контакта будет перезаписано на содержимое корзины/избранного контакта, с которым объединяем (в том числе дефолтная корзина/избранное могут быть заменены несколькими корзинами/избранным с идентификаторами и наоборот)
- merge - содержимое корзины/избранного существующего контакта будет объединено с содержимым корзины/избранного контакта, с которым объединяем (дефолтные корзины/избранное будут объединены друг с другом, корзины с идентификаторами будут существовать параллельно (при совпадении идентификаторов корзин/избранного по id - содержимое их будет объединено))
- ignore - содержимое корзины/избранного нового контакта будет проигнорировано, сохранится содержимое корзины/избранного существующего контакта
Скрипт
Для метода скрипта Захват контакта на любой из форм (логин, регистрация, быстрая покупка) логика работы для кейсов с несколькими корзинами/избранным в зависимости от переданных параметров cartMergeMethod и favouriteMergeMethod по описанной выше логике полностью аналогична API.
Пример кейса с объединением контактов
Пример
Контакт 1
- дефолтная корзина (товар 1, товар 2)
- корзина id «cart1» (товар 3, товар 4)
- корзина id «cart2» (товар 5, товар 6)
Контакт 2
- дефолтная корзина (товар 7, товар 8)
- корзина id «cart3» (товар 9, товар 10)
- корзина id «cart2» (товар 11, товар 12)
Объединяем через cartMergeMethod = merge, получаем:
- дефолтная корзина (товар 1, товар 2, товар 7, товар 8)
- корзина id «cart1» (товар 3, товар 4)
- корзина id «cart2» (товар 5, товар 6, товар 11, товар 12)
- корзина id «cart3» (товар 9, товар 10)
Очистка корзины после заказа в случае множественных корзин
При работе с единственной корзиной после заказа она автоматически очищается в базе. В случае нескольких корзин мы не сможем произвести очистку автоматически, т.к. не знаем, какую из нескольких корзин выкупили. Вам необходимо после передачи заказа дополнительно передать метод на очистку корзины, заказ которой был оформлен (используйте соответствующий API-метод или метод скрипта).
Сегментация и динамический контент
Условия сегментов:
- добавил в корзину товары
- добавил в избранное товары
по умолчанию работают с корзиной/избранным с самой недавней датой обновления (под обновлением понимается событие добавления товара в корзину/избранное). Это может быть как дефолтная корзина/избранное, так и одна из корзин/избранного с идентификатором.
В это же время методы динамического контента:
- Все товары из корзины - GetCart.Products
- Все товары из избранного - GetFavourite.Products
по умолчанию также возвращают товары из корзины/избранного с самой недавней датой обновления (под обновлением понимается событие добавления товара в корзину/избранное). Это может быть как дефолтная корзина/избранное, так и одна из корзин/избранного с идентификатором.
Для того, чтобы вывести в письмо содержание всех корзин и всех списков избранного используйте методы:
- N или все товары из всех корзин - GetAllCarts.Products
- N или все товары из всех избранных - GetAllFavourites.Products
Обратите внимание, что при использовании этих конструкций сортировка выдачи происходит только по самим корзинам/избранному, товары внутри не будут отсортированы. Первым будет получено содержимое корзины/избранного, в которые было совершено самое последнее добавление товара, далее следующие по дате обновления и т.д.