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.
Important: Events are not sent in real time, they’re queued. In most circumstances, that’s a good compromise between how quick events are sent and battery life. You can change the queuing behavior as described in the Settings article.
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
Note: Some events are predefined, meaning they have a fixed set of fields that must be sent. For example, a 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
WARNING: Automatic tracking is available only for Android SDK and iOS SDK. Auto-tracking is not supported for applications built with Jetpack Compose and SwiftUI. These applications should use declarative tracking.
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:
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
Important: To ensure correct tracking of the push notification related events, you must configure push notifications first.
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 data is tracked.
push.click
A push notification was clicked.
The campaign data is tracked.
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.
push.notRegistered
A push notification failed to be created in backend.
This event is generated by the Synerise backend. Usually occurs when it is a problem with user’s token.
iOS
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.
Action name
Description
Activity class
Label
screen.view
This event is generated when any screen of a mobile app is displayed by a mobile app user.
UIViewController
View controllers name (for example, MyApp.ProductDetailsViewController)
screen.interaction
This event is generated every time a mobile app user interacts with any element of the application UI.
viewText or name of control type (if not able to read value)
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 data is tracked.
push.click
A push notification was clicked.
The campaign data is tracked.
push.openInApp
A push notification was clicked and the app was open by notification.
The campaign data is tracked.
push.send
A push notification was sent by Synerise.
This event is generated by the Synerise backend.
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 workspace, but your application did not generate a key pair.
push.notRegistered
A push notification failed to be created in backend.
This event is generated by the Synerise backend. Usually occurs when there is a problem with user’s token.
React Native
Tracking of the following events is not result of the auto-tracking feature because this feature is not available for React Native. The tracking results from the implementation of either React Native (Android) or React Native (iOS).
Action name
Description
Additional information
push.view
A push notification was shown to the app user.
The campaign data is tracked.
push.click
A push notification was clicked.
The campaign data is tracked.
push.openInApp
A push notification was clicked and the app was open by notification.
The campaign data is tracked. Available on iOS device only.
push.dismiss
A push notification was dismissed
Sent when a user rejects your notification or clears all notifications. The campaign data is tracked. Available on Android device only.
push.send
A push notification was sent by Synerise.
This event is generated by the Synerise backend.
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 workspace, but your application did not generate a key pair.
push.notRegistered
A push notification failed to be created in backend.
This event is generated by the Synerise backend. Usually occurs when there is a problem with user’s token.
Flutter
Tracking of the following events is not result of the auto-tracking feature because this feature is not available for Flutter. The tracking results from the implementation of either Flutter (Android) or Flutter (iOS).
Action name
Description
Additional information
push.view
A push notification was shown to the app user.
The campaign data is tracked.
push.click
A push notification was clicked.
The campaign data is tracked.
push.openInApp
A push notification was clicked and the app was open by notification.
The campaign data is tracked. Available on iOS device only.
push.dismiss
A push notification was dismissed
Sent when a user rejects your notification or clears all notifications. The campaign data is tracked. Available on Android device only.
push.send
A push notification was sent by Synerise.
This event is generated by the Synerise backend.
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.
push.notRegistered
A push notification failed to be created in backend.
This event is generated by the Synerise backend. Usually occurs when there is a problem with user’s token.
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(newCustomEvent("my.action","My label that will be visible on Activity Stream"));
letevent:CustomEvent=CustomEvent(label:"My label that will be visible on Activity Stream",action:"my.action")Tracker.send(event)
SNRCustomEvent*event=[[SNRCustomEventalloc]initWithLabel:@"My label that will be visible on Activity Stream"action:@"my.action"];[SNRTrackersend:event];
letevent=newCustomEvent("My label that will be visible on Activity Stream","my.action",parameters);Synerise.Tracker.send(event);
CustomEventevent=CustomEvent("My label that will be visible on Activity Stream","my.action",parameters);Synerise.tracker.send(event)
Such events are passed to Synerise as the CustomEvent type, since the action can be anything that you want.
Important:
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:
TrackerParamsparams=newTrackerParams.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",newMySerializableObject()).build();Tracker.send(newCustomEvent("my.action","My label that will be visible on Activity Stream",params));
valparams=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",MySerializableObject()).build()Tracker.send(CustomEvent("my.action","My label that will be visible on Activity Stream",params))
letparameters:TrackerParams=TrackerParams.make{builderinbuilder.setString("John",forKey:"name")builder.setString("Rise",forKey:"surname")builder.setString("Synerise",forKey:"company")builder.setInt(57,forKey:"age")builder.setBool(true,forKey:"isGreat")builder.setDouble(384.28,forKey:"lastOrder")builder.setInt(10,forKey:"count")builder.setObject(SampleObject(),forKey:"someObject")}letevent:CustomEvent=CustomEvent(label:"My label that will be visible on Activity Stream",action:"my.action",params:parameters)Tracker.send(event)
SNRTrackerParams*parameters=[SNRTrackerParamsmakeWithBuilder:^(SNRTrackerParamsBuilder*builder){[buildersetString:@"John"forKey:@"name"];[buildersetString:@"Rise"forKey:@"surname"];[buildersetString:@"Synerise"forKey:@"company"];[buildersetInt:25forKey:@"age"];[buildersetBool:YESforKey:@"isGreat"];[buildersetDouble:384.28forKey:@"lastOrder"];[buildersetInt:10forKey:@"count"];[buildersetObject:[SampleObjectnew]forKey:@"someObject"];}];SNRCustomEvent*event=[[SNRCustomEventalloc]initWithLabel:@"My label that will be visible on Activity Stream"action:@"my.action"andParams:parameters];[SNRTrackersend:event];
letparameters={"name":"John","surname":"Rise","company":"Synerise","age":25,"lastOrder":380.50};letevent=newCustomEvent("My label that will be visible on Activity Stream","my.action",parameters);Synerise.Tracker.send(event);
finalparameters=<String,String>{"name":"Rise","surname":"Rise","company":"Synerise","age":25,"lastOrder":380.50};CustomEventevent=CustomEvent("My label that will be visible on Activity Stream","my.action",parameters);Synerise.tracker.send(event)
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.
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.
Action name of the generated event: client.register
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.
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.
varobject:Object={product:'computer',screenSize:15,}leteventSeen=newRecommendationSeenEvent('Recommendation.ts Seen label','12351','Nike Boots','12345','test',object)Synerise.Tracker.send(eventSeen)
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.
Action name of the generated event: client.hitTimer
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.
Use this event to track viewing a push notification.
Important: Push events are tracked automatically for Android and React Native (if the notifications have been configured for React Native according to iOS or Android ).
Use this event to track tapping a push notification.
Important: Push events are tracked automatically for Android and React Native (if the notifications have been configured for React Native according to iOS or Android ).
Use this event to track dismissing push notifications.
Important: Push events are tracked automatically for Android and React Native (if the notifications have been configured for React Native according to iOS or Android ).