# Como configurar eventos

**Eventos** são usados para rastrear várias ações realizadas pelos usuários no aplicativo. Os dados dos eventos são armazenados historicamente, criando uma linha do tempo do comportamento do usuário. Todas as informações contextuais sobre o evento podem ser passadas como um conjunto de atributos e seus valores.

Uma vez coletados corretamente, esses dados podem ser usados para:

* acionar mensagens baseadas em comportamento;
* modificar o fluxo de comunicação do usuário dentro de uma Customer Journey com base em seu comportamento;
* construir segmentos de usuários que realizam uma ação específica no aplicativo;
* obter insights sobre o fluxo do usuário, métricas de uso e outros dados estatísticos.

## Tipos de eventos

Existem dois tipos de eventos no Pushwoosh:
- Eventos padrão
- Eventos personalizados

### Eventos padrão
Eventos Padrão são interações básicas que os usuários realizam em aplicativos ou sites, independentemente de sua indústria ou funcionalidade. Essas ações-chave do usuário formam o núcleo da comunicação com o cliente e podem ser aproveitadas para qualquer produto e cliente em qualquer estágio do ciclo de vida do cliente.
Os Eventos Padrão estão disponíveis prontos para uso com as versões mais recentes do SDK e não exigem nenhuma configuração adicional, exceto para [PW_InAppPurchase](/pt/product/audience-data-and-segmentation/events/default-events#pw_inapppurchase).

Saiba mais sobre [Eventos Padrão](/pt/product/audience-data-and-segmentation/events/default-events)

### Eventos personalizados
Diferente dos eventos padrão, que são universais para muitos aplicativos e setores, os eventos personalizados são os eventos que você cria especificamente para o seu aplicativo. Esses eventos rastreiam ações específicas exclusivas para suas necessidades, como concluir um treino ou estender uma assinatura, e ajudam você a entender como os usuários interagem com seus recursos específicos.

Eventos Personalizados exigem que você os implemente do seu lado.


## Implementação de eventos personalizados

### 1. Crie eventos e defina atributos

Todos os eventos enviados pelo seu aplicativo devem ser criados primeiro no Pushwoosh com o conjunto de atributos e seus tipos; caso contrário, o Pushwoosh não os reconhecerá.

Você pode pedir à sua equipe de marketing para criar eventos diretamente no [Painel de Controle do Pushwoosh](/pt/product/audience-data-and-segmentation/events#1-create-events-in-pushwoosh-control-panel) ou usar o método da API [createEvent](/pt/developer/api-reference/events#createevent). Isso envolve especificar o nome do evento e quaisquer dados associados que você deseja rastrear.

### 2. Chame a API /postEvent

Quando um evento que você gostaria de rastrear ocorre em seu aplicativo, chame a API [`/postEvent`](/pt/developer/api-reference/user-centric-api#postevent) para enviar este evento ao Pushwoosh.

#### iOS

Chame o [`postEvent`](/pt/developer/api-reference/user-centric-api#postevent) para enviar um evento ao 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>

Para adicionar detalhes sobre o evento (ref. a Atributos), use o parâmetro de atributos da seguinte forma:

<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

Quando um evento ocorre em seu aplicativo Android, use as seguintes instruções para enviar este evento ao Pushwoosh.

Chame o [`postEvent`](/pt/developer/api-reference/user-centric-api#postevent) para enviar um evento ao Pushwoosh:

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

Para adicionar detalhes sobre o evento (ref. a Atributos), use o parâmetro de atributos da seguinte forma:

```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">
Você também pode enviar eventos a partir de [**Javascript In-App**](/pt/developer/guides/messaging-channels/inapp-with-javascript/).
</Aside>