# 🧍 Аудитории

**Аудитория** — это группа пользователей, объединённых общими признаками: поведением, характеристиками, местоположением и т.д.  
Вы можете создавать собственные аудитории и использовать их в разных сценариях: от персонализации контента до аналитики.

---

## 💡 Зачем нужны аудитории

Аудитории помогают:

- **Персонализировать контент**  
  Показать акцию на новую коллекцию обуви тем, кто уже покупал обувь раньше.

- **Управлять рекомендациями**  
  Создать отдельный рекомендательный виджет для пользователей с повторными покупками.

- **Разбивать данные в аналитике**  
  Например, посмотреть результаты A/B-теста отдельно по мобильным и десктопным пользователям.  
  Это помогает выявить скрытые возможности персонализации — когда одна аудитория отдает предпочтение одному варианту, а другая — другому.

---

## 📊 Где найти аудитории

Все сохранённые аудитории доступны в интерфейсе **Gravity Field**, в разделе **Audiences**.

Раздел показывает:
- общее количество пользователей;
- бизнес-метрики за 7, 14 и 30 дней;
- статус использования в кампаниях персонализации.

![](./audiences_lis.png)

---

## ✨ Как создаются аудитории

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

![](./audience_create_2.png)

### Основные элементы при создании:

- **Условия сегментации**  
  Задают, каким критериям должен соответствовать пользователь, чтобы попасть в аудиторию.

- **Окно атрибуции** (`Attribution window`)  
  Определяет, **за какой период** пользователь должен выполнить условия (например, в течение недели или текущей сессии).

- **Время хранения** (`Retention`)  
  Указывает, **как долго** пользователь будет сохраняться в аудитории, даже если больше не соответствует условиям.

---

## 🔹 Объединение условий: как работает логика

При создании аудитории вы можете использовать **одно или несколько условий**. Gravity Field позволяет настраивать логику объединения на двух уровнях:

1. **Между разными условиями** — работает как `AND` (и)
2. **Внутри одного условия** — можно выбрать `AND` или `OR`

---

- **Между условиями аудитории** всегда используется логика **"и"**:  
  Пользователь должен соответствовать **всем условиям**, чтобы попасть в сегмент.

  ![](./and_example.png)

  **Пример:**
  ```
  Products purchased → at least → 1  
  Traffic source → is → social
  ```
  → Пользователь должен **купить** и **прийти из соцсетей**

---

- **Внутри одного условия** (например, `Products purchased with property`) вы можете:
  - выбрать **несколько значений одного или разных атрибутов**
  - задать тип логики: `AND` или `OR` между этими фильтрами

  ![](./price_example.png)
  → Пользователь должен купить товары по цене от 1000 до 5000
  
  ![](./o_xample.png)
  → Пользователь должен купить один из двух товаров
---

## 🧍‍♂️ Характеристики пользователя  
Группа условий, связанных с принадлежностью пользователя к аудиториям и персональными свойствами.

### 🎯 Audience

#### Что делает  
Позволяет включить или исключить пользователей, которые уже находятся в одной из созданных аудиторий.

#### Доступные поля

- **Тип сравнения**  
  `Тип: select` — выпадающий список  
  **Значения:**  
  - `belongs` — пользователь входит в выбранную аудиторию  
  - `not belongs` — пользователь не входит в выбранную аудиторию

- **Аудитория**  
  `Тип: select`  
  **Значения:**  
  - все существующие аудитории, отображаются по названию

#### Пример  
```
Audience → belongs → New users
```

### 🔔 Push Permission

**Что делает:**  
Позволяет таргетировать пользователей по статусу разрешения на получение push-уведомлений.  
Может использоваться для предложения подписки или исключения тех, кто уже подписан.
> Доступно **только при SDK-интеграции в мобильных приложениях**.

#### Доступные поля
- **Тип сравнения**  
  `Тип: select`  
  **Значения:**  
  - `is` — равно  
  - `is not` — не равно

- **Значение**  
  `Тип: select`  
  **Значения:**  
  - `provisional` — временное разрешение (только iOS)  
  - `granted` — разрешено  
  - `unknown` — неизвестно  
  - `denied` — отказано

**Пример:**
Показать кампанию только пользователям, у которых статус разрешения `is unknown`.

### 📱 Tracking Status

