# События

Для сбора статистики, расчёта целей и оптимизации кампаний необходимо передавать в Gravity Field информацию о действиях пользователя.


# event: передача событий

В API V2 события передаются в массиве data[]. Дополнительные свойства события передавайте в customProps.

# Активация и таргетинг

/event не только сохраняет пользовательское событие для статистики. Ответ также может содержать кампании, подходящие под переданное событие.

Если в ответе вернулся непустой campaigns[], это означает:

  1. Для одного из переданных событий нашлась кампания.
  2. Пользователь и текущий ctx подходят под условия этой кампании.
  3. campaigns[].campaignId можно использовать в /choose, чтобы получить контент.

Если campaigns[] пустой или отсутствует, событие всё равно принято для аналитики и целей, но для текущего пользователя не нашлось кампании под это событие.

curl --request POST 
--url 'https://evs-01.gravityfield.ai/v2/event'
--header 'content-type: application/json' 
--header 'Authorization: Bearer your-api-key' 
--data '
{
  "sec": "YOUR_SECTION_ID",
  "user": {
    "uid": "665f0a000000000000000001",
    "ses": "7356efc2-6ffd-4553-bade-b9ab5d9ce141"
  },
  "ctx": {
    "type": "CART",
    "data": [],
    "location": "https://shop.ru/cart"
  },
  "device": {
    "ua": "Mozilla/5.0",
    "ip": "54.100.200.255"
  },
  "data": [
    {
      "type": "purchase-v1",
      "name": "Purchase",
      "productId": "sku-123",
      "quantity": 1,
      "value": 1990,
      "currency": "RUB",
      "uniqueTransactionId": "order-100500",
      "customProps": {
        "paymentMethod": "card"
      }
    }
  ]
}'
{
  "user": {
    "uid": "665f0a000000000000000001",
    "ses": "7356efc2-6ffd-4553-bade-b9ab5d9ce141"
  },
  "campaigns": [
    {
      "campaignId": "665f0b000000000000000001",
      "experienceId": "665f0c000000000000000001",
      "trigger": "event",
      "priority": 10,
      "delayTime": 0
    }
  ]
}

# Как использовать ответ

  1. Сохраните обновлённые user.uid и user.ses, если они пришли в ответе.
  2. Если campaigns[] пустой, дополнительных действий для показа кампании не требуется.
  3. Если campaigns[] не пустой, выберите кампанию и передайте её campaignId в /choose.

/event отвечает за запись события и список подходящих кампаний. Контент, вариация и tracking URL возвращаются только в /choose.

# Пример события логина с единым CUID

Для унификации профилей пользователя между Web, мобильными SDK и офлайн-данными рекомендуется в событии login-v1 использовать один и тот же идентификатор.

{
  "type": "login-v1",
  "name": "Login",
  "cuid": "HASHED_PHONE_STRING",
  "cuidType": "phone_hash"
}

Тот же cuid и cuidType должны использоваться в Web, мобильных SDK, API V2 и импорте офлайн-данных.