# Cómo configurar eventos

Los **eventos** se utilizan para rastrear diversas acciones realizadas por los usuarios en la aplicación. Los datos de los eventos se almacenan históricamente, creando una línea de tiempo del comportamiento del usuario. Toda la información contextual sobre el evento se puede pasar como un conjunto de atributos y sus valores.

Una vez recopilados correctamente, estos datos se pueden utilizar para:

*   activar mensajes basados en el comportamiento;
*   modificar el flujo de comunicación del usuario dentro de un Customer Journey en función de su comportamiento;
*   crear segmentos de usuarios que realizan una acción específica en la aplicación;
*   obtener información sobre el flujo de usuarios, métricas de uso y otros datos estadísticos.

## Tipos de eventos

Hay dos tipos de eventos en Pushwoosh:
- Eventos predeterminados
- Eventos personalizados

### Eventos predeterminados
Los eventos predeterminados son interacciones básicas que los usuarios realizan en aplicaciones o sitios web, independientemente de su industria o funcionalidad. Estas acciones clave de los usuarios forman el núcleo de la comunicación con el cliente y pueden aprovecharse para cualquier producto y cliente en cualquier etapa del ciclo de vida del cliente.
Los eventos predeterminados están disponibles de forma inmediata con las últimas versiones del SDK y no requieren ninguna configuración adicional, a excepción de [PW_InAppPurchase](/es/product/audience-data-and-segmentation/events/default-events#pw_inapppurchase).

Obtenga más información sobre los [eventos predeterminados](/es/product/audience-data-and-segmentation/events/default-events)

### Eventos personalizados
A diferencia de los eventos predeterminados, que son universales en muchas aplicaciones y sectores, los eventos personalizados son los que usted crea específicamente para su aplicación. Estos eventos rastrean acciones específicas únicas para sus necesidades, como completar un entrenamiento o extender una suscripción, y le ayudan a comprender cómo los usuarios interactúan con sus características específicas.

Los eventos personalizados requieren que los implemente por su parte.

## Implementación de eventos personalizados

### 1. Crear eventos y establecer atributos

Todos los eventos enviados por su aplicación deben crearse primero en Pushwoosh con el conjunto de atributos y sus tipos; de lo contrario, Pushwoosh no los reconocerá.

Puede pedir a su equipo de marketing que cree eventos directamente en el [Panel de Control de Pushwoosh](/es/product/audience-data-and-segmentation/events#1-create-events-in-pushwoosh-control-panel) o utilizar el método de la API [createEvent](/es/developer/api-reference/events#createevent). Esto implica especificar el nombre del evento y cualquier dato asociado que desee rastrear.

### 2. Llamar a la API /postEvent

Cuando ocurra un evento que le gustaría rastrear en su aplicación, llame a la API [`/postEvent`](/es/developer/api-reference/user-centric-api#postevent) para enviar este evento a Pushwoosh.

#### iOS

Llame a [`postEvent`](/es/developer/api-reference/user-centric-api#postevent) para enviar un evento a 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 añadir detalles sobre el evento (ref. a Atributos), utilice el parámetro de atributos de la siguiente manera:

<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

Cuando ocurra un evento en su aplicación de Android, utilice las siguientes instrucciones para enviar este evento a Pushwoosh.

Llame a [`postEvent`](/es/developer/api-reference/user-centric-api#postevent) para enviar un evento a Pushwoosh:

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

Para añadir detalles sobre el evento (ref. a Atributos), utilice el parámetro de atributos de la siguiente manera:

```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">
También puede enviar eventos desde [**Javascript In-App**](/es/developer/guides/messaging-channels/inapp-with-javascript/).
</Aside>