For the complete documentation index, see llms.txt.

Track Webviews

The latest CSQ SDK is here! Learn how to upgrade your app.

WebView tracking links the Contentsquare SDK to the JavaScript tag running inside your WebViews to support analytics and Session Replay for web content displayed within your app.

Where to inject your WebViews?

Section titled Where to inject your WebViews?

It is essential that you inject your WebViews in viewWillAppear().

Additionally, when setting a delegate on your WebView, ensure that it is implemented and set before calling Contentsquare.register(webView: WKWebView). If this order is not respected, your delegate will not receive any callbacks.

Use the following API:

// Start tracking the given WKWebView
Contentsquare.register(webView: WKWebView)

To complete the implementation, inject the CS Tag in WebView mode on your pages.

See 📚 Mobile Apps WebView Tracking Documentation.

Let's illustrate our implementation with a UIViewController. In your viewWillAppear() method, add the following:

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Inject the Bridge between the CS Tag in WebView mode and the SDK
Contentsquare.register(webView: webView)
}

Once you open the screen with the tracked WebView in your app, you should see the following logs in sequence:

  1. WebView registered:

    CSLIB ℹ️ Info: [WebView] Registering WebView on native side for page: [URL]. Waiting for Web Tracking Tag messages…
  2. Web page loaded:

    CSLIB ℹ️ Info: [WebView] Navigated to new page: [URL]. Waiting for Web Tracking Tag messages…

Once the Web Tracking tag runs in the web page, you should see the following logs in sequence:

  1. JavaScript bridge detected:

    CSLIB ℹ️ Info: [WebView] CSJavascriptBridge is detected on page: [URL]
  2. Tag configuration received — confirms successful tag to SDK communication:

    CSLIB ℹ️ Info: [WebView JS log] (TAG_CONFIGURATION) [Config]

Validating Pageview and Gestures tracking

Section titled Validating Pageview and Gestures tracking

Page views sent through the Web Tracking Tag are displayed the same way as native screen views:

CSLIB ℹ️ Info: Screenview - Screen name: "{{page name given}}" - Screen number: 11

Taps and swipes detected by the Web Tracking Tag are also displayed the same way as taps and swipe on native elements, but the end of the target contains HTML DOM elements:

CSLIB ℹ️ Info: Tap - Target: ...>UIViewControllerWrapperView:eq(0)>UIView:eq(0)>WKWebView:eq(0)|webview|img#picture-holder