Troubleshooting

This section provides pointers to help you solve issues you can run into the Flutter SDK.

For sessions to be tracked:

SDK is not working on my hybrid app

Section titled SDK is not working on my hybrid app

Contentsquare SDK is not compatible with hybrid applications.

Cannot see in-app features on iOS

Section titled Cannot see in-app features on iOS

In-app features requires a specific configuration on iOS.

I lost some zoning data after changing my widget tree

Section titled I lost some zoning data after changing my widget tree

Contentsquare SDK uses zoning identifier that relies heavily on the structure of the widget tree. Changes to the widget tree such as moving, nesting, or removing a widget may result in the loss of tracking data.

The Contentsquare Flutter SDK provides the ReliableTarget widget, designed to encapsulate the widget intended for reliable tracking.

Transactions are sent multiple times

Section titled Transactions are sent multiple times

A common mistake is to trigger the sending when the confirmation screen is displayed. This leads to triggering the transaction each time the user puts the app in background and then in foreground on the confirmation screen.

Cannot see images and texts are incomprehensible in Session Replay

Section titled Cannot see images and texts are incomprehensible in Session Replay

By default, the ContentsquareRoot widget masks all types of content (texts, text fields, and images) during replays. It achieves this by providing a default MaskingConfig object if none is specified.
The default configuration masks everything, ensuring that sensitive information is protected.
However, you can override the default masking behavior by providing your own MaskingConfig object when creating a ContentsquareRoot widget. This allows you to customize the masking rules for your app according to your requirements. See MaskingConfig for more information.

Masking / Unmasking Session Replay using in-app features settings is not reflected in the player

Section titled Masking / Unmasking Session Replay using in-app features settings is not reflected in the player

The masking / unmasking of Session Replay through the in-app features settings is not yet supported by the Flutter SDK.

This setting is intended for debugging purposes only. See MaskingConfig for more information.

Session Replay is enabled but I see nothing when connecting to the URL

Section titled Session Replay is enabled but I see nothing when connecting to the URL

Put your app in background to trigger the sending of the session to the server.
Session Replay is not instantaneous and takes from 5 minutes to 30 minutes to be available.

For Session Replay to work, sessions must be tracked:

My replays not an exact rendering of my app

Section titled My replays not an exact rendering of my app

There is no collection of the user’s screen, but rather a reconstruction interactions based on the data collected by the SDK.
The rendering may not be pixel-perfect, but it should give you a good idea of how users interact with your app. There are some known limitations to the Session Replay feature.

If you notice a limitation that is not referenced in our documentation, contact us.

Session Replay requests are not sent from an Android emulator / iOS simulator

Section titled Session Replay requests are not sent from an Android emulator / iOS simulator

If you struggle to watch a replay collected on an emulator/simulator, it may be due to some network constraints applied on your computer (VPN, company network restrictions, etc.). Check your configuration and/or use a real device.

For more information about our endpoints and requests, see:

It is important to remember that an app kill does not end a session.
See Session definition for more information.

If you leave the simulator/emulator running with the app in foreground, the session will not end, even if you are inactive. To better reflect actual end user behavior and avoid unusually long sessions (last hours), put the app in background or kill it.

I use an HttpOverrides.global does not work

Section titled I use an HttpOverrides.global does not work

During the initialization, the Contentsquare SDK overrides the HttpOverrides.global property.

Avoid overriding HttpOverrides.global in your app.
If you have to, see Use a custom HttpOverrides.

SwiftContentsquarePlugin was registered twice

Section titled SwiftContentsquarePlugin was registered twice

There is a known issue with the background_locator plugin which causes Contentsquare plugin to be registered twice. This issue has been mitigated and you can ignore this warning.

If you are not using the background_locator plugin and encounter this warning, contact us.

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