**Что делает**  
Позволяет таргетировать пользователей по статусу разрешения трекинга на iOS (App Tracking Transparency).  
Подходит для сценариев, где нужно предложить разрешить отслеживание или исключить отказавших.
> Доступно **только при SDK-интеграции в мобильных приложениях**.

#### Доступные поля

- **Тип сравнения**  
  `Тип: select`  
  **Значения:**  
  - `is` — равно  
  - `is not` — не равно

- **Значение**  
  `Тип: select`  
  **Значения:**  
  - `notDetermined` — пользователь не получал запрос  
  - `restricted` — трекинг ограничен на уровне ОС  
  - `denied` — пользователь отказал  
  - `authorized` — пользователь разрешил  
  - `notSupported` — устройство не поддерживает ATT (Android или iOS < 14)

## 🧠 Поведение  
Условия, основанные на действиях пользователя: просмотры, события, добавления в корзину, покупки и посещения страниц.  
Позволяют точно таргетировать на основе интересов и активности.

### 💡 User Affinity

#### Что делает  
Позволяет сегментировать пользователей по их **предпочтениям к атрибутам товаров**: категориям, брендам, цветам и т.д.  
Система анализирует действия пользователя и формирует профиль интересов.

#### Доступные поля

- **Атрибут товара**  
  `Тип: select` — выбор из характеристик товаров  
  **Значения:**  
  - `category`, `brand`, `color` и др.  
  > Эти значения берутся из **товарного фида**. Чтобы добавить или изменить доступные атрибуты, обратитесь к менеджеру по персонализации.

- **Значение атрибута**  
  `Тип: select` — конкретное значение выбранного атрибута  
  **Примеры:** `Nike`, `алкоголь`, `черный`

- **Уровень интереса (Affinity Score)**  
  `Тип: select`  
  **Значения:**  
  - `high` — высокая склонность  
  - `medium` — средняя  
  - `low` — низкая

#### Пример  
```
User affinity → category → алкоголь → high
```

#### Ограничения  
- Работает **только в пределах текущей сессии**
- Поддерживаются только **дискретные** атрибуты (не числовые, не уникальные)

### 🌐 Traffic Source

#### Что делает  
Позволяет сегментировать пользователей по источнику трафика — откуда пришёл пользователь на сайт.

#### Доступные поля

- **Тип сравнения**  
  `Тип: select`  
  **Значения:**  
  - `is` — источник соответствует выбранному  
  - `is not` — источник НЕ соответствует

- **Источник трафика**  
  `Тип: select`  
  **Значения:**  
  - `direct`  
  - `paid search`  
  - `referral`  
  - `search`  
  - `social`  

> Источник определяется автоматически через скрипт (при web-интеграции) или по полю `context.traffic.source` (при API-интеграции).

#### Пример  
```
Traffic source → is → direct
```

---

### 📄 Number of Page Views

#### Что делает  
Фильтрует пользователей по количеству просмотренных страниц за выбранный атрибуционный период.

#### Доступные поля

- **Тип сравнения**  
  `Тип: select`  
  **Значения:**  
  - `exactly`, `is not`, `more than`, `at least`, `less than`, `at most`

- **Значение**  
  `Тип: input` — количество просмотренных страниц, например: `3`, `10`

#### Пример  
```
Number of page views → more than → 5
```

---

### 🆕 New User

#### Что делает  
Позволяет отфильтровать новых или вернувшихся пользователей.

#### Доступные поля

- **Новизна пользователя**  
  `Тип: select`  
  **Значения:**  
  - `yes` — пользователь считается новым  
  - `no` — пользователь не новый

> Новизна пользователя определяется системой автоматически на основе cookies или ID пользователя.

#### Пример  
```
New user → yes
```

---

### ⚡️ Event Trigger

#### Что делает  
Фильтрует пользователей, которые совершили определённое событие (например, добавили товар в корзину).

#### Доступные поля

- **Событие**  
  `Тип: select`  
  **Значения:**  
  - любые события, отправленные в систему через JS SDK или API, например: `Add to cart`, `Apply filters`

- **Тип сравнения**  
  `Тип: select`  
  **Значения:**  
  - `exactly`, `is not`, `more than`, `at least`, `less than`, `at most`

- **Количество**  
  `Тип: input` — количество событий, например: `1`, `5`

#### Пример  
```
Event trigger → Add to cart → at least → 5
```

### ⚙️ Event Trigger by Property

#### Что делает  
Позволяет сегментировать пользователей по событиям, содержащим определённые свойства.  
Например, "Добавили в корзину товар из категории X".

