# Как настроить события

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

После надлежащего сбора эти данные можно использовать для:

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

## Типы событий

В Pushwoosh существует два типа событий:
- События по умолчанию (Default events)
- Пользовательские события (Custom events)

### События по умолчанию
События по умолчанию (Default Events) — это основные взаимодействия, которые пользователи совершают в приложениях или на веб-сайтах независимо от их отрасли или функциональности. Эти ключевые действия пользователей составляют основу коммуникации с клиентами и могут быть использованы для любого продукта и клиента на любом этапе жизненного цикла клиента.
События по умолчанию доступны "из коробки" в последних версиях SDK и не требуют дополнительной настройки, за исключением [PW_InAppPurchase](/ru/product/audience-data-and-segmentation/events/default-events#pw_inapppurchase).

Узнайте больше о [событиях по умолчанию](/ru/product/audience-data-and-segmentation/events/default-events)

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

Пользовательские события требуют реализации на вашей стороне.


## Реализация пользовательских событий

### 1. Создайте события и задайте атрибуты

Все события, отправляемые вашим приложением, должны быть сначала созданы в Pushwoosh с набором атрибутов и их типов; в противном случае Pushwoosh не сможет их распознать.

Вы можете попросить вашу маркетинговую команду создать события непосредственно в [панели управления Pushwoosh](/ru/product/audience-data-and-segmentation/events#1-create-events-in-pushwoosh-control-panel) или использовать API-метод [createEvent](/ru/developer/api-reference/events#createevent). Это включает в себя указание названия события и любых связанных данных, которые вы хотите отслеживать.

### 2. Вызовите API /postEvent

Когда в вашем приложении происходит событие, которое вы хотите отследить, вызовите API [`/postEvent`](/ru/developer/api-reference/user-centric-api#postevent), чтобы отправить это событие в Pushwoosh.

#### iOS

Вызовите [`postEvent`](/ru/developer/api-reference/user-centric-api#postevent), чтобы отправить событие в Pushwoosh:

<Tabs>
<TabItem label="Swift">
```swift
PWInAppManager.shared().postEvent("eventName", withAttributes: nil)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
[[PushNotificationManager pushManager] postEvent:@“eventName” withAttributes:@{}];
```
</TabItem>
</Tabs>

Чтобы добавить детали о событии (см. Атрибуты), используйте параметр attributes следующим образом:

<Tabs>
<TabItem label="Swift">
```swift
let attributes: [String : Any] = ["AttributedString" : "someString",
                                  "AttributeInt" : 42,
                                  "AttributeList" : [123, 456, "someString"],
                                  "AttributeBool" : true,
                                  "AttributeDate" : NSDate()]

PWInAppManager.shared().postEvent("eventName", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
NSDictionary *attributes = @{ 
  @"AttributeString" : @"someString",
  @"AttributeInt" : @(42),
  @"AttributeList" : @[ @(123), @(456), @"someString" ],
  @"AttributeBool" : @YES,
  @"AttributeDate" : [NSDate date] 
};

[[PushNotificationManager pushManager] postEvent:@“eventName” withAttributes:attributes];
```
</TabItem>
</Tabs>

#### Android

Когда в вашем Android-приложении происходит событие, используйте следующие инструкции, чтобы отправить это событие в Pushwoosh.

Вызовите [`postEvent`](/ru/developer/api-reference/user-centric-api#postevent), чтобы отправить событие в Pushwoosh:

```java
PushwooshInApp.getInstance().postEvent("eventName");
```

Чтобы добавить детали о событии (см. Атрибуты), используйте параметр attributes следующим образом:

```java
TagsBundle attributes = new TagsBundle.Builder()
				.putInt("AttributeInt", 17)
				.putString("AttributeString", "str")
				.putDate("AttributeDate", new Date())
				.putBoolean("AttributeBool", true)
				.putList("AttributeList", Arrays.asList("item1", "item2", "item3"))
				.build();

PushwooshInApp.getInstance().postEvent("eventName", attributes);
```

<Aside type="note">
Вы также можете отправлять события из [**In-App Javascript**](/ru/developer/guides/messaging-channels/inapp-with-javascript/).
</Aside>