Recording Navigation

How the user navigation is recorded in the application.

Understanding the way users use the application is the purpose of the analytics. A typical mobile application breaks into several screens, between them, users navigate to achieve their goals.

Smartlook attempts to track the transitions automatically and record them as navigation events that are then available in the Dashboard. Another usage of navigation events is generating heatmaps.

To generate a meaningful heatmap, a portion of the application UI with a stable structure must be used. Smartlook assumes that a screen, i.e., an interval between two subsequent navigation events is such a UI unit.


Properly dividing the user flow into individual screens is important for correct heatmap generation, as each heatmap is generated for a particular screen, i.e., an interval between two navigation events.

However, the accuracy and usefulness of these auto-tracked navigation events depends heavily on the way the application UI is composed. Smartlook understands very well the apps that use standard UI kits as paradigms for each platform. If the application is, however, made using a third-party framework, e.g., a gaming framework, that Smartlook SDK cannot detect the navigation logic of the application. Details about the extent of the auto-detection of the navigation events on each particular platform are provided in the API Reference.

In such a case, in order to get useful navigation data, navigation events must be tracked programmatically, using this method:


The navigation event recorded by this method is indistinguishable from the auto-detected navigation events.

Smartlook.trackNavigationEvent("LOGIN_SCREEN", ViewState.START)
Smartlook.trackNavigationEvent("LOGIN_SCREEN", ViewState.START);
Smartlook.trackNavigationEvent(withControllerId: "LOGIN_SCREEN", type: .enter)
[Smartlook trackNavigationEventWithControllerId:@"LOGIN_SCREEN" type:SLNavigationTypeEnter];
Smartlook.trackNavigationEvent("LOGIN_SCREEN", SmartlookNavigationEventType.enter);
Smartlook.trackNavigationEvent("LOGIN_SCREEN", "enter");
Smartlook.trackNavigationEvent("LOGIN_SCREEN", "exit");
smartlook.trackNavigationEvent(new SmartlookNavigationEvent("LOGIN_SCREEN", SmartlookViewState.START));
Smartlook.trackNavigationEvent({name: "LOGIN_SCREEN", viewState: Smartlook.ViewState.START})
SmartlookUnity.Smartlook.TrackNavigationEvent("LOGIN_SCREEN", SmartlookUnity.Smartlook.NavigationEventType.enter);
Smartlook.Analytics.TrackNavigationEvent("LOGIN_SCREEN", Smartlook.Analytics.NavigationEventType.Enter);

Where the type value is either of the enter or exit kind. The exit event also records the duration from the previous corresponding enter event.

More details about the navigation events, consult the API reference.