#### Доступные поля

- **Событие**  
  `Тип: select`  
  **Значения:**  
  - любое переданное событие (например: `Add to cart`)

- **Имя свойства**  
  `Тип: input`  
  **Пример:** `category`

- **Оператор для свойства**  
  `Тип: select`  
  **Значения:**  
  - `is`, `is not`, `contains`, `does not contain`, `more than`, `less than`, `at least`, `at most`

- **Значение свойства**  
  `Тип: input` — текст или число

- **Оператор по количеству**  
  `Тип: select`
  **Значения:**  
  - `exactly`, `is not`, `more than`, `at least`, `less than`, `at most`

- **Количество**  
  `Тип: input` — количество событий, например `3`

#### Пример  
```
Event trigger → Add to cart → category → is not → алкоголь → less than → 10
```

---

### 🌐 URL Visit

#### Что делает  
Позволяет выбрать пользователей, которые посещали определённые URL.

#### Доступные поля

- **Тип сравнения по URL**  
  `Тип: select`  
  **Значения:**  
  - `is`, `is not`, `contains`, `does not contain`, `regexp`

- **URL**  
  `Тип: input` — ввод адреса вручную

- **Ignore URL parameters**  
  `Тип: checkbox` — если включено, query-параметры игнорируются

- **Тип сравнения по количеству визитов**  
  `Тип: select`  
  **Значения:**  
  - `exactly`, `is not`, `more than`, `at least`, `less than`, `at most`

- **Количество**  
  `Тип: input` — количество посещений, например `5`

#### Пример  
```
URL visit → is → www.gravityfield.ru → ignore params:true → at least → 5
```

---

### 🛒 Products Added to Cart

#### Что делает  
Сегментирует пользователей, которые добавили товары в корзину.  
Можно указать конкретные характеристики добавленных товаров.

#### Доступные поля

- **Тип фильтрации**  
  `Тип: select`  
  **Значения:**  
  - `any product` — любые товары  
  - `with property` — с указанным атрибутом  
  - `without property` — без атрибута

  **Значения:**  
  - `category`, `brand`, `color` и др.  
  > Эти значения берутся из **товарного фида**. Чтобы добавить или изменить доступные атрибуты, обратитесь к менеджеру по персонализации.

- **Значение атрибута**  
  `Тип: select` — значение выбранного атрибута  
  **Примеры:** `Nike`, `Матрасы`

- **Тип сравнения по количеству**  
  `Тип: select`  
  **Значения:** `exactly`, `is not`, `more than`, `at least`, `less than`, `at most`

- **Количество**  
  `Тип: input` — число, например `5`

> ⚠️ Атрибуты доступны только из фида. Их список настраивается вручную через поддержку.

#### Примеры  
```
Products added → with property → category → Матрасы → at least → 5  
Products added → any product → at least → 5
```

---

### 👁 Products Viewed

#### Что делает  
Позволяет выбрать пользователей, которые просматривали определённые товары.  
Можно уточнить характеристики товаров, например, категорию или бренд.

#### Доступные поля

- **Тип фильтрации**  
  `Тип: select`  
  **Значения:**  
  - `any product`  
  - `with property`  
  - `without property`

  **Значения:**  
  - `category`, `brand`, `color` и др.  
  > Эти значения берутся из **товарного фида**. Чтобы добавить или изменить доступные атрибуты, обратитесь к менеджеру по персонализации.

- **Значение атрибута**  
  `Тип: select` — значение выбранного атрибута  
  **Примеры:** `Nike`, `Матрасы`

- **Тип сравнения по количеству**  
  `Тип: select`  
  **Значения:** `exactly`, `is not`, `more than`, `at least`, `less than`, `at most`

- **Количество**  
  `Тип: input` — число, например: `5`

#### Примеры  
```
Products viewed → with property → category → Матрасы → at least → 5  
Products viewed → any product → at least → 5
```

---

### 💳 Products Purchased

#### Что делает  
Позволяет сегментировать пользователей, которые совершили покупки.  
Поддерживает фильтрацию по характеристикам купленных товаров.

#### Доступные поля

- **Тип фильтрации**  
  `Тип: select`  
  **Значения:** `any product`, `with property`, `without property`

  **Значения:**  
  - `category`, `brand`, `color` и др.  
  > Эти значения берутся из **товарного фида**. Чтобы добавить или изменить доступные атрибуты, обратитесь к менеджеру по персонализации.

