Передача заказов API-ресурсом Generate event
Для передачи данных о заказе используется ресурс Add orders, который имеет ряд ограничений:
- фиксированное число полей, регламентированных спецификацией;
- нет возможности добавлять пользовательские поля;
- содержимое заказов нельзя использовать для построения сегментов.
Эти ограничения отсутствуют в способе управления заказами при помощи метода Generate event на основе событий. Этот метод можно использовать вместо метода Add orders, или в дополнение к нему.
Важно
Заказ передаваемый при помощи Generate event в ответ не возвращает идентификатор созданного заказа - orderId. Чтобы получить его, создайте заказ при помощи Add orders, после чего дополняйте и обновляйте статус заказа при помощи Generate event.
Использование метода Generate event для передачи заказов
Используя метод Generate event для передачи событий, вы можете:
Передавать больше данных, чем в методе Add orders, используя дополнительные поля.
Подключать сегментацию по событиям и их параметрам. Например, отсортировать клиентов, которые покупали определенный товар в течение недели. Подробнее о таких возможностях читайте в статье Как использовать сегментацию по событиям.
Расширять/получать RFM-сегментацию по заказам без дополнительного подключения Add orders.
Важно
Чтобы событие сохранилось с привязкой к контакту, необходимо знать, какой параметр в событии содержит идентификатор, по которому можно найти контакт. А также какое именно поле контакта используется в качестве идентификатора.
Если в событии не задан идентификатор контакта, система по умолчанию ищет следующие названия параметров события в порядке, указанном на вкладке “События” в настройках вашего аккаунта. На этой же вкладке вы можете задать кастомный параметр для привязки события к контакту.
Прислать заказ Generate event можно только для уже существующего контакта у вас в базе. Если нужно передать заказ для нового клиента, необходимо предварительно импортировать этот контакт в систему используя методы:
Для отправки события по заказу нужно указать необходимый тип события (создание или обновление заказа) из указанных в таблице.
Тип события | Описание обработки |
orderCreated | Создает заказ с одним из статусов, указанном в массиве: INITIALIZED, IN_PROGRESS, DELIVERED, CANCELLED, ABANDONED_SHOPPING_CART. |
orderUpdated | Обновляет заказ. |
orderDelivered | Изменяет статус заказа на DELIVERED. |
orderCancelled | Изменяет статус заказа на CANCELLED. |
Примеры запроса:
- Массив без экранирования
"params": [ { "name": "array", "value": [{"field1": "value1"}] } ]
JSON
- Массив с экранированием
"params": [ { "name": "escapedArray", "value": "[{\"field1\": \"value111\"}]" } ]
JSON
- Объект без экранирования
"params": [ { "name": "object", "value": {"field2": "value2"} } ]
JSON
- Объект с экранированием
"params": [ { "name": "escapedObject", "value": "{\"field2\": \"value222\"}" } ]
JSON
- Сложный объект с вложенностью
"params": [ { "name": "complexObject", "value": {"json1": {"innerField1":"innerValue1"}} } ]
JSON
orderCreated
Для создания заказа необходимо указать названия параметров как они указаны в документации, и ввести обязательные параметры. Если какой-либо из обязательных параметров пропущен, событие игнорируется и заказ не создается.
- ${eventKey} — ключ уникальности события, передаётся в поле externalOrderId. Используется как идентификатор заказа;
- ${orderId} — ID события в системе; параметр нужен для работы сценария.
В качестве идентификатора контакта должен использоваться один из следующих параметров:
- ${externalCustomerId} — внеший ID контакта;
- ${email} — адрес электронной почты контакта;
- ${phone} — номер телефона контакта.
Чтобы подставить значения параметров в сообщения, передавайте поля с параметрами события в виде массива.
- Обязательные поля в массиве orders: externalOrderId, totalCost, status, date, externalCustomerId / email / phone.
- Обязательные поля в массиве items: (externalItemId, name, quantity, cost, url, imageUrl).
Примечание
Цена переданных в заказе товаров должна совпадать со значением totalCost (общая сумма заказа). Если клиент покупает товар со скидкой, она должна учитываться в поле items.cost для каждого товара.
Пример:
{ "eventTypeKey": "orderCreated", "keyValue": "380501234567", "params": [ { "name": "phone", "value": "380501234567" }, { "name": "externalOrderId", "value": "12345679" }, { "name": "externalCustomerId", "value": "AV13760" }, { "name": "totalCost", "value": "258.0" }, { "name": "status", "value": "INITIALIZED" }, { "name": "date", "value": "2020-05-14T10:11:00" }, { "name": "currency", "value": "UAH" }, { "name": "items", "value": [ { "externalItemId": "200600", "name": "Super Device", "category": "devices", "quantity": 1, "cost": 990, "url": "http://example.com/item/200600", "imageUrl": "http://example.com/item/200600/image.png", "description": "High quality" } ] } ] }
JSON
Важно
Чтобы событие сохранялось с привязкой к контакту, необходимо знать, какой параметр в событии содержит идентификатор, по которому можно найти контакт. Система по умолчанию ищет следующие названия параметров события без учета регистра: ContactId, Contact_id, Email, EmailAddress, UserEmail, ContactEmail, Phone, SMS, PhoneNumber, PushToken, ContactKey, Contact_key. Все значения, кроме email-адреса, сравниваются с учетом регистра.
Поле | Описание |
status | Может принимать одно из следующих значений: INITIALIZED, IN_PROGRESS, DELIVERED, CANCELLED, ABANDONED_SHOPPING_CART. |
date | Формат передачи даты YYYY-MM-ddTHH:mm:ss, в соответствии со стандартом ISO 8601. Пример: 2020-05-14T10:11:00. |
items | Товары, входящие в заказ (необязательное поле). Если данное поле используется, то необходимо указывать обязательные поля для метода orderItem. Значения items необходимо передавать json строкой. Поддерживается вложенность до второго уровня включительно. Это значит, что если в массиве items передать еще один массив или объект, он останется сериализованным (экранированным). Такие данные мы не игнорируем, но в силу того, что это будет строка, работать с ней не получится. |
orderUpdated
Обновляет заказ с указанным значением externalOrderId.
Если переданный заказ не существует, он создается.
Параметры должны быть указаны в соответствии с документацией. Если заказ создается, то применяются требования для orderCreated.
orderDelivered
Обновляет статус заказа externalOrderId на значение DELIVERED.
Если заказ не существует, он игнорируется.
Примечание
Для формирования RFM-таблицы и визуализации дохода от рассылок на вкладке "Отчеты" используются только заказы со статусом DELIVERED.
Исключения составляют заказы, полученные из мобильного SDK, — в таком случае по умолчанию в визуализации дохода учитываются статусы INITIALIZED и DELIVERED. При необходимости учет статусов INITIALIZED можно отключить – для этого обратитесь в нашу службу поддержки support@esputnik.com
orderCancelled
Обновляет статус заказа externalOrderId на значение CANCELLED.
Если заказ не существует, он игнорируется.