# Exemplos de eventos personalizados

Abaixo, você encontrará uma série de eventos in-app recomendados para diferentes categorias de aplicativos.

Para implementar qualquer um destes ou outros eventos:

* [crie um Evento](/pt/product/audience-data-and-segmentation/events/#1-create-events-in-pushwoosh-control-panel) no seu Painel de Controle Pushwoosh e adicione atributos se necessário;
* integre o método [postEvent](/pt/developer/api-reference/user-centric-api#postevent) em seu projeto móvel, fornecendo o nome do evento e seus atributos exatamente como estão no Painel de Controle.

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Event name", { // event name exactly as in Control Panel
    "attribute 1": "string value", // attribute name and type exactly as in Control Panel
    "attribute 2": "string value" // attribute name and type exactly as in Control Panel
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "attribute 1" : "string value", // attribute name and type exactly as in Control Panel
   "attribute 2" : "string value" // attribute name and type exactly as in Control Panel
]
PWInAppManager.shared().postEvent("Event name", withAttributes: attributes) // event name exactly as in Control Panel
```
</TabItem>
<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"attribute 1" : @"string value", // attribute name and type exactly as in Control Panel
   @"attribute 2" : @"string value" // attribute name and type exactly as in Control Panel
};
[[PushNotificationManager pushManager] postEvent:@“eventName” withAttributes:attributes]; // event name exactly as in Control Panel
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("attribute 1", "string value") // attribute name and type exactly as in Control Panel
    .putString("attribute 2", "string value") // attribute name and type exactly as in Control Panel
    .build()

PushwooshInApp.getInstance().postEvent("Event name", attributes); // event name exactly as in Control Panel
```
</TabItem>
</Tabs>

<Aside type="note">
Os exemplos abaixo podem ser simplesmente colados em seu aplicativo, desde que haja um Evento correspondente e seus atributos sejam criados em seu Painel de Controle. Uma vez integrado, os dados do evento serão coletados e ficarão disponíveis em Audience -> Events -> Event statistics, e você poderá usar o evento no planejamento de campanhas.
</Aside>

## Aplicativos móveis

### Log out

Acione este evento quando os usuários fizerem logout de suas contas em seu aplicativo.

Atributos recomendados:

* user\_id: String
* date: Date

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Log out", {
    "user_id": "string value",
    "date": "date value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "user_id" : "string value",
   "date" : "date value"
]
PWInAppManager.shared().postEvent("Log out", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"user_id" : @"string value",
   @"date" : @"date value"
};
[[PushNotificationManager pushManager] postEvent:@"Log out" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("user_id", "string value")
    .putString("date", "date value")
    .build()

PushwooshInApp.getInstance().postEvent("Log out", attributes);
```
</TabItem>
</Tabs>

### Payment method added

Dispare este evento quando um usuário adicionar um método de pagamento à sua conta em seu aplicativo, por exemplo, fornecer credenciais de cartão ou vincular a conta a um sistema de pagamento.

Atributos recomendados:

* payment\_method: String,
* user\_id: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Payment method added", {
    "user_id": "string value",
    "payment_method": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "user_id" : "string value",
   "payment_method" : "string value"
]
PWInAppManager.shared().postEvent("Payment method added", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"payment_method" : @"string value",
   @"user_id" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Payment method added" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("payment_method", "string value")
    .putString("user_id", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Payment method added", attributes);
```
</TabItem>
</Tabs>

### Payment method changed

Envie este evento quando um usuário atualizar seu método de pagamento no aplicativo.

Atributos recomendados:

* user\_id: String,
* payment\_method: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Payment method changed", {
    "user_id": "string value",
    "payment_method": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "user_id" : "string value",
   "payment_method" : "string value"
]
PWInAppManager.shared().postEvent("Payment method changed", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"user_id" : @"string value",
   @"payment_method" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Payment method changed" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("user_id", "string value")
    .putString("payment_method", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Payment method changed", attributes);
```
</TabItem>
</Tabs>

### Button clicked

Rastreie cliques em botões dentro do aplicativo com este evento para melhorar sua análise, testar várias estratégias de comunicação e aumentar a relevância de suas mensagens com base no comportamento do cliente.

Atributos de evento recomendados:

* user\_id: String
* button\_link: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Button clicked", {
    "user_id": "string value",
    "button_link": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "user_id" : "string value",
   "button_link" : "string value"
]
PWInAppManager.shared().postEvent("Button clicked", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"user_id" : @"string value",
   @"button_link" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Button clicked" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("user_id", "string value")
    .putString("button_link", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Button clicked", attributes);

```
</TabItem>
</Tabs>

### Application updated

Acione este evento toda vez que um usuário instalar uma versão atualizada do seu aplicativo.

Atributos recomendados:

* previous\_app\_version: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Application updated", {
    "previous_app_version": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "previous_app_version" : "string value"
]
PWInAppManager.shared().postEvent("Application updated", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"previous_app_version" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Application updated" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("previous_app_version", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Application updated", attributes);
```
</TabItem>
</Tabs>

### OS updated

Dispare este evento quando um usuário atualizar a versão do sistema operacional de seu dispositivo para garantir que seu aplicativo esteja totalmente compatível.

Atributos recomendados:

* previous\_OS\_version: String
* new\_OS\_version: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("OS updated", {
    "previous_OS_version": "string value",
    "new_OS_version": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "previous_OS_version" : "string value",
   "new_OS_version": "string value"
]
PWInAppManager.shared().postEvent("OS updated", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"previous_OS_version" : @"string value",
   @"new_OS_version" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"OS updated" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("previous_OS_version", "string value")
    .putString("new_OS_version", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("OS updated", attributes);
```
</TabItem>
</Tabs>

## E-Commerce
### Product added to cart

Dispare este evento assim que um usuário adicionar um produto ao carrinho para criar campanhas de Carrinho Abandonado, definir tags de usuário ou analisar a eficiência de suas promoções.

Atributos recomendados:

* product\_id: String
* price: Integer
* source: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Product added to cart", {
    "product_id": "string value",
    "price": 1,
    "source": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "price" : 1,
   "product_id" : "string value",
   "source" : "string value"
]
PWInAppManager.shared().postEvent("Product added to cart", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"price" : @(1),
   @"product_id" : @"string value",
   @"source" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Product added to cart" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putInt("price", 1)
    .putString("product_id", "string value")
    .putString("source", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Product added to cart", attributes);
```
</TabItem>
</Tabs>

### Discounted purchase

Acione este evento assim que um usuário comprar qualquer produto usando um cupom de desconto.

Atributos recomendados:

* product\_id: String
* coupon\_id: String
* price: Integer
* discount: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Discounted purchase", {
    "product_id": "string value",
    "coupon_id": "string value",
    "price": 1,
    "discount": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "product_id" : "string value",
   "coupon_id" : "string value",
   "price" : 1,
   "discount" : "string value"
]
PWInAppManager.shared().postEvent("Discounted purchase", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"product_id" : @"string value",
   @"coupon_id" : @"string value",
   @"price" : @(1),
   @"discount" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Discounted purchase" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("product_id", "string value")
    .putString("coupon_id", "string value")
    .putInt("price", 1)
    .putString("discount", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Discounted purchase", attributes);
```
</TabItem>
</Tabs>

### Product page abandoned

Dispare este evento quando um usuário sair de uma página de produto sem uma ação de conversão.

Atributos recomendados:

* product\_id: String
* price: Integer
* source: String
* product\_page\_id: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Product Page abandoned", {
    "product_id": "string value",
    "price": 1,
    "source": "string value",
    "product_page_id": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "product_id" : "string value",
   "price" : 1,
   "source" : "string value",
   "product_page_id" : "string value"
]
PWInAppManager.shared().postEvent("Product Page abandoned", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"product_id" : @"string value",
   @"price" : @(1),
   @"source" : @"string value",
   @"product_page_id" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Product Page abandoned" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("product_id", "string value")
    .putInt("price", 1)
    .putString("source", "string value")
    .putString("product_page_id", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Product Page abandoned", attributes);
```
</TabItem>
</Tabs>

### Product added to wishlist

Mantenha-se informado sobre os produtos que os usuários salvaram em suas listas de desejos e crie ofertas pessoais e campanhas promocionais.

Atributos recomendados:

* product\_id: String
* wishlist\_id: String
* product\_price: Integer
* source: String
* user\_id: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Product added to wishlist", {
    "product_id": "string value",
    "currency": "string value",
    "price": 1,
    "source": "string value",
    "user_id": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "product_id" : "string value",
   "wishlist_id" : "string value",
   "product_price" : 1,
   "source" : "string value",
   "user_id" : "string value"
]
PWInAppManager.shared().postEvent("Product added to wishlist", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"product_id" : @"string value",
   @"wishlist_id" : @"string value",
   @"product_price" : @(1),
   @"source" : @"string value",
   @"user_id" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Product added to wishlist" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("product_id", "string value")
    .putString("wishlist_id", "string value")
    .putInt("product_price", 1)
    .putString("source", "string value")
    .putString("user_id", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Product added to wishlist", attributes);
```
</TabItem>
</Tabs>

### Product removed from wishlist

Dispare este evento quando um usuário excluir um produto de sua lista de desejos.

Atributos recomendados:

* user\_id: String
* wishlist\_id: String
* product\_id: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Product removed from wishlist", {
    "wishlist_id": "string value",
    "user_id": "string value",
    "product_id": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "wishlist_id" : "string value",
   "user_id" : "string value",
   "product_id" : "string value"
]
PWInAppManager.shared().postEvent("Product removed from wishlist", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"wishlist_id" : @"string value",
   @"user_id" : @"string value",
   @"product_id" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Product removed from wishlist" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("wishlist_id", "string value")
    .putString("user_id", "string value")
    .putString("product_id", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Product removed from wishlist", attributes);
```
</TabItem>
</Tabs>

### Product category

Envie este evento quando um usuário comprar um produto de uma categoria específica.

Atributos recomendados:

* product\_id: String
* product\_category: String
* currency: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Product category", {
    "product_id": "string value",
    "product_category": "string value",
    "currency": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "product_id" : "string value",
   "product_category" : "string value",
   "currency" : "string value"
]
PWInAppManager.shared().postEvent("Product category", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"product_id" : @"string value",
   @"product_category" : @"string value",
   @"currency" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Product category" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("product_id", "string value")
    .putString("product_category", "string value")
    .putString("currency", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Product category", attributes);
```
</TabItem>
</Tabs>

### First purchase

Acione este evento assim que um usuário fizer sua primeira compra.

Atributos recomendados:

* product\_id: String,
* category: String
* date: Date

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("First purchase", {
    "product_id": "string value",
    "category": "string value",
    "date": "date value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "product_id" : "string value",
   "category" : "string value",
   "date" : "date value"
]
PWInAppManager.shared().postEvent("First purchase", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"product_id" : @"string value",
   @"category" : @"string value",
   @"date" : @"date value"
};
[[PushNotificationManager pushManager] postEvent:@"First purchase" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("product_id", "string value")
    .putString("category", "string value")
    .putBoolean("date", "date value")
    .build()

PushwooshInApp.getInstance().postEvent("First purchase", attributes);
```
</TabItem>
</Tabs>

## Aplicativos de Jogos

### New level

Quando um usuário atinge um novo nível de jogo, acione o evento New level.

Atributos recomendados:

* level\_id: String
* user\_id: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("New level", {
    "level_id": "string value",
    "user_id": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "level_id" : "string value",
   "user_id" : "string value"
]
PWInAppManager.shared().postEvent("New level", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"level_id" : @"string value",
   @"user_id" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"New level" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("level_id", "string value")
    .putString("user_id", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("New level", attributes);
```
</TabItem>
</Tabs>

### Level completed

Envie este evento quando um usuário completar um nível de jogo específico.

Atributos recomendados:

* level\_id: String
* user\_id: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Level completed", {
    "level_id": "string value",
    "user_id": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "level_id" : "string value",
   "user_id" : "string value"
]
PWInAppManager.shared().postEvent("Level completed", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"level_id" : @"string value",
   @"user_id" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Level completed" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("level_id", "string value")
    .putString("user_id", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Level completed", attributes);
```
</TabItem>
</Tabs>

### Virtual currency earned

Dispare este evento quando o saldo de moeda virtual de um usuário for recarregado.

Atributos recomendados:

* currency\_name: String
* quantity: Integer
* user\_id: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Virtual currency earned", {
    "currency_name": "string value",
    "quantity": 1,
    "user_id": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "currency_name" : "string value",
   "quantity" : 1,
   "user_id" : "string value"
]
PWInAppManager.shared().postEvent("Virtual currency earned", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"currency_name" : @"string value",
   @"quantity" : @(1),
   @"user_id" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Virtual currency earned" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("currency_name", "string value")
    .putInt("quantity", 1)
    .putString("user_id", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Virtual currency earned", attributes);
```
</TabItem>
</Tabs>

### Tutorial completed

Acione este evento quando um usuário completar o tutorial do jogo.

Atributos recomendados:

* tutorial\_name: String
* completion: Boolean

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Tutorial completed", {
    "tutorial_name": "string value",
    "completion": true
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "tutorial_name" : "string value",
   "completion" : true
]
PWInAppManager.shared().postEvent("Tutorial completed", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"tutorial_name" : @"string value",
   @"completion" : @YES
};
[[PushNotificationManager pushManager] postEvent:@"Tutorial completed" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("tutorial_name", "string value")
    .putBoolean("completion", true)
    .build()

PushwooshInApp.getInstance().postEvent("Tutorial completed", attributes);
```
</TabItem>
</Tabs>

### Achievement unlocked

Monitore o engajamento do usuário com o evento disparado quando um usuário desbloqueia uma conquista específica.

Atributos recomendados:

* achievement\_name: String
* level: Integer
* user\_id: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Achievement unlocked", {
    "achievement_name": "string value",
    "level": 5,
    "user_id": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "achievement_name" : "string value",
   "level" : 5,
   "user_id": "string value"
]
PWInAppManager.shared().postEvent("Achievement unlocked", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"achievement_name" : @"string value",
   @"level" : @1,
   @"user_id" : "string value"
};
[[PushNotificationManager pushManager] postEvent:@"Achievement unlocked" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("achievemnt_name", "string value")
    .putString("level", 1)
    .putString("user_id", "string value)
    .build()

PushwooshInApp.getInstance().postEvent("Achievement unlocked", attributes);
```
</TabItem>
</Tabs>

## Gerenciamento de Assinaturas


### Paid subscription purchase

Envie este evento quando um usuário comprar um plano de assinatura paga.

Atributos recomendados:

* subscription\_plan\_name: String
* price: Integer
* currency:String
* expiry\_date:Date

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Paid subscription purchase", {
    "subscription_plan_name": "string value",
    "price": 1,
    "currency": "string value",
    "expiry_date": "new Date()"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "subscription_plan_name" : "string value",
   "price" : 1,
   "currency" : "string value",
   "expiry_date" : NSDate()
]
PWInAppManager.shared().postEvent("Paid subscription purchase", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"subscription_plan_name" : @"string value",
   @"price" : @(1),
   @"currency" : @"string value",
   @"expiry_date" : [NSDate date]
};
[[PushNotificationManager pushManager] postEvent:@"Paid subscription purchase" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("subscription_plan_name", "string value")
    .putInt("price", 1)
    .putString("currency", "string value")
    .putDate("expiry_date", new Date())
    .build()

PushwooshInApp.getInstance().postEvent("Paid subscription purchase", attributes);
```
</TabItem>
</Tabs>

### Subscription renewal

Acione este evento assim que um usuário renovar seu plano de assinatura.

Atributos recomendados:

* subscription\_plan\_name: String
* price: Integer
* currency: String
* renewal\_count: Integer

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Subscription renewal", {
    "subscription_plan_name": "string value",
    "price": 1,
    "currency": "string value",
    "renewal_count": 1
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "subscription_plan_name" : "string value",
   "price" : 1,
   "currency" : "string value",
   "renewal_count" : 1
]
PWInAppManager.shared().postEvent("Subscription renewal", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"subscription_plan_name" : @"string value",
   @"price" : @(1),
   @"currency" : @"string value",
   @"renewal_count" : @(1)
};
[[PushNotificationManager pushManager] postEvent:@"Subscription renewal" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("subscription_plan_name", "string value")
    .putInt("price", 1)
    .putString("currency", "string value")
    .putInt("renewal_count", 1)
    .build()

PushwooshInApp.getInstance().postEvent("Subscription renewal", attributes);
```
</TabItem>
</Tabs>

### Free trial started

Acione este evento quando um usuário optar por iniciar um teste gratuito antes de obter uma assinatura.

Atributos recomendados:

* free\_trial\_name: String
* expiry\_date: Date

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Free trial started", {
    "free_trial_name": "string value",
    "expiry_date": "new Date()"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "free_trial_name" : "string value",
   "expiry_date" : NSDate()
]
PWInAppManager.shared().postEvent("Free trial started", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"free_trial_name" : @"string value",
   @"expiry_date" : [NSDate date]
};
[[PushNotificationManager pushManager] postEvent:@"Free trial started" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("free_trial_name", "string value")
    .putDate("expiry_date", new Date())
    .build()

PushwooshInApp.getInstance().postEvent("Free trial started", attributes);
```
</TabItem>
</Tabs>

### Subscription canceled

Use este evento para rastrear cancelamentos de assinatura no aplicativo.

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Subscription cancelled");
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

PWInAppManager.shared().postEvent("Subscription cancelled", withAttributes: nil)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

[[PushNotificationManager pushManager] postEvent:@"Subscription canceled" withAttributes:@{}];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

PushwooshInApp.getInstance().postEvent("Subscription cancelled");
```
</TabItem>
</Tabs>

### Conversion from Free to Paid

Acione este evento assim que um usuário converter de usar seu aplicativo gratuitamente para um plano de assinatura paga.

Atributos recomendados:

* subscription\_plan\_name: String
* price: Integer
* currency: String
* date: Date

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Conversion from Free to Paid", {
    "subscription_plan_name": "string value",
    "price": 1,
    "currency": "string value",
    "date": "new Date()"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "plan_name" : "string value",
   "price" : 1,
   "currency" : "string value",
   "date" : NSDate()
]
PWInAppManager.shared().postEvent("Conversion from Free to Paid", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"subscription_plan_name" : @"string value",
   @"price" : @(1),
   @"currency" : @"string value",
   @"date" : [NSDate date]
};
[[PushNotificationManager pushManager] postEvent:@"Conversion from Free to Paid" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("subscription_plan_name", "string value")
    .putInt("price", 1)
    .putString("currency", "string value")
    .putDate("date", new Date())
    .build()

PushwooshInApp.getInstance().postEvent("Conversion from Free to Paid", attributes);
```
</TabItem>
</Tabs>

## Mídia

### Search

Envie este evento quando um usuário pesquisar por qualquer conteúdo em seu aplicativo.

Atributos recomendados:

* search\_query: String
* category: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:
const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Search", {
        "search_query": "string value",
        "category": "string value"
    });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "search_query" : "string value",
   "category" : "string value"
]
PWInAppManager.shared().postEvent("Search", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"search_query" : @"string value",
   @"category" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Search" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("search_query", "string value")
    .putString("category", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Search", attributes);
```
</TabItem>
</Tabs>

### Content read

Acione este evento quando um usuário tiver lido um conteúdo específico.

Atributos recomendados:

* category: String
* article\_id: String
* author: String
* published\_date: Date

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Content read", {
    "category": "string value",
    "article_id": "string value",
    "author": "string value",
    "published_date": "new Date()"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "category" : "string value",
   "article_id" : "string value",
   "author" : "string value",
   "published_date" : NSDate()
]
PWInAppManager.shared().postEvent("Content read", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"category" : @"string value",
   @"article_id" : @"string value",
   @"author" : @"string value",
   @"published_date" : [NSDate date]
};
[[PushNotificationManager pushManager] postEvent:@"Content read" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("category", "string value")
    .putString("article_id", "string value")
    .putString("author", "string value")
    .putDate("published_date", new Date())
    .build()

PushwooshInApp.getInstance().postEvent("Content read", attributes);
```
</TabItem>
</Tabs>

### Form submission

Rastreie os envios de seus formulários no aplicativo (por exemplo, Net Promoter Score), a escolha de preferências de conteúdo e outras pesquisas.

Atributos recomendados:

* form\_name: String
* url: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Form submission", {
    "form_name": "string value",
    "url": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "form_name" : "string value",
   "url" : "string value"
]
PWInAppManager.shared().postEvent("Form submission", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"form_name" : @"string value",
   @"url" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Form submission" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("form_name", "string value")
    .putString("url", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Form submission", attributes);
```
</TabItem>
</Tabs>

### Content shared

Acione este evento quando um usuário tiver compartilhado um conteúdo por meio de redes sociais, e-mail ou outros canais.

Atributos recomendados:

* category: String
* article\_id: String
* author: String
* published\_date: Date
* button\_id: String
* social\_media: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:

const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Content shared", {
    "category": "string value",
    "article_id": "string value",
    "author": "string value",
    "published_date": "new Date()",
    "button_id": "string value",
    "social_media": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "category" : "string value",
   "article_id" : "string value",
   "author" : "string value",
   "published_date" : NSDate(),
   "button_id" : "string value",
   "social_media" : "string value"
]
PWInAppManager.shared().postEvent("Content shared", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"category" : @"string value",
   @"article_id" : @"string value",
   @"author" : @"string value",
   @"published_date" : [NSDate date],
   @"button_id" : @"string value",
   @"social_media" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Content shared" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("category", "string value")
    .putString("article_id", "string value")
    .putString("author", "string value")
    .putDate("published_date", new Date())
    .putString("button_id", "string value")
    .putString("social_media", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Content shared", attributes);
```
</TabItem>
</Tabs>

### Content preferences

Dispare este evento quando um usuário escolher um tópico específico de seu interesse.

Atributos recomendados:

* topic: String

<Tabs>
<TabItem label="JavaScript">
```javascript
// To use with Web Push SDK, you can integrate this code:
const Pushwoosh = window.Pushwoosh || [];
Pushwoosh.push(function(api) {
    api.postEvent("Content preferences", {
    "topic": "string value"
  });
});
```
</TabItem>

<TabItem label="Swift">
```swift
// To use with iOS SDK, you can integrate this code:

let attributes: [String : Any] = [
   "topic" : "string value"
]
PWInAppManager.shared().postEvent("Content preferences", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// To use with iOS SDK, you can integrate this code:

NSDictionary *attributes = @{
   @"topic" : @"string value"
};
[[PushNotificationManager pushManager] postEvent:@"Content preferences" withAttributes:attributes];
```
</TabItem>

<TabItem label="Java">
```java
// To use with Android SDK, you can integrate this code:

TagsBundle attributes = new TagsBundle.Builder()
    .putString("topic", "string value")
    .build()

PushwooshInApp.getInstance().postEvent("Content preferences", attributes);
```
</TabItem>
</Tabs>