# Создание сегментов по событиям

**Сегментация на основе событий** позволяет таргетировать пользователей на основе их фактического поведения и действий в вашем приложении или на сайте. Это позволяет создавать высоко персонализированные и эффективные кампании, фокусируясь на моделях вовлеченности пользователей.

## Создание сегментов по событиям

Чтобы создать сегмент по событиям:

1. Нажмите **Событие** в разделе **Добавить фильтр по:**.

![Интерфейс, показывающий раздел «Добавить фильтр по:» с выделенной опцией «Событие»](/segmentation-segments-by-events-1.webp)

2. Выберите событие из выпадающего списка.

![Выпадающий список с доступными событиями для фильтрации сегмента](/segmentation-segments-by-events-2.webp)

3. Укажите условия для выбранного события: количество раз, когда оно произошло, и временной интервал.

> При указании временного интервала для вашего сегмента вы можете выбрать одну из двух категорий: **Относительные даты** и **Конкретные даты**.

<span id="relative-dates" />

##### Относительные даты

Используйте эти опции для динамически обновляемых временных окон на основе текущей даты:

|                     |                                                           |
|-----------------------------|-------------------------------------------------------------------------|
| **за последние N дней**  | Включает события, произошедшие за последние N дней                     |
| **ровно N дней назад**      | Таргетирует пользователей, которые вызвали событие ровно N дней назад                  |
| **N или более дней назад**      | Включает пользователей, которые вызвали событие не менее N дней назад                |
| **от N до M дней назад**| Определяет диапазон дней до сегодняшнего дня                                     |
| **через N — M дней**| Определяет диапазон от N до M дней от сегодняшнего дня, где 0 означает сегодня. И N, и M включаются в диапазон |


<img src="/segmentation-segments-21.webp" alt="Пример настройки фильтров сегмента по возникновению события и критериям относительной даты"/>

<span id="specific-dates" />

##### Конкретные даты

Используйте эти опции для определения фиксированных фильтров на основе календаря:

|                    |                                                                     |
|-------------------------------|-----------------------------------------------------------------------------------|
| **в конкретную дату**        | Включает пользователей, которые вызвали событие в выбранную календарную дату                |
| **в конкретную дату или позже** | Включает пользователей, которые вызвали событие начиная с выбранной даты и далее      |
| **в конкретную дату или раньше**| Включает пользователей, которые вызвали событие до выбранной даты включительно       |
| **между датами**             | Включает пользователей, которые вызвали событие между двумя конкретными календарными датами        |

<img src="/segmentation-segments-20.webp" alt="Интерфейс для сегментации пользователей по возникновению события и указания критериев временного интервала события"/>

4. (Опционально) Нажмите **+ Атрибут**, чтобы сузить условие до конкретного атрибута события. Выберите атрибут из выпадающего списка, выберите оператор и укажите значение. Начните вводить текст для поиска предлагаемых значений на основе ранее записанных данных.

