Tagging Screens

Configure automatic and manual screen tagging to unlock heat‑maps, funnels and journey analytics.

Good screen names turn raw replays into actionable heat‑maps, screen analytics, conversion funnels and journey charts.
This guide walks you through reviewing the automatic tags first, deciding when (and how) to add manual tags, and finally verifying that every screen shows up with a meaningful duration.

Automatic Screen Tagging - The Recommended, Simple Approach

Note

The UXCam Android SDK auto‑tags most screens for you, but you can override or extend this behaviour where needed.

For Android, UXCam's SDK automatically tags screens (i.e., activities), and this is the recommended default behaviour. Automatic tagging means that each activity your user navigates to is recorded automatically, without requiring you to manually intervene. This gives you the advantage of capturing user activity with minimal integration effort.

  1. Record one or multiple sessions in your debug build where you are navigating all screens of your app.
  2. Open any replay in the UXCam Dashboard and review the screen list on the right.
  3. For each entry, ask:
Check‑questionWhy it matters
Does the name describe the UI the user actually saw?Makes funnels human‑readable.
Would a heat‑map over the frames make sense?Ensures events aggregate on the right surface.
Do any screens repeat with a 0 s duration?Signals duplicate or missing tags.

If everything looks good – simply rename screens in Dashboard → Screens (e.g. change MainActivityHome) and you’re done. No code required.

How to Enable or Disable Automatic Tagging?

Caution

Only disable automatic tagging if you experience incongruent or meaningless names in your session timeline or want to dedicate time to manually configure it.

It will always be enabled by default, but you can disable this from your SDK configuration options as such:

val config = UXConfig.Builder(BuildConfig.YOUR_UXCAM_KEY)
    .enableAutomaticScreenNameTagging(false) // TRUE BY DEFAULT
    .build()
UXCam.startWithConfiguration(config)
UXConfig config = new UXConfig.Builder(BuildConfig.YOUR_UXCAM_KEY)
    .enableAutomaticScreenNameTagging(false) // TRUE BY DEFAULT
    .build()
UXCam.startWithConfiguration(config)

Manual Tagging - When Do I Need It?

Tip

You can have automatic tagging enabled and manually tag some screens or fragments, both options work well together!

SymptomTypical causeFix
Same visual screen logged under two namesActivity reused with different intent extrasCall UXCam.tagScreenName("BetterName") when you know the context
You're using Jetpack ComposeTraditional screen tagging requires extra setupPlease refer to this section to tag screens in Jetpack Compose
Compose NavGraph only shows MainActivitySingle‑Activity architectureTag once per navigation change (see example)
Same screen shows different interfaces/places within your appYou're using Fragments within some activities and are not automatically tagged yetTag the fragment or enable fragment based tagging

Example: Tagging an Activity Manually

Warning

Tag once per navigation event to avoid 0 s duplicates.

To tag a screen in an activity, use the following code in the onCreate() method of your activity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  
    UXCam.tagScreenName("Main Page"); // Manually tag this activity with a screen name.
}

Example: Tagging a Fragment Manually

Similarly, to tag a fragment, place the code in the onResume() method of the fragment:

@Override
public void onResume() {
    super.onResume();
    UXCam.tagScreenName("Fragment Name"); // Manually tag this fragment with a screen name.
}

How to Tag WebViews

WebViews can be a unique challenge when it comes to screen tagging, as they often contain dynamic content. To properly tag your WebView screens, you can follow our detailed guide that walks you through the best practices and methods for effective WebView tagging.

For more information, click the button below:

Tagging Webview docs link TODO


Verify Your Tags

So you've decided to manually tag some or all your screens, making sure this is properly set up is a fundamental part in ensuring heat-maps, funnels and user journey analytics is giving you full insights, so it is extremely important to verify everything works well before moving on:

  1. In your debug environment, run the app and visit all the manually tagged screens, then background the app.

  2. Once the session uploads, check:

    • Each screen appears exactly once, according to the user's navigation, with duration > 0 s.
    • No “Unknown” or class‑name (if fully manual) screens remain.
    • Names match your analytics language.

If something is off, look for duplicate tag calls or a missing route handler.

Important

Having a solid screen tagging setup will make masking PII Data and occluding screens extremely easier.


Troubleshooting cheat‑sheet

IssueQuick diagnosisSolution
0 s screensDuplicate tag same frame (auto + manual)Disable auto tagging or remove extra tag
Screen missingNavController route not handledAdd case in when(route)
Random class namesForgot to rename in DashboardEdit in Screens tab
Stale name after refactorHard‑coded tag stringUpdate UXCam.tagScreenName() constant

Edge‑cases to watch for

Potential gapWhat can breakHow to guard
Orientation change recreates activityDuplicate tag → 0 s screenDebounce tags or handle configChanges in manifest
Dialogs / BottomSheets within same activityHeat‑map merges with parent screenTag inside show() – e.g. UploadDialog
Split‑screen mode on tabletsSidebar never gains focus → no tagTag from onStart() in multi‑window mode
WebView checkout flowEvery step recorded as “WebViewScreen”Trigger tags via JS bridge on URL change
Dynamic Feature ModulesProGuard strips UXCam call sitesKeep com.uxcam package in base proguard-rules.pro
Deep‑link cold launchFirst screen appears before SDK startInitialise SDK in Application class
Internationalised tag strings“Profile” vs “Perfil” split analyticsTag with a constant key, translate in Dashboard
Rapid tab switchingTags <  300 ms apart collapse to 0 sDebounce tag logic in nav listener

Next Steps:

You've properly tagged screens and are ready to move on! Let's review some next steps you should take.


What's Next? ...