- **Значение атрибута**  
  `Тип: select` — значение выбранного атрибута  
  **Примеры:** `Nike`, `Матрасы`

- **Тип сравнения по количеству**  
  `Тип: select`  
  **Значения:** `exactly`, `is not`, `more than`, `at least`, `less than`, `at most`

- **Количество**  
  `Тип: input` — число, например: `5`

#### Примеры  
```
Products purchased → with property → category → Матрасы → at least → 5  
Products purchased → any product → at least → 5
```

---

### 🧭 Category Page Visit

#### Что делает  
Фильтрует пользователей, которые посещали страницы конкретных товарных категорий.

#### Доступные поля

- **Тип категории**  
  `Тип: select`  
  **Значения:** `any category`, `of category`

- **Значение категории**  
  `Тип: select` — значения берутся из фида

- **Тип сравнения по количеству**  
  `Тип: select`  
  **Значения:** `exactly`, `is not`, `more than`, `at least`, `less than`, `at most`

- **Количество**  
  `Тип: input` — число, например `3`

#### Примеры  
```
Category page visit → of category → Матрасы → at least → 5  
Category page visit → any category → at least → 5
```

---

### 🔎 Search Page Visit

#### Что делает  
Выбирает пользователей, которые посещали страницу поиска на сайте.

#### Доступные поля

- **Тип сравнения по количеству**  
  `Тип: select`  
  **Значения:** `exactly`, `is not`, `more than`, `at least`, `less than`, `at most`

- **Количество**  
  `Тип: input` — число, например `3`

#### Пример  
```
Search page visit → at least → 5
```

---

### 🏠 Homepage Visit

#### Что делает  
Позволяет выбрать пользователей, которые посещали главную страницу сайта.

#### Доступные поля

- **Тип сравнения по количеству**  
  `Тип: select`  
  **Значения:** `exactly`, `is not`, `more than`, `at least`, `less than`, `at most`

- **Количество**  
  `Тип: input` — число, например `3`

#### Пример  
```
Homepage visit → at least → 5
```

---

### 🛒 Cart Page Visit

#### Что делает  
Сегментирует пользователей, посетивших страницу корзины.

#### Доступные поля

- **Тип сравнения по количеству**  
  `Тип: select`  
  **Значения:** `exactly`, `is not`, `more than`, `at least`, `less than`, `at most`

- **Количество**  
  `Тип: input` — число, например `3`

#### Пример  
```
Cart page visit → at least → 5
```

---

### 💸 Total Purchase Value

#### Что делает  
Фильтрует пользователей по общей стоимости всех их покупок за заданный период.

#### Доступные поля

- **Тип сравнения по сумме**  
  `Тип: select`  
  **Значения:** `exactly`, `is not`, `more than`, `at least`, `less than`, `at most`

- **Сумма**  
  `Тип: input` — число, например `3000`

#### Пример  
```
Total purchase value → at least → 10000
```

---

### 📊 Purchase Value

#### Что делает  
Позволяет сегментировать пользователей по статистике их покупок: сумма, среднее, медиана и др.  
Можно выбрать период: все покупки или последние N покупок.

#### Доступные поля

- **Метрика**  
  `Тип: select`  
  **Значения:** `sum`, `average`, `minimum`, `maximum`, `median`, `75th percentile`, `90th percentile`

<details>
<summary>📘 Что означает каждая метрика?</summary>

| Значение             | Описание |
|----------------------|----------|
| `sum`                | **Сумма всех покупок**. Используется для оценки общей потраченной суммы за период. <br>Пример: пользователи, потратившие более 10 000 ₽. |
| `average`            | **Средняя стоимость покупки**. Делит общую сумму на количество заказов. <br>Пример: сегмент с высоким средним чеком. |
| `minimum`            | **Минимальная сумма одной покупки**. Самая дешёвая покупка пользователя. <br>Пример: исключить пользователей с покупками менее 500 ₽. |
| `maximum`            | **Максимальная сумма одной покупки**. Самая дорогая покупка. <br>Пример: найти пользователей с крупной покупкой свыше 20 000 ₽. |
| `median`             | **Медианная стоимость покупки**. Срединное значение среди всех покупок. Устойчиво к выбросам. <br>Пример: сегмент с типичной суммой чека. |
| `75th percentile`    | **75-й перцентиль**. 75% покупок дешевле, 25% — дороже. <br>Пример: пользователи, у которых хотя бы четверть покупок дороже 5 000 ₽. |
| `90th percentile`    | **90-й перцентиль**. Только 10% покупок были дороже. <br>Пример: пользователи, у которых топ-10% покупок превышают 10 000 ₽. |

