Как вывести в письме заказы по сегменту

В рассылке можно вывести заказы за период, используя сегменты и параметр Recipient.Orders.FilterBySegment().
Параметр доступен как в автоматических, так и массовых рассылках.

Другой вариант задачи: вывести в письме информацию по конкретному заказу из сценария. Например, после оформления заказа или после доставки для получения отзыва. Для такой задачи используйте параметр Order, описанный в статье.

Вывод заказов по сегменту

1. Определите, информация по каким заказам должна попасть в письмо.
Например, в своей рассылке мы хотим учитывать заказы, совершённые за последние 30 дней в статусе «Оформлена»:

Снимок экрана 2021-03-02 в 22.12.02.png

В фильтр должны попасть все действия нужных заказов, чтобы учитывались их конечные статусы

2. Создаём сегмент по инструкции:

Снимок экрана 2021-03-02 в 22.12.47.png

3. Находим параметр. Подробнее о шаблонизаторе — в статье.
Так как у нас нет привязки к событию, а заказы мы достаём из привязки к клиенту, базовый параметр — Recipient. Дальше — Orders.
Чтобы отфильтровать заказы по нашему сегменту, выберем его в списке FilterBySegments():

параметры — копия.png

Снимок экрана 2021-02-01 в 18.51.56.png

С помощью функции Take() отбираем нужное количество заказов. Например, ставим Take(1), чтобы обратиться к последнему заказу.

4. Выводим данные по самим заказам, например, стоимость, дату или дополнительные поля.

Так как параметр Recipient.Orders.FilterBySegment("").Take() является коллекцией, чтобы обратиться к каждому элементу используем цикл for...end for.

Вёрстка:

@{for order in Recipient.Orders.FilterBySegment("Zakazy").Take(1)}
Идентификатор - ${order.IDs.VneshniyID}       
Фактическая стоимость - ${order.TotalAmount}
Стоимость (сумма каждой линии чека + стоимость доставки) - ${order.BaseAmount}
Дата и время первого действия -  ${order.DateTime}
@{end for}

5. Выводим данные по позициям заказа

Позиции заказа — коллекция, поэтому для её вывода нужен свой цикл for...end for.
Данные по позиции берутся те, что переданы в операции/импорте по созданию заказа. Они спрятаны в коллекции items.
Данные по продукту — те, что переданы в фиде и записаны у продукта в проекте. Они спрятаны в параметре items->product.

Цена позиции и цена продукта могут отличаться. Например, цена на продукт могла повыситься уже после продажи. Или когда в заказе применены скидки, которые изменили цену товара.

Вёрстка:

@{for order in Recipient.Orders.FilterBySegment("Zakazi").Take(1)}
   @{for item in order.Items}
      ${item.BasePrice} - цена позиции
      ${Item.DiscountAmount} - фактическая цена минус цена позиции
      ${item.Price} - фактическая цена 

      ${item.Product.Price} - цена продукта на проекте
      ${item.Product.Name} - название продукта
   @{end for}
@{end for}

Как вывести количество и сумму всех заказов

Для этой задачи не нужен сегмент. Используем параметры:

  • Recipient.Orders.Count — количество всех заказов
  • Recipient.Orders.TotalPriceSum — сумма оплаты по заказам (фактическая стоимость) всех заказов, кроме отменённых
Сегментация клиентов — клиентская база на основе каких-либо признаков: гендера, количества покупок, суммы потраченных денег.