Skip to main content
Configure how your app handles navigation, analytics events, and experience lifecycle callbacks. Defines how your app handles deep link route triggers configured in Userpilot experiences, requiring you to route the user to the appropriate location.
The Userpilot SDK automatically handles navigation if you haven’t implemented UserpilotNavigationHandler. When a deep link with a defined scheme and host is present in the manifest file, the SDK will open the corresponding Activity. If the link is external, the SDK will handle it appropriately. For complete control over link handling, implement UserpilotNavigationHandler to customize behavior for all link types. The useInAppBrowser flag (when you do not implement UserpilotNavigationHandler) determines whether to open URLs using an in-app browser (e.g., Chrome Custom Tabs) or fall back to the system browser.
  • When useInAppBrowser is true: opens using Chrome Custom Tabs for a faster, integrated experience.
  • When useInAppBrowser is false or not set: opens using the default system browser or another fallback.
Set navigationHandler in the SDK configuration when initializing Userpilot, so it is available for startup notification taps. Navigation callbacks run on the main thread. In SDK 1.4.0 and later, the latest link received during initialization is held until a handler is assigned or SDK initialization finishes. If no handler is assigned, the SDK uses its normal URI-opening behavior. This startup delay does not wait for a router that your app initializes asynchronously; buffer the URI in your handler if your navigation UI is not ready.

Analytics Listener

Receives callbacks whenever the SDK tracks an event, screen, or identifies a user. Use this to integrate with another analytics tool.

Experience Listener

Receives callbacks when experiences start, complete, or are dismissed, and when step state changes. Implement this to forward data to another destination or to react to user actions.