Event tracking
Everything your customers do in your mobile application is recorded in the system in real time, queued and automatically sent in batches to Synerise. Information such as the source of the visit, the URL address they have visited, and the chain of actions that followed are saved in Synerise as events and their parameters.
The scope of information gathered about events is wide. Synerise collects predefined event parameters which can be extended according to the preferences and needs of the Synerise customers.
The basic information about the tracked events includes:
- Action name – an indicator of the activity type, such as
screen.view
- Label – human-readable information about the activity, such as the page title.
Important: Currently unused - Time – the time when the event occurred
- Customer identification – an identifier of the customer who performed the activity
- Parameters – additional parameters, depending on the type of the event
{
"action": "screen.view",
"eventUUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"unique": null,
"createDate": 1659456038993,
"label": "PromotionViewScreen",
"params": {
"ip": "xx.xx.xxx.xxx",
"source": "MOBILE_APP",
"clientId": 1111111111,
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"eventUUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"businessProfileId": 1234,
"eventCreateTime": "2022-08-02T16:00:38.993Z",
"time": 1659456038993,
"modifiedBy": {
"businessProfileApiKey": null,
"clientApiKey": null,
"clientId": null,
"userId": null
},
"clientId": 5790194467,
}
}
product.view
event must include the product ID.You can enrich events with data from catalogs in Synerise, for example, a product or service event where only an ID has been provided can be enriched with other details such as the description, image URL, and more.
Automatically tracked events
Auto-tracking allows you to monitor each type of the customer activity in your mobile application and it is enabled by default. Every interaction (such as click, view, swipe) with any element in the application can be sent as an event to Synerise together with a collection of details concerning the event, which are available in the overview on the profile’s card. The frequency and the kind of the tracked events are customizable, as you can switch on tracking a particular types of interactions.
Auto-tracking events is:
- Enabled by default for Android.
- Disabled by default for iOS.
Available modes for auto-tracking:
DISABLED
- Listeners are disabled (default mode for iOS SDK).PLAIN
- Listeners are set to track screen-visits only.FINE
- Listeners are attached to nearly everything that is clickable in your app, including screen visits that record the visited screen event (default mode for Android SDK).
You may configure auto-tracking with various options to customize your expected behavior and track events you want. See possible configuration options below:
Synerise.settings.tracker.autoTracking.enabled = false; // 1
- It enables/disables auto-tracking.
- It sets auto-tracking mode.
- It is an array of classes that you want to exclude from auto-tracking.
- It is an array of tag numbers for views that you want to exclude from auto-tracking.
List of events tracked automatically
Android
Action name | Description | Label | Additional information tracked |
---|---|---|---|
screen.view | This event is generated when any screen of a mobile app is displayed by a mobile app user. | Activity, Fragment names (for example, ProductDetailsFragment ) |
|
screen.interaction | This event is generated every time a mobile app user interacts with any element of the application UI. | viewText or the name of control type (if not able to read a value) |
Depending on the UI element type tracked, Synerise automatically reads and passes any values that are set depending on type, such as: time, date, position, progress, state, value, or if the element has been selected. |
Some events are automatically generated when there is an interaction with a push notification.
Action name | Description | Additional information |
---|---|---|
push.view | A push notification was shown to the app user. | The campaign title and campaign type are tracked. |
push.click | A push notification was clicked. | |
push.send | A push notification was sent by Synerise. | This event is generated by the Synerise backend. |
push.dismiss | A push notification was dismissed | Sent when a user rejects your notification or clears all notifications. |
push.notSent | A push notification failed to be created in backend. | This event is generated by the Synerise backend. Usually occurs when notification encryption is enabled in your business profile, but your application did not generate a key pair. |
Declarative tracking
Declarative tracking is a feature of our SDK that allows you to declare additional actions for tracking.
Product views, screen views, clicking a sign up button, contact with the call center, and more: you can implement anything and declarative tracking will help you to do that.
Basic custom event
In the most basic scenario, you can pass an event as in the examples below:
Tracker.send(new CustomEvent("my.action", "My label that will be visible on Activity Stream"));
Such events are passed to Synerise as the CustomEvent
type, since the action
can be anything that you want.
- The action name must follow the
context.action
convention. For example:screen.view
,product.buy
,social.share
- The action name must be up to 32 characters long and must match the following regular expression:
^[a-zA-Z0-9\.\-_]+$
Custom events with more parameters
If you want to send more complex events, you can include additional parameters:
TrackerParams params = new TrackerParams.Builder()
.add("name", "John")
.add("surname", "Rise")
.add("company", "Synerise")
.add("age", 25)
.add("isGreat", true)
.add("lastOrder", 384.28)
.add("count", 0x7fffffffffffffffL)
.add("someObject", new MySerializableObject())
.build();
Tracker.send(new CustomEvent("my.action", "My label that will be visible on Activity Stream", params));
Predefined events
Synerise offers a set of predefined event types that require a minimum set of data for the backend.
They can be sent by using Setters as in the following example. The example uses the “Product viewed” event.
TrackerParams params = new TrackerParams.Builder()
.add("campaignHash", "4321")
.add("campaignId", "1234")
.build();
ProductViewEvent event = new ProductViewEvent(("Smartphone X", "SM-01-S", "Smartphone X”, params);
event.setCategory(“Smartphones”);
event.setUrl(“myapp://products/CM01-R");
Tracker.send(event);
Android | iOS | React Native |
---|---|---|
Tracker.Send() method | Tracker.send(_:) method | Synerise.Tracker.Send() method |
Predefined event list
The list contains the list of predefined events which you can implement.
Customer registered
This event may be used if you do not use Synerise registration/authentication features and rely fully on your own mechanisms, but still want to gather events when a customer registers.
Example:
RegisteredEvent event = new RegisteredEvent("label")
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | RegisteredEvent | Label |
iOS | RegisteredEvent | Label |
React Native | RegisteredEvent | Label |
Customer logged in event
This event may be used if you do not use Synerise login/authentication features and rely fully on your own mechanisms, but still want to gather events when a customer logs in.

Example:
LoggedInEvent event = new LoggedInEvent("label")
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | LoggedInEvent | Label |
iOS | LoggedInEvent | Label |
React Native | LoggedInEvent | Label |
Customer logged out
This event may be used if you do not use Synerise login/authentication features and rely fully on your own mechanisms, but still want to gather events when a customer logs out.
Example:
LoggedOutEvent event = new LoggedOutEvent("label")
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | LoggedOutEvent | Label |
iOS | LoggedOutEvent | Label |
React Native | LoggedOutEvent | Label |
Product viewed
Use this event to track customer visits to a product in your mobile application.

Example:
ProductViewEvent event = new ProductViewEvent("label", "productId", "productName");
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | ProductViewEvent | Label, ProductId, Name |
iOS | ProductViewedEvent | Label, ProductId, Name |
React Native | ProductViewedEvent | Label, ProductId, Name |
Product added to favorites
Use this event to track adding a product to favorites in your mobile application.

Example:
AddedToFavoritesEvent event = new AddedToFavoritesEvent("label");
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | AddedToFavoritesEvent | Label |
iOS | ProductAddedToFavoritesEvent | Label |
React Native | ProductAddedToFavouritesEvent | Label |
Product added to cart
Use this event to track adding a product to a cart in your mobile application.

Example:
UnitPrice unitPrice = new UnitPrice(price, Currency.getInstance(Locale.US));
AddedToCartEvent event = new AddedToCartEvent("label", "sku", unitPrice, 1);
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | AddedToCartEvent | Label, Sku, FinalPrice, Quantity |
iOS | ProductAddedToCartEvent | Label, SKU, FinalPrice, Quantity |
React Native | ProductAddedToCartEvent | Label, SKU, FinalPrice, Quantity |
Product removed from cart
Use this event to track removing a product from a cart in your mobile application.
Example:
UnitPrice unitPrice = new UnitPrice(price, Currency.getInstance(Locale.US));
RemovedFromCartEvent event = new RemovedFromCartEvent("label", "sku", unitPrice, 1);
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | RemovedFromCartEvent | Label, Sku, FinalPrice, Quantity |
iOS | ProductRemovedFromCartEvent | Label, SKU, FinalPrice, Quantity |
React Native | ProductRemovedFromCartEvent | Label, SKU, FinalPrice, Quantity |
Recommendation seen
Use this event to track recommendation display to a customer.
For iOS and Android only: If you use the Widget to present recommendations, this event is tracked automatically.
Example:
RecommendationSeenEvent event = new RecommendationSeenEvent("label", "productId", "productName", "campaignId", "campaignHash");
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | RecommendationSeenEvent | Label, ProductId,Name, CampaignId, CampaignHash |
iOS | RecommendationSeenEvent | Label, ProductId, Name, CampaignId, CampaignHash |
React Native | RecommendationSeenEvent | Label, ProductId, Name, CampaignId, CampaignHash |
Recommendation clicked
Use this event to track recommendation clicks.
For iOS and Android only: If you use the Widget to present recommendations, this event is tracked automatically.
Example:
RecommendationClickEvent event = new RecommendationClickEvent("label", "productId", "productName", "campaignId", "campaignHash");
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | RecommendationClickEvent | Label, ProductId,Name, CampaignId, CampaignHash |
iOS | RecommendationClickEvent | Label, ProductId, Name, CampaignId, CampaignHash |
React Native | RecommendationClickEvent | Label, ProductId, Name, CampaignId, CampaignHash |
Customer appeared in location
Use this event to track a customer’s presence at a location by passing geographic coordinates.
- Send a silent push with the Synerise command
GET_LOCATION
. - SDK retrieves the location.
- Use the data from the
GET_LOCATION
response to send theAppearedInLocation
event.

Example:
AppearedInLocationEvent event = new AppearedInLocationEvent("label", 48.1599, 11.5761);
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | AppearedInLocationEvent | Label, Latitude, Longitude |
iOS | AppearedInLocationEvent | Label, Latitude, Longitude |
React Native | AppearedInLocationEvent | Label, Latitude, Longitude |
Customer activity timer
Use this event to measure the duration of any customer activity - send Hit timer when a customer starts an activity and send it again with a different time signature when the customer finishes. After that, you can use the Analytics module to measure, for example, average activity time. You can add a custom parameter to the timer events so you can recognize them.
Example:
HitTimerEvent event = new HitTimerEvent("label");
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | HitTimerEvent | Label |
iOS | HitTimerEvent | Label |
React Native | HitTimerEvent | Label |
Customer searched
Use this event to track search queries - every time a customer types a query in the search box in your mobile application, this event will be generated.
Example:
SearchedEvent event = new SearchedEvent("label");
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | SearchedEvent | Label |
iOS | SearchedEvent | Label |
React Native | SearchedEvent | Label |
Customer shared
Use this event to track customer sharing something from your application.
Example:
SharedEvent event = new SharedEvent("label");
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | SharedEvent | Label |
iOS | SharedEvent | Label |
React Native | SharedEvent | Label |
Customer visited a screen
This event is used when a customer visits a particular screen in your application.

Example:
VisitedScreenEvent event = new VisitedScreenEvent("label");
Tracker.send(event);
OS | Event | Required fields |
---|---|---|
Android | VisitedScreenEvent | Label |
iOS | VisitedScreenEvent | Label |
React Native | VisitedScreenEvent | Label |
Crash Event
This event is used when the application crashes.
The event is sent automatically by Synerise SDK when you enable crash handling while configuring the SDK.
You can send it by yourself when you handle an uncaught exception.
Example:
let event: CrashEvent = CrashEvent(label: "LABEL")
event.setExceptionName("EXCEPTION_NAME")
event.setExceptionReason("EXCEPTION_REASON")
event.setExceptionStacktrace("EXCEPTION_STACKTRACE")
Tracker.send(event)
OS | Event | Required fields |
---|---|---|
Android | CrashEvent | Label |
iOS | CrashEvent | Label |
React Native | n/a | Label |
Push viewed
Use this event to track viewing a push notification.
let event: PushViewedEvent = PushViewedEvent(label: "LABEL")
Tracker.send(event)
OS | Event | Required fields |
---|---|---|
Android | PushViewedEvent | Label |
iOS | PushViewedEvent | Label |
React Native | PushViewedEvent | Label |
Push clicked
Use this event to track tapping a push notification.
let event: PushClickedEvent = PushClickedEvent(label: "LABEL")
Tracker.send(event)
OS | Event | Required fields |
---|---|---|
Android | ClickedPushEvent | Label |
iOS | PushClickedEvent | Label |
React Native | ClickedPushEvent | Label |
Push cancelled
Use this event to track cancelling push notifications.
let event: PushCancelledEvent = PushCancelledEvent(label: "LABEL")
Tracker.send(event)
OS | Event | Required fields |
---|---|---|
Android | CancelledPushEvent | Label |
iOS | PushCancelledEvent | Label |
React Native | PushCancelledEvent | Label |