<Aside type="tip">
Для пользовательских событий добавляйте атрибуты при [создании события](/ru/product/audience-data-and-segmentation/events/custom-events/#creating-custom-events). Типы атрибутов перечислены в разделе [Понимание событий](/ru/product/audience-data-and-segmentation/events/#2-set-attributes). События по умолчанию уже включают свои атрибуты. См. [События по умолчанию](/ru/product/audience-data-and-segmentation/events/default-events/).

Для событий [**PW_EmailSubscribed**](/ru/product/audience-data-and-segmentation/events/default-events/#pw_emailsubscribed) / [**PW_EmailUnsubscribed**](/ru/product/audience-data-and-segmentation/events/default-events/#pw_emailunsubscribed) в выпадающем списке значений атрибута **categories** отображаются фактические категории email вашего аккаунта вместо необработанных записанных значений, если включен [центр предпочтений](/ru/product/messaging-channels/emails/email-preferences/).
</Aside>


<img src="/segmentation-segments-by-events-4.webp" alt="Условие атрибута события, показывающее имя атрибута, оператор и значение с подсказками автозаполнения"/>

Полный список доступных операторов см. в разделе [операторы атрибутов событий по типам](#event-attribute-operators-by-type).

5. (Необязательно) Нажмите **+ Сумма**, если нужна сумма по подходящим событиям (например, общие траты), а не ограничение для одного события.

Выберите атрибут типа **целое число** или **десятичное (цена)**, оператор и пороговое значение. **+ Сумма** появляется, только если у события есть хотя бы один атрибут типа «целое число» или «десятичное (цена)». См. [операторы для сумм](#operators-for-sums).

Пример: событие `Purchase` не менее одного раза за последние 90 дней, где сумма `amount` больше или равна `100`, таргетирует пользователей, потративших 100 или больше за этот период — одной покупкой или несколькими.

<img src="/segmentation-segments-by-events-5.webp" alt="Событие Purchase не менее 1 раза за последние 90 дней с выделенной суммой amount больше или равно 100"/>

Фильтры по атрибутам того же события продолжают действовать: в сумме учитываются только события, которые им соответствуют (например, общий `amount`, где `category равно "shoes"`). Можно добавить несколько сумм — по одному и тому же или по разным атрибутам. Пользователь должен пройти каждую добавленную сумму.

<span id="how-a-sum-is-calculated" />

<Aside type="note" title="Как рассчитываются суммы?">

- **Какие события учитываются:** в сумму входят только события, которые уже соответствуют частоте, временному интервалу и фильтрам по атрибутам этого условия.
- **Отсутствующие значения:** если у подходящего события нет значения суммируемого атрибута, оно считается как `0`.
- **Возвраты:** отрицательные значения вычитаются. Фиксируйте возврат тем же событием с отрицательной суммой, чтобы итог отражал чистые траты.
- **Нет подходящих событий:** если частота не **ни разу**, пользователи без подходящих событий в заданном интервале сумму не проходят. Например, сумма `amount` меньше или равна `0` не включает пользователей, которые никогда не покупали. Чтобы таргетировать тех, кто не покупал, установите для события **ни разу** без суммы.
- **«Ни разу» с суммой:** если частота **ни разу**, в сегмент входят все пользователи, кроме тех, чьи подходящие события достигают порога суммы. Например, `Purchase` **ни разу** за последние 90 дней с суммой `amount` больше или равной `100` включает пользователей, потративших меньше 100 за этот период, и пользователей без покупок.
- **Хранение данных:** по умолчанию Pushwoosh хранит данные событий один год, поэтому сумма не может охватывать более длительный период или показывать траты за все время.

</Aside>

6. Если вы устанавливаете несколько событий в качестве условия сегмента, выберите оператор, который вы хотите использовать (**И**/**ИЛИ**).

<video src="/segmentation-segments-5.webm" title="Настройка фильтра сегмента по событиям, показывающая выбор события и условия временного интервала" autoplay loop muted playsinline />

7. Под группами фильтров включите опцию **Включить все устройства пользователя**, чтобы таргетировать пользователя на всех его устройствах, а не только на том, которое соответствует условию сегмента. Это гарантирует, что он получит ваши сообщения на каждой используемой им платформе.

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

Этот же флажок появляется в отключенном состоянии на странице сведений о сегменте, доступной только для чтения — он отражает настройку, с которой был создан сегмент, и не может быть изменен там.

<img src="/segmentation-segments-16.webp" alt="Флажок 'Включить все устройства пользователя' для кросс-платформенного таргетинга"/> 

<span id="event-attribute-operators-by-type" />

## Операторы атрибутов событий по типам

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

<Tabs>
<TabItem label="Строка">

В колонке **seglang** — токен оператора, который конструктор показывает рядом с названием и который используется в [языке сегментации](/ru/developer/api-reference/segmentation-filters-api/segmentation-language/). Колонка **Пример** показывает, как условие читается в конструкторе, а не синтаксис seglang.

| Оператор    <div style="width:180px"></div> | seglang | Описание    <div style="width:250px"></div> | Пример |
| --- | --- | --- | --- |
| **равно** | `eq` | Значение атрибута равно указанному значению | `button_name равно "checkout"` |
| **не равно** | `noteq` | Значение атрибута не равно указанному значению | `url не равно "/cart"` |
| **начинается с** | `startswith` | Значение атрибута начинается с указанной строки | `url начинается с "https://example.com"` |
| **заканчивается на** | `endswith` | Значение атрибута заканчивается указанной строкой | `url заканчивается на ".html"` |
| **содержит** | `contains` | Значение атрибута содержит указанную строку | `url содержит "/products/"` |
| **один из** | `in` | Значение атрибута совпадает с любым значением из предоставленного списка | `button_name один из ["submit", "cancel"]` |
| **ни один из** | `notin` | Значение атрибута не совпадает ни с одним значением из предоставленного списка | `category ни один из ["spam", "test"]` |
| **не задано** | `notset` | Для атрибута не было записано никакого значения | `coupon_code не задано` |
| **задано (любое)** | `any` | Атрибут имеет любое записанное значение | `referrer задано (любое)` |

</TabItem>
<TabItem label="Целое число">

| Оператор    <div style="width:180px"></div> | seglang | Описание    <div style="width:250px"></div> | Пример |
| --- | --- | --- | --- |
| **равно** | `eq` | Значение атрибута равно указанному числу | `level_number равно 5` |
| **не равно** | `noteq` | Значение атрибута не равно указанному числу | `score не равно 0` |
| **больше или равно** | `gte` | Значение атрибута больше или равно указанному числу | `points_earned больше или равно 100` |
| **меньше или равно** | `lte` | Значение атрибута меньше или равно указанному числу | `attempts меньше или равно 3` |
| **в диапазоне** | `between` | Значение атрибута находится в указанном диапазоне (включительно) | `level_number в диапазоне от 10 до 20` |
| **один из** | `in` | Значение атрибута совпадает с любым значением из списка | `level_number один из [5, 10, 15]` |
| **ни один из** | `notin` | Значение атрибута не совпадает ни с одним значением из списка | `attempts ни один из [0, 1]` |
| **не задано** | `notset` | Для атрибута не было записано никакого значения | `score не задано` |
| **задано (любое)** | `any` | Атрибут имеет любое записанное значение | `level_number задано (любое)` |

</TabItem>
<TabItem label="Логический">

| Оператор    <div style="width:180px"></div> | seglang | Описание    <div style="width:250px"></div> | Пример |
| --- | --- | --- | --- |
| **да** | `eq true` | Значение атрибута истинно (true) | `enabled да` |
| **нет** | `eq false` | Значение атрибута ложно (false) | `is_trial нет` |
| **не задано** | `notset` | Для атрибута не было записано никакого значения | `enabled не задано` |
| **задано (любое)** | `any` | Атрибут имеет любое записанное значение (true или false) | `is_trial задано (любое)` |

</TabItem>
<TabItem label="Десятичное (цена)">

Используйте этот тип для денежных значений с десятичными знаками. В Control Panel он отображается как **десятичное (цена)** при создании или редактировании атрибута события.

| Оператор    <div style="width:180px"></div> | seglang | Описание    <div style="width:250px"></div> | Пример |
| --- | --- | --- | --- |
| **равно** | `eq` | Значение атрибута равно указанной цене | `total_price равно 9.99` |
| **не равно** | `noteq` | Значение атрибута не равно указанной цене | `total_price не равно 0` |
| **больше или равно** | `gte` | Значение атрибута больше или равно указанной цене | `total_price больше или равно 50.00` |
| **меньше или равно** | `lte` | Значение атрибута меньше или равно указанной цене | `total_price меньше или равно 100.00` |
| **в диапазоне** | `between` | Значение атрибута находится в указанном ценовом диапазоне (включительно) | `total_price в диапазоне от 10.00 до 50.00` |
| **один из** | `in` | Значение атрибута совпадает с любым значением из списка | `total_price один из [9.99, 14.99, 19.99]` |
| **ни один из** | `notin` | Значение атрибута не совпадает ни с одним значением из списка | `total_price ни один из [0, 5]` |
| **не задано** | `notset` | Для атрибута не было записано никакого значения | `total_price не задано` |
| **задано (любое)** | `any` | Атрибут имеет любое записанное значение | `total_price задано (любое)` |

</TabItem>
<TabItem label="Список">

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

| Оператор    <div style="width:180px"></div> | seglang | Описание    <div style="width:250px"></div> | Пример |
| --- | --- | --- | --- |
| **один из** | `in` | Атрибут содержит хотя бы одно из указанных значений | `product_ids один из ["prod-123", "prod-456"]` |
| **ни один из** | `notin` | Атрибут не содержит ни одного из указанных значений | `product_ids ни один из ["prod-789"]` |
| **не задано** | `notset` | Для атрибута не было записано никакого значения | `product_ids не задано` |
| **задано (любое)** | `any` | Атрибут имеет любое записанное значение | `product_ids задано (любое)` |

</TabItem>
<TabItem label="Дата">

Атрибуты типа "Дата" поддерживают те же сравнения по [относительным](#relative-dates) и [конкретным датам](#specific-dates), что и для временного интервала самого события. 

</TabItem>
</Tabs>

<span id="operators-for-sums" />

## Операторы для сумм

Условие суммы сравнивает итог по атрибуту среди подходящих событий, поэтому поддерживает меньше операторов, чем условие по атрибуту.

| Оператор    <div style="width:180px"></div> | seglang | Описание    <div style="width:250px"></div> | Пример |
| --- | --- | --- | --- |
| **равно** | `eq` | Итог равен указанному числу | `total_price равно 100` |
| **не равно** | `noteq` | Итог не равен указанному числу | `total_price не равно 0` |
| **больше или равно** | `gte` | Итог больше или равен указанному числу | `total_price больше или равно 100` |
| **меньше или равно** | `lte` | Итог меньше или равен указанному числу | `total_price меньше или равно 500` |
| **в диапазоне** | `between` | Итог находится в указанном диапазоне (включительно) | `total_price в диапазоне от 100 до 500` |

<Aside type="tip">
Суммы сохраняют знак каждого значения. Чтобы учитывать возвраты, фиксируйте их тем же событием с отрицательной суммой — тогда итог отразит чистую потраченную сумму.
</Aside>

## Примеры сегментации на основе событий

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

##### Частые покупатели

**Цель:** Таргетинг на высоко вовлеченных пользователей, совершивших несколько покупок за последнее время.

**Как настроить:**
- **Событие:** `Purchase_made`
- **Условие:** не менее
- **Раз:** `3`
- **Период:** за последние N дней
- **Значение периода:** `30`

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


##### Крупная разовая покупка

**Цель:** Таргетинг на пользователей, совершивших крупную покупку, независимо от того, как часто они покупают.

**Как настроить:**
- **Событие:** `Purchase_made`
- **Условие:** не менее
- **Раз:** `1`
- **Период:** за последние N дней
- **Значение периода:** `30`
- **Атрибут:** `total_price`
- **Оператор:** больше или равно
- **Значение атрибута:** `50`

**Пример использования:** Приглашайте крупных покупателей в программу лояльности или VIP-программу сразу после совершения соответствующей покупки.

##### Общие траты за период

**Цель:** Таргетинг на пользователей, чьи покупки в сумме достигают порога трат, даже если ни одна отдельная покупка его не достигает.

**Как настроить:**
- **Событие:** `Purchase_made`
- **Условие:** не менее
- **Раз:** `1`
- **Период:** за последние N дней
- **Значение периода:** `90`
- **Сумма:** `total_price`
- **Оператор:** больше или равно
- **Значение суммы:** `200`

**Пример использования:** Переводите клиентов на более высокий уровень лояльности, когда их траты за последние 90 дней достигают порога.

##### Возвраты превышают покупки

**Цель:** Таргетинг на пользователей, которым за период вернули больше, чем они потратили. Работает, когда возвраты фиксируются тем же событием с отрицательной суммой.

**Как настроить:**
- **Событие:** `Purchase_made`
- **Условие:** не менее
- **Раз:** `1`
- **Период:** за последние N дней
- **Значение периода:** `90`
- **Сумма:** `total_price`
- **Оператор:** меньше или равно
- **Значение суммы:** `-1`

**Пример использования:** Направляйте этих пользователей в поток поддержки или возврата вместо рекламных кампаний.

##### Просмотр товаров без покупки

**Цель:** Выявление пользователей, проявивших интерес, но не совершивших конверсию.

**Как настроить:**
- **Событие 1:** `Product_Viewed`
   - **Условие:** не менее
   - **Раз:** `1`
   - **Период:** за последние N дней
   - **Значение периода:** `7`
- **Событие 2:** `Purchase_made`
   - **Условие:** ни разу
   - **Период:** за последние N дней
   - **Значение периода:** `7`
- **Оператор:** И

**Пример использования:** Отправляйте напоминания, специальные предложения или персонализированные сообщения пользователям, которые просматривали товары, но еще не совершили покупку.

##### Пользователи, вовлеченные во время кампании

**Цель:** Таргетинг на пользователей, участвовавших в определенный промо-период.

**Как настроить:**
- **Событие:** `Promotion_Click`
- **Условие:** не менее
- **Раз:** `1`
- **Период:** между датами
- **Значение периода:** `"2024-01-01"` и `"2024-01-31"`

**Пример использования:** Свяжитесь с пользователями, которые взаимодействовали с прошлой кампанией, чтобы продвинуть связанное предложение или собрать отзывы.

##### Ценные действия с течением времени

**Цель:** Выявление пользователей, которые совершили ценное событие определенное количество раз в заданном диапазоне дат.

**Как настроить:**
- **Событие:** `Subscription_Renewal`
- **Условие:** не менее
- **Раз:** `2`
- **Период:** между датами
- **Значение периода:** `"2024-01-01"` и `"2024-12-31"`

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

## Советы по сегментации на основе событий

- Используйте [относительные даты](#relative-dates) для текущих кампаний, которые должны оставаться актуальными в соответствии с текущей активностью пользователей.
- Сужайте условие события с помощью [фильтра по атрибутам события](#event-attribute-operators-by-type) (например, сумма покупки, категория товара), а не полагайтесь только на сам факт возникновения события.
- Комбинируйте фильтры событий с другими критериями, такими как [теги](/ru/product/audience-data-and-segmentation/segmentation/create-segments/by-tags/) (например, демографические данные пользователя, статус подписки) или [существующие сегменты](/ru/product/audience-data-and-segmentation/segmentation/create-segments/by-existing-segments/) для более точного таргетинга. Например, вы можете фильтровать пользователей как по возникновению события, так и по свойствам пользователя, хранящимся в тегах, чтобы еще больше адаптировать ваши сообщения.
- Периодически пересматривайте и обновляйте фильтры сегментов, чтобы адаптироваться к меняющемуся поведению пользователей или бизнес-целям.