</details>

- **Диапазон**  
  `Тип: select`  
  **Значения:**  
  - `all purchases` — учитываются все покупки  
  - `last purchases` — учитываются последние N покупок

- **Количество покупок (для last purchases)**  
  `Тип: input` — число, например: `5`

- **Тип сравнения по значению**  
  `Тип: select` — `exactly`, `is not`, `more than`, `at least`, `less than`, `at most`

- **Значение**  
  `Тип: input` — сумма в условной валюте

#### Примеры  
```
Purchase value → sum → Last purchases → 5 → at least → 5000  
Purchase value → average → All purchases → at least → 5000
```

---

## 🧪 Технологии  
Сегментация по техническим параметрам устройства: браузер, тип устройства, операционная система.  

> 💡 Источник данных: при web-интеграции данные определяются автоматически скриптом. При API-интеграции — передаются через `context.device.userAgent`.

### 🧭 Browser

#### Что делает
Сегментирует по браузеру, которым пользуется посетитель.

#### Доступные поля
- `Тип: select` — оператор сравнения  
  **Значения:** `is`, `is not`
- `Тип: select` — название браузера  
  **Значения:**  
  - `Chrome`  
  - `Firefox`  
  - `Safari`  
  - `Yandex`  
  - `Edge`  
  - `Internet explorer`  
  - `Opera`  
  - `Android browser`  
  - `Samsung internet`  
  - `MIUI browser`  
  - `Other`

#### Примеры  
```
Browser → is → Chrome
```

---

### 💻 Device Category

#### Что делает
Определяет тип устройства, с которого пользователь зашёл на сайт.

#### Доступные поля
- `Тип: select` — оператор сравнения  
  **Значения:** `is`, `is not`
- `Тип: select` — тип устройства  
  **Значения:**  
  - `Desktop`  
  - `Tablet`  
  - `Mobile`

#### Примеры
```
Device category → is → Mobile
```

---

### 🖥 Operating System

#### Что делает
Сегментирует по операционной системе устройства пользователя.

#### Доступные поля
- `Тип: select` — оператор сравнения  
  **Значения:** `is`, `is not`
- `Тип: select` — название ОС  
  **Значения:**  
  - `Android`  
  - `Chrome OS`  
  - `Gaming Console`  
  - `iOS`  
  - `Mac`  
  - `GNU/Linux`  
  - `Other mobile`  
  - `Windows`  
  - `Windows mobile`  
  - `Smart TV`  
  - `Other`

#### Примеры
```
Operating system → is → iOS
```

---

## 🗺 География  
Фильтрация пользователей по месту их нахождения: страна, регион, город.  

> Определение локации происходит по IP-адресу пользователя. При API-интеграции IP передается в поле `context.device.ip`.

---

### 🌍 Country

#### Что делает
Сегментирует по стране, в которой находится пользователь.

#### Доступные поля
- `Тип: select` — оператор сравнения  
  **Значения:** `is`, `is not`
- `Тип: select` — название страны  
  **Примеры:** `Russia`, `Belarus`, `Kazakhstan`, `Armenia`

#### Примеры
```
Country → is → Russia
```

---

### 🏞 Region

#### Что делает
Сегментирует по региону (области, краю и т.п.).  
> Важно: выбранный регион **не включает** одноимённый город.

#### Доступные поля
- `Тип: select` — оператор сравнения  
  **Значения:** `is`, `is not`
- `Тип: select` — название региона  
  **Пример:** `Moscow oblast`, `Almaty`, `Leningrad oblast`

#### Примеры 
```
Region → is → Moscow oblast
```

---

### 🏙 City

#### Что делает
Сегментирует по городу.

> Важно: выбранный город **не включает** одноимённую область.

#### Доступные поля
- `Тип: select` — оператор сравнения  
  **Значения:** `is`, `is not`
- `Тип: select` — название города  
  **Пример:** `Moscow`, `Novosibirsk`, `Astana`

#### Примеры 
```
City → is → Moscow
```

## ⏱ Окно атрибуции и время хранения

Позволяет управлять двумя важными аспектами сегментации:
1. **Когда** должны произойти действия пользователя, чтобы он попал в аудиторию  
2. **Как долго** пользователь остаётся в аудитории после того, как перестал соответствовать условиям

