Table of Contents
Introduction
Blue Triangle connects user experience to business outcomes by instrumenting an SDK in mobile apps to capture key metrics and events. Unlike most SDKs that only collect raw components—Classes (ViewControllers), Activities, and Fragments—Blue Triangle automatically groups them into meaningful user steps, enabling clear business impact analysis while still providing detailed data for developer-level optimizations.
Benefits
- Clarity from complexity – Transforms thousands of raw events into digestible user flows.
- Session summarization – See the full journey in plain terms (e.g., “User logged in, searched, added item, but abandoned checkout”).
- Actionable analysis – Powers funnel tracking and friction detection at the step level.
- Cross-team accessibility – Provides insights that are understandable and valuable to product, UX, and business teams alike.
Groups
A Group is a logical association of one or more Classes, Activities, or Fragments, representing what ideally appears as a user step.
Groups will appear with key events (launch time, custom events) in the customer journey, revenue screens, performance overview, and performance details etc. Classes, activities, and fragments will show in the deeper analysis screens.
Group Initiation and Termination
A group is initiated when:
- A class/activity/fragment launches, and no group is currently active.
- The developer explicitly calls the Group Launch API.
- The SDK detects user activity or a class/activity/fragment launch after 2+ seconds of idle time.
- The SDK detects user activity that triggers a screen change.
A group is terminated when
- A new group is launched
- The application crashes
Group Timers
The group timer is defined as
- The sum of all class/activity/fragment performance timing (see iOS definition, Android Definition)
- Less idle time
- Less overlap time
In the example below
- DemoMainActivity, TabContainerFragment and FirstTabFragment are activities and fragments
- quote277.json, quote992.json, quote608.json are network elements
- The group timer value would be just over 2 seconds, as it will sum the value of DemoMainActivity and FirstTabFragment
Group Naming
The Group Name is determined using the following priority:
- Developer-defined name – Set directly via the Group Naming API.
- Screen name – If available:
- iOS: Navigation title
- Android: Toolbar title
- Class/Activity/Fragment name – Taken from the last element in the group.
- Note: If obfuscation is applied, these names may be reduced to single-letter identifiers, which can limit data clarity.
Group-Related Developer APIs
Launch New Group
Developers can use an API to initiate a new group
Android
Tracker.instance.setNewGroup(<Group name>)iOS
BlueTriangle.setNewGroup(<Group name>)Set Group Name
Developers can set the group name as long as the group is active
Android
Tracker.instance.setGroupName(<Group name>)iOS
BlueTriangle.setGroupName(<Group name>)Groups and Custom Timers
Groups provide an automated, convenient way to bundle programming components (Classes, Activities, Fragments) into logical user steps. This does not conflict with custom timers that developers may set to track specific in-app events.
Both Groups and Custom Timers are captured and displayed in the portal, giving users flexibility to analyze automated step-level flows alongside developer-defined event tracking.
Best Practice
It is recommended to begin one's mobile app journey with an automated event collection and grouping. This will lead to a clear picture of what key events and user steps are collected in the application, without investing developer time initially.
Then, it would make sense to tune and improve the instrumentation via the developer APIs or adding custom events to optimize the analysis.
Comments
0 comments
Article is closed for comments.