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

---

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

!!!contrast API reference
[:icon-terminal: POST /event](https://openapi-v2.gravityfield.ai/store-event-14003491e0)
!!!

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

Передавайте вместе с событием актуальный `ctx`, чтобы кампания могла учитывать текущую страницу, экран или текущие условия запроса. Подробнее: [Контекст](../context.md).

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

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

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

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

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

=== Пример запроса:
```jsx
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"
      }
    }
  ]
}'
```
===

=== Пример ответа с активированной кампанией:
```json
{
  "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`](./choose.md).

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

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

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

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

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