---

### ⏳ Окно атрибуции — All conditions must be met within  
Окно атрибуции — период, в течение которого **все условия сегментации должны быть выполнены**.  
Измеряется в календарном времени или в рамках сессии.

- `Тип: select`  
  **Значения:**  
  - `current session`  
  - `one day`  
  - `one week`  
  - `two weeks`  
  - `one month`  
  - `three months`  
  - `one year`

> 💡 Для условий типа `User Affinity` доступно только значение `current session`, так как аффинитивность рассчитывается в рамках одной сессии.

#### Примеры:
- `User purchased > 5 товаров → в течение одного месяца`  
  → Выбирается "one month"  
- `Просмотрел 3 товара из категории Матрасы → за текущую сессию`  
  → Выбирается "current session"

---

### 🕒 Период хранения — Keep visitors within this Audience for  
Период хранения — сколько дней пользователь будет **оставаться в аудитории**, даже если больше не соответствует её условиям.  
Это полезно для **устойчивого таргетинга**, когда важно не терять аудиторию сразу после ухода активности.

- `Тип: input` — целое число, от `1` до `365`

#### Примеры:
- `Смотрел видео в течение одного дня → сохранить в аудитории на 30 дней`  
- `Сделал дорогую покупку один раз → оставить в сегменте на 365 дней`

## ❓ FAQ по условиям сегментации

---

### Общие вопросы

**Q: Могу ли я комбинировать несколько условий?**  
**A:** Да, вы можете задать любое количество условий, и они будут применяться одновременно. Пользователь должен соответствовать **всем условиям** внутри выбранного окна атрибуции (`All conditions must be met within`).

**Q: Что происходит, если пользователь перестал соответствовать условиям?**  
**A:** Он остаётся в аудитории в течение срока, указанного в `Keep visitors within this Audience for` (в днях). По окончании этого срока он будет исключён из аудитории.

**Q: В чём разница между “is” и “contains”?**  
**A:**  
- `is` означает **строгое соответствие** значению  
- `contains` — значение может **входить в строку** (частичное совпадение, удобно для URL)

---

### Поведение и события

**Q: Можно ли фильтровать по событиям с конкретными свойствами (например, категория товара)?**  
**A:** Да, используйте условие `Event trigger by property` — оно позволяет задать свойство события, его значение и количество повторений.

**Q: Какие события я могу использовать?**  
**A:** Все события, отправленные в платформу через JS SDK или API — например: `Add to cart`, `Apply filters`, `Purchase`.

**Q: Что такое “User Affinity” и как она работает?**  
**A:** Это система оценки интереса пользователя к товарным атрибутам. Работает только в пределах одной сессии. Используются только характеристики из фида (например, категория, бренд).

---

### Работа с товаром и фидом

**Q: Почему в фильтре нет нужного атрибута (например, “материал”)?**  
**A:** Список доступных атрибутов формируется на основе товарного фида. Чтобы его изменить, обратитесь к менеджеру по персонализации или в поддержку.

**Q: Чем отличается “Products viewed” от “URL visit”?**  
**A:**  
- `Products viewed` — это просмотры карточек товаров  
- `URL visit` — любые страницы сайта, включая промо, формы и т.д.

---

### География и устройства

**Q: Moscow и Moscow oblast — это одно и то же?**  
**A:** Нет. `Moscow` — это город, `Moscow oblast` — регион. Они не включают друг друга.

**Q: Как определяется страна / город пользователя?**  
**A:** По IP-адресу (автоматически или через поле `context.device.ip`, если используется API-интеграция).

---

### Временные настройки

**Q: Что такое “All conditions must be met within”?**  
**A:** Это окно времени, в течение которого пользователь должен выполнить все условия (например, в рамках сессии или за 1 месяц).

**Q: Как работает “Keep visitors within this Audience for”?**  
**A:** Это срок хранения пользователя в аудитории, даже если он больше не соответствует условиям. Задаётся в днях (до 365).

---

**Q: Можно ли настроить аудиторию “люди, которые купили X товаров за последние 2 недели, и не заходили последние 3 дня”?**  
**A:** Да. Скомбинируйте:  
- `Products purchased → at least → X`  
- `All conditions must be met within → two weeks`  
- И добавьте условие: `Last seen → more than → 3 days ago` (если доступно в вашей платформе).
