This guide addresses using Events to track and understand user behavior


Events are intended to record various actions a user performs in the application. Unlike Tags that are used to store flat data (such as country, device model or installation data), event data is stored historically and can be treated as a history of user behavior​ rather than a set of information about the device. All the contextual information about the event can be passed as a set of attributes and its values.

Once properly collected, this data can be used to:

  • trigger certain In-App Messages to be displayed;

  • build a segment of users who are eligible to receive an In-App;

  • get insights about user flow in the app, usage metrics, and other statistical data.


Event data is valuable only if it's submitted properly. Therefore, we strongly recommend to follow the simple guidelines below:

  • Try to name events as short as possible;

  • Name events after actions a user performs in the app - "LoggedIn", "SignedOut", "Subscribed", etc.;

  • Keep in mind that event names are case-sensitive;

  • Merge events that describe a single action into a single event. I.e., use "Subscribed" event with proper attribution rather than separate "SubscribedToSports", "SubscribedToPolitics", "SubscribedToTechnology" events.


All details describing an event are provided with its attributes. All events sent by your app must be created in Pushwoosh first with the set of attributes and their types, otherwise, Pushwoosh will not recognize them. All attributes are key/value pairs and can be of 5 different types: integer, string, list, date and boolean.

For example, you can track user logins and collect login credentials (e.g. through Facebook, Google+, Twitter or email), internet connection type (wifi, cellular, unknown), and whether it was successful or not (true or false values) with just one Login event by specifying the following






facebook, google, twitter, email



wifi, cellular, unknown



true, false

This event will be recorded in Pushwoosh with attribute values and a timestamp, so later it can be used to build a segment of users who are eligible of receiving a certain In-App Message.

Purchase Events

Purchase Events are an analytical tool, helping you to measure your push campaigns' success and ROI. Combining Purchase Events with Conversion Tracking, you can keep track of how much revenue your push campaigns generate. To do so, you need to pass two additional attributes with your event: __amount and __currency. The former passes the purchase cost and the latter specifies the currency name. Once you set up Purchase Events, we will show the revenue generated by your push or push campaign in its statistics.


Please note that currency must be listed in ISO-4217; otherwise, the revenue won't be counted in statistics.

PWInAppManager.shared().postEvent("Buy", withAttributes: ["__amount" : 100,
"__currency" : "USD"])
[[PWInAppManager sharedManager] postEvent:@"Buy" withAttributes:@{@"__amount" : @(100), @"__currency" : @"USD"}];
PushwooshInApp.getInstance().postEvent(“Buy”, new TagsBundle.Builder()
.putInt(“__amount”, 100)
.putString(“__currency”, “USD”)

There's no need to set up __amount and __currency attributes in your Control Panel. Just tick the Track Event Revenue checkbox, and Pushwoosh will monitor these attributes automatically.



When an interesting event occurs in your iOS application, use the following instructions to send this event to Pushwoosh.

Call the postEvent to send an event to Pushwoosh:

PWInAppManager.shared().postEvent("eventName", withAttributes: nil)
[[PushNotificationManager pushManager] postEvent:@“eventName” withAttributes:@{}];

In order to add details about the event you should use attributes describing it as follows:

let attributes: [String : Any] = ["AttributedString" : "someString",
"AttributeInt" : 42,
"AttributeList" : [123, 456, "someString"],
"AttributeBool" : true,
"AttributeDate" : NSDate()]
PWInAppManager.shared().postEvent("eventName", withAttributes: attributes)
NSDictionary *attributes = @{
@"AttributeString" : @"someString",
@"AttributeInt" : @(42),
@"AttributeList" : @[ @(123), @(456), @"someString" ],
@"AttributeBool" : @YES,
@"AttributeDate" : [NSDate date]
[[PushNotificationManager pushManager] postEvent:@“eventName” withAttributes:attributes];


When an event occurs in your Android app, use the following instructions to send this event to Pushwoosh.

Call the postEvent to send an event to Pushwoosh:


In order to add details about the event you should use attributes describing it:

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"))
PushwooshInApp.getInstance().postEvent("eventName", attributes);

In-App Messages

You can also send events from In-App Javascript.