Zipy
  • Welcome to Zipy ai
  • Getting Started
    • Install Zipy
    • Installing with Google Tag Manager
    • Supported frameworks
    • Security Overview
    • Sensitive User Data
    • SOC2 Type II
  • Zipy For Mobile
    • React Native Setup
      • Install React Native
      • Input Masking
      • Session Replay
      • Screen Transition Capture
      • Gesture Capturing
      • Unhandled Exception Capture
      • Custom Logging
      • Fetch and XHR Network Calls
      • Profiling
      • Device Information Capture
      • Session URL Retrieval
      • Identify Users
      • Firebase Integration
    • Flutter Setup
      • Install Flutter
      • Session Replay
      • Input Masking & Custom Masking
      • Screen Transition Capture
      • Gesture Capturing
      • Unhandled Exception Capture
      • Custom Logging
      • Http Network Calls
      • Dio Network Calls
      • Profiling
      • Device Information Capture
      • Session URL Retrieval
      • Identify Users
      • Firebase Integration
      • Session Recording Control
      • Data Sanitization
  • iOS Setup
    • Install in an iOS app
    • Identify Users
    • Screen Tracking & Tagging
    • Custom Logging
    • Session URL Retrieval
    • Session Recording Control
    • Input Masking & Custom Masking
  • Chrome Extension
    • Zipy Plug and Play Support
  • Configure
    • Zipy Recording Control
    • Release Version
    • Identifying Users
    • Adding Custom Identifiers
    • Anonymize Users
    • Source Maps
    • Blocking PII data
    • Ignoring Errors/Noise
    • npm Update
    • Support Integration
    • Session Stitching (rootDomain)
  • Product Features
    • Custom Events
    • Session Replay
    • Errors
    • Analytics
    • Time Filters
    • Multiple Filters
    • Clicked Element Filters
    • Manage Teams
    • Stack Trace
    • Console Logs
    • Network Requests
    • Network Headers and Payload
    • Custom Logs
    • Live Users
    • Alerts
      • Slack Alerts
      • Email Alerts
      • Live Alerts
    • Auto Resolve Errors
    • Zipy Labels Plugin
    • iFrame Support
    • API Performance
    • Heatmaps
    • Page Performance
    • Seen/Unseen Sessions
  • FAQs
    • Install Zipy
    • Session Replay Definition
    • Error Tracking
    • Error Classification
    • Environment Support
    • Impact on your App
    • Performance Impact
    • Mobile Support
    • Network Data Capture
    • API Performance Diagnostic Help
      • High DNS Time
      • High SSL Connection Time
      • High Connection Setup Time
      • Large API Response Size
      • High Response Time
      • Compression Not Enabled
      • Server side API Failures
      • Client side API Failures
      • Insecure Connections
  • Troubleshooting
    • Errors in npm
    • Network header missing in Zipy
    • Can't see user data in sessions
    • No recordings or errors visible
    • No network timing split available
  • Product Videos
    • Ask AI
    • Getting Started
    • Session Replay
    • Multiple Project Creation
    • Team Management
    • Alerting on Slack
    • Time Filters and Daily Alerts
    • Custom Identifiers
    • Ignore Errors
    • Identify Users
    • Dashboard
    • Resolve Errors
    • New Error Digest
    • Jira and Slack
    • Online/Offline Network Status
    • Zipy on Zipy
      • Zipy Product Roadmap
  • Whats new
    • Product Updates
  • Legal & Policy
    • Terms of Service
    • Privacy Policy
    • Fulfillment Policy
    • Cookie Policy
    • Acceptable Usage Policy
    • Zipy Sub Processor List
  • Integration
    • Azure DevOps
    • Factors
    • RB2B
    • Webflow
    • WordPress
    • Amplitude
    • Coralogix
    • DevRev
    • Drift
    • Errorception
    • Freshchat
    • Google Analytics
    • Heap
    • HelpScout
    • Honeybadger
    • Hubspot
    • Intercom
    • Mixpanel
    • New Relic
    • Pendo
    • Raygun
    • Rollbar
    • Segment
    • Sentry
    • Shopify
    • Sumo Logic
    • TrackJS
    • Zendesk
Powered by GitBook
On this page
  • Overview
  • Automatic Screen Tracking
  • Manual Screen Tagging
  • Handling Dynamic Content using Screen Tagging
  1. iOS Setup

Screen Tracking & Tagging

Screen Tracking and Tagging for enhanced user journey analysis

Overview

Zipy’s SDK seamlessly instruments your app to capture every screen transition and view controller name without any extra setup. As users navigate through your interface, Zipy automatically logs screen appearance, and also it takes screenshots on every transition. This hands‑off approach ensures you get comprehensive visibility into user flows from the moment you integrate Zipy, so you can focus on building features instead of writing tracking code.

Automatic Screen Tracking

The SDK automatically tracks screen transitions with some important behaviors to note:

  • View controllers are tracked automatically with their class names

  • View controllers starting with UI, _UI, PU or WK are ignored to prevent system-level tracking

  • No additional code is required for basic screen tracking

Manual Screen Tagging

While an automatic screen will cover almost all the cases, you can implement manual screen tagging when you need to. This can be used in various use cases like tagging popups, tabs, etc. And also, you can update screen names for dynamic content.

  • Override the default screen name

  • Track custom views, popups, or tab changes

  • Add tracking to views that aren't traditional view controllers

Here is an example on how you can use manual screen tagging

import ZipyiOS

class ProfileViewController: UIViewController {
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        Zipy.tagScreenName("UserProfile")
    }
    
    func showCustomPopup() {
        // Tag custom popup view
        Zipy.tagScreenName("ProfileSettings-Popup")
        // Show popup logic
    }
    
    func onTabChanged(index: Int) {
        // Tag different tabs
        let tabName = ["Overview", "Details", "Settings"][index]
        Zipy.tagScreenName("Profile-\(tabName)Tab")
    }
}

Handling Dynamic Content using Screen Tagging

With dynamic screen tagging, you can enrich your analytics by giving each screen a contextual name that reflects its real‑time content—whether it’s a product category, user segment, or custom UI state. Instead of seeing every product detail view under a generic label, you’ll automatically tag them as “ProductDetails‑Electronics,” “ProductDetails‑Apparel,” or whatever category the user is viewing. This makes it easy to filter session replays.

func showProductDetails(product: Product) {
       Zipy.tagScreenName("ProductDetails-\(product.category)")
}

With both automatic and manual tagging, Zipy gives you full control over how screens are identified and tracked, ensuring your analytics align perfectly with your app’s unique structure.

PreviousIdentify UsersNextCustom Logging

Last updated 22 days ago