Skip to main content

Screen Tracking

Track which screens your contacts visit to understand navigation patterns and build segments based on in-app behavior.


Manual tracking​

Call trackScreen in viewDidLoad or any other lifecycle method where the screen becomes active:

override func viewDidLoad() {
super.viewDidLoad()
UserSDK.default?.trackScreen(with: "Home")
}

The screen name is a free-form string - use whatever naming convention makes sense for your app.

trackScreen requires a contact to exist. Call ping() first if you haven't identified the contact yet. See Contact Data.

Automatic tracking via subclassing​

For controllers where you just want tracking without writing any code, subclass one of the built-in trackable view controllers. Each one calls trackScreen automatically in viewDidLoad, using the class name as the screen name.

Your base classUse instead
UIViewControllerTrackableViewController
UITableViewControllerTrackableTableViewController
UICollectionViewControllerTrackableCollectionViewController
UIPageViewControllerTrackablePageViewController
UISplitViewControllerTrackableSplitViewController
class HomeViewController: TrackableViewController {
// trackScreen(with: "HomeViewController") is called automatically
}

To use a custom name instead of the class name, override screenName:

class HomeViewController: TrackableViewController {
override var screenName: String { "Home" }
}