Event Tracking

This section discusses what kinds of events are tracked by Smartlook, how they are made available in the dashboard, how they relate to user privacy, and how to control the level of tracked events.

Smartlook tracks two interconnected types of events. User interaction events, i.e., finger touches, gestures, UI element focus and such like, and analytics events, by which Smartlook understands button clicks, navigation between screens, and similar events that initialize an action in the application.


Next reading

There are no known performance issues related to event tracking. Tracked events, however, especially those that are visualized during the session playback, can compromise sensitive user data.

User Interaction Events

Smartlook tracks user interactions with the application UI, like taps and gestures, in order to visualise them during recording playback. These records are also the data for creating user interaction heatmaps.

To protect user privacy, user interaction with virtual keyboards (i.e., events in the area where the keyboard is on the screen) is not recorded. When the application uses a custom input view (e.g., a custom PIN-pad) that the system does not recognize as a system virtual keyboard (and thus Smartlook records interaction events in the area), using one of the event tracking modes to suppress user interaction tracking temporarily should be considered. An example is provided in the Secure custom keyboard cookbook.


Blacklisting such a view is not enough, as user interaction is tracked on blacklisted views. Blacklisting and event tracking are controlled independently. The Handling Sensitive Events chapter offers more in-depth information on how to handle events that could reveal sensitive user information.

Rage Clicks Events

Rage Clicks Event is a specific kind of event that flags screens in the app where a user repeatedly fast taps the screen. This behavior typically occurs when the user is frustrated with the UI, does not understand what the interactive elements of the UI are and what are just graphic artifacts. The rage click events can be reviewed along the other events in the player.


In some apps such as games, however, fast user interaction is expected. For these apps, or their sections, rage click events could be ignored by setting the ignoreRageClickEvents event tracking mode. More info about event tracking modes is in the Event Tracking Modes section of this document.

Analytics Events

Besides direct tracking user interaction at the basic level of touches and gestures, Smartlook also tracks how these events are understood by the application code. These events track what UI elements have been tapped and how the application reacted to it. All these events are visible in the player timeline. If an analytic event is related to a UI element, the element is highlighted in the screen recording.

Most importantly, these analytics events could be used with Smartlook analytics.

Tracking Custom Events

Smartlook aims to track the relevant events automatically. It is, however, not fully possible on all platforms. Also, there are use-cases when the automated tracking might not provide enough information for the purposes of analytics. If this is the case in your application, Smartlook offers some handy methods for manual event tracking.

The events created by these methods are treated by Smartlook exactly the same way as automatically acquired events of the corresponding type.

Custom events

Custom events are identified by a name, and can also have additional and optional properties. The additional properties can be used in funnels and any other filtering. Technical details can be found in the API Reference.

val props = JSONObject()
		.put("PROP_1", "value 1")

Smartlook.trackCustomEvent("CUSTOM EVENT", props)
JSONObject props = new JSONObject();

try {
    props.put("PROP_1", "value 1");
} catch (JSONException e) {

Smartlook.trackCustomEvent("CUSTOM EVENT", props);
Smartlook.trackCustomEvent(name: "CUSTOM EVENT", props: [ "PROP_1" : "value 1"])
[Smartlook trackCustomEventWithName:@"CUSTOM EVENT" props:@{ @"PROP 1": @"record value" }];
Smartlook.trackCustomEvent("CUSTOM EVENT", { "PROP_1" : "value1" });
Smartlook.trackCustomEvent("CUSTOM EVENT", { "PROP_1" : "value_1"});
smartlook.trackCustomEvent(new SmartlookCustomEvent("CUSTOM EVENT", eventProperties: {PROP_1: "value 1"});
Smartlook.trackCustomEvent({name: "CUSTOM EVENT", eventProperties: {PROP_1: "value 1"}})
SmartlookUnity.Smartlook.TrackCustomEvent("CustomEvent", JsonUtility.ToJson(player));
Dictionary<string, string> eventProperties = new Dictionary<string, string>();
eventProperties["prop1"] = "value 1";
Smartlook.Analytics.TrackCustomEvent("CUSTOM EVENT", eventProperties);

Timed event

For use-cases where duration of some time-sensitive or long-running actions in the application is an important metric, Smartlook offers timed events. Nothing is tracked upon starting such an event, the application just remembers the event reference and uses it once the event is finished or cancelled. Technical details could be found in the API Reference.

Event Tracking Modes

All events described in this document are tracked by default. In some cases, it is desired to ignore some kinds of them, however. Such cases include the following:

  • rage clicks in games, when fast repeated user interaction is normal.
  • touch events over custom keyboards or similar controls, that may reveal sensitive information.
  • detected navigation events in apps generated by tools like React Native, where generated screen identifiers make no obvious sense and repeat themselves.

Smartlook offers several event tracking modes that can be combined:

  • Full tracking: this a default state. SDK tracks all automatically detected events along with all user defined events.
  • Ignore User Interaction: disables automatically detected selector (click on a View), focus, touch, gesture, and keyboard events.
  • Ignore Navigation Interaction: disables automatically detected navigation events. User defined ones are still being sent.
  • Ignore Rage Clicks Events: disables automatic detection and tracking of rage click events.
  • No Tracking: no automatically detected events are tracked. Only user defined events are still tracked.