Troubleshooting

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

In order for Contentsquare to work, you need to make sure the following endpoints are not blocked by your network (VPN):

RequestEndpoint
Detail
Config filehttps://mobile-production.content-square.netSee Configuration
Analytics data (EU)https://m.csqtrk.net
https://m.ba.contentsquare.net
https://m.aa.contentsquare.net
See Sending data
Analytics data (US)https://m-aus1.contentsquare.net
https://m.bf.contentsquare.net
https://m.af.contentsquare.net
See Sending data
Monitoringhttps://l.contentsquare.netUsed by the SDK to
send SDK monitoring analysis
in JSON format over HTTPS.
Session Replay data (EU)https://ka-aeu1.contentsquare.net
https://ka.ba.contentsquare.net
https://ka.aa.contentsquare.net
See Session Replay requests
Session Replay data (US)https://ka-aus1.contentsquare.net
https://ka.bf.contentsquare.net
https://ka.af.contentsquare.net
See Session Replay requests
Snapshot (EU)https://s.contentsquare.net
https://b.ba.contentsquare.net
https://b.aa.contentsquare.net
See Snapshot capture
Snapshot (US)https://s-aus1.contentsquare.net
https://b.bf.contentsquare.net
https://b.af.contentsquare.net
See Snapshot capture
Resources manager (EU)https://srm.ba.contentsquare.net
https://srm.aa.contentsquare.net
See Session Replay requests
Resources manager (US)https://srm.bf.contentsquare.net
https://srm.af.contentsquare.net
See Session Replay requests

Error message “Contentsquare SDK cannot execute operation”

Section titled Error message “Contentsquare SDK cannot execute operation”

If the following message appears in the logs:

CSLIB ℹ️ Info:⚠️ Contentsquare SDK cannot execute operation because it hasn't been started.

It means SDK API calls were done incorrectly.

In this case: gestures and lifecycle events won’t be tracked by the SDK.

Two possible explanations exist for this issue:

  • The SDK is manually started and API calls were made before call to start.
  • The SDK is automatically started and API calls were made before the AppDelegate.willFinishLaunchingWithOptions. Ensure that it doesn’t happen or contact our support team if you have a specific need.

Providing a debug build for investigation

Section titled Providing a debug build for investigation
  1. Build your app for iOS device (not simulator)
  2. Open the product folder for your app
  3. Copy the .app from Debug-iphoneos and send it to the Contentsquare team

When using Manual tag injection for dual context (WebView and Browser tracking on the same webpage), the SDK injects a script that may load after the page, causing the wrong tag to load in the WebView. Use one of the following solutions:

  • Add your own user script before the webview loads the page:

    let userScript = WKUserScript(
    source: "window.isWebView = true;",
    injectionTime: .atDocumentStart,
    forMainFrameOnly: false
    )
    webView.configuration.userContentController.addUserScript(userScript)

    Then make sure to include the added script variable in the webview check on the page itself:

    function isWebView() {
    return navigator.userAgent.indexOf('CS_WebView') !== -1 ||
    typeof CSJavascriptBridge != 'undefined' ||
    window.CS_isWebView ||
    window.isWebView; // Your added variable
    }
    /// ...
  • Add a query parameter to the URL of the page you are loading in the WebView:

    URL(string: "https://www.apple.com/?isWebView=1")

    Then add it to the conditions in the page script itself:

    function isWebView() {
    return navigator.userAgent.indexOf('CS_WebView') !== -1 ||
    typeof CSJavascriptBridge != 'undefined' ||
    window.CS_isWebView ||
    new URLSearchParams(window.location.search).get('isWebView') === '1';
    }
    /// ...