Why did the number of my sessions suddenly increase?
This is because we've upgraded and improved the sessionization process in our pipeline. As more data are being processed (sessions, events, screenviews, etc.) you will see an increase of the number of sessions, as well as a variation of other metrics.
Check out this article for more details on the new sessionization process and how it impacts your analysis at Contentsquare in a positive way.
What is SDK
SDK stands for "Software Development Kit". It’s a set of software tools and programs used by developers to create applications for specific platforms. The Contentsquare SDK is the equivalent of the tracking tag for the web, but for apps, not desktop or web browsing on mobile. It will have the same role as a tag on a website:
- It is embedded into your app. It is the same for all customers.
- Once installed on your device, Contentsquare SDK will track the data and send it to Contentsquare's servers.
How is data collected?
Data is collected via the Contentsquare SDK for Android and iOS (those are 2 distinct SDKs with similar features).
The SDK is easy to install (one line of code) and autostarts when the app launches.
-
If the device has internet connection, the SDK will fetch the unique config file (stored on our server) linked to the App ID. Once it gets the config, it applied it, and start tracking.
See schema
A minimum implementation is required before the SDK starts tracking: you need to implement the code to track screen views.
Is the data sampled?
Yes, if stated in your contract. We sample data on a user level. A user is one app installed on one unique device. The sample rate is determined for each app (according to the contract) and can be changed if needed. (For more information, contact your CSM).
How is a session defined at Contentsquare?
A session ends after 30 mins of inactivity. If you hide or kill the app, your session will still continue as long as you come back within 30 mins. Note that sessions without at least one screenview will be discarded.
What does two screen groups with the same screen name in a row mean in Journey Analysis?
Two screen groups views with the same screen name in a row in Journey Analysis indicate that the user put the app in the background (phone call, reading text, other app, etc.) and returned back to the app before the session renews. This behavior will automatically leverage a new screen group view, with the same screen name in the user journey.
See picture
Is user consent required before the session can start?
User consent is not always required. The session can start in either case:
- User consent is required. The SDK won't track any data as long as the consent hasn't been approved. Once the consent is approved, it is sent to the SDK by calling the opt-in API. The session will start from the first screenview.
- User consent is not required. The SDK will start tracking the user data from the first screen view.
How to enable CS In-app features?
The “In-app features activation” allows you to activate and deactivate the SDK features using a custom URL (“deeplink”) available via a QR code. Make sure the app is launched on your mobile, open the in-app features modal from the menu and scan the QR code. If you don't have a mobile, you can copy the link of this same modal and paste it on your Emulator (Android) or Simulator (IOS), to trigger the feature.
What is a screen view?
A screenview is the equivalent of a page view for the web. Screen views are triggered when the SDK API "Send Screenview" is called in the code of the client app.
Example: from the "home screen" to the "my account screen".
Screen tracking requires manual implementation from your developers' team.
Each screen view is also sending a "screen name" which is used to identify the different screens of the app.
How snapshots are captured in Experience Analytics Mobile?
To capture snapshots, use the 'in-app features' on your mobile phone and simply press the snapshot button that will be visible on every screen you're browsing. These snapshots can only be taken by you on your device. They are not captured from your end-users device. This method is safe from capturing directly identifying personal data. Note that a triggered screen view event is required before snapshots can be captured.
Mappings for Apps work almost the same way as for web projects. The SDK generates screen views with a screen name. The screen names are given by the developer implementing the screen tracking. You create a mapping with Mapping assistant or by selecting the screen names you want or by creating conditions on the screen names like you're used to for the web.
Are Webviews supported?
WebView are containers opening web content. They can play a critical part in understanding a user behavior through the Analytics modules or Session Replay.
Snapshots containing webviews will render the content, so you can create zones and display metrics on the webviews.
They are fully supported in Experience Analytics Mobile for iOS, Android, React Native and Flutter.
More details on the implementation process for Android
More details on the implementation process for iOS
What's the impact in Experience Analytics Mobile modules without Webview tracking?
See examples in Experience Analytics Mobile modules ⌄
Session Replay - How does the sampling policy work?
Session Replay - Data retention
By default, the data retention is set to 30 days and can be extended to 92 days, depending on your contract.
Note that if you extend the data retention to 92 days, those 92 days won’t come retroactively. You will need to wait for 62 days to get a full 92 days retention time for Session Replay.
Session Replay - Personal data automasking
As Personal Information can't be stored, by default Session Replay for Apps will mask the content of what is displayed on the UI (texts and images). However, as full personal data masking can make the replay difficult to assess, CS proposes masking/unmasking specific components by type and instance in order for masking to be more specific, and mask only part that really could convey personal data. These methods require a specific implementation effort from your developer's team. Please check out the implementation documentation.
iOS personal data masking implementation process
Android personal data masking implementation process
Why is the masking method different for iOS and Android?
In order to provide the best performance and quality, we took different approaches on Android and iOS to adapt to each platform. While on Android, we convert each element of the UI as images (including text), on iOS, we are able to collect text and style properties to render them with accuracy. The images and text will be thus blurred on Android, while on iOS, the text will be replaced by “lalala” and images by placeholders.
As far as the personal data storage is running, no personal data will be unmasked. Masking is done on the SDK side then sent, so Contentsquare only stores what you actually see in the replay.
What are the different types of Mobile Apps ?
Native mobile apps are designed to be “native” to one platform, whether it’s Apple iOS, Google’s Android. They are written in the native language of the OS, are downloadable from the store for the final user, and run on the OS of the device.
Benefits: It was developed specifically for the platform, it can operate more quickly and intuitively, and make full use of device's hardware capabilities.
These apps are installed on devices just like native apps, but they are not fully developed in OS native language: they are written and/or rendered in non-native languages.
Yet they are downloadable from the store for the final user and run on the OS of the device.
Benefits: Even though hybrid apps are not as fast or reliable as native apps, they have a greater capacity for streamlining the development process. You don’t have to build and maintain apps for separate platforms, your business can save on time and resources. It’s ideal for apps that primarily deliver content.
What are the development technologies supported by Experience Analytics Mobile?
On native mobile apps
-
iOS: Swift / Objective-C
-
Android: Java / Kotlin
On cross-platform apps
-
Apps rendering in native UI but written in non-native UI components:
-
React Native is a framework (maintained by Facebook) used to write apps using Javascript. The UI created is relying on native UI Views.
-
Xamarin is a framework (maintained by Microsoft) used to write “ apps” in .NET and render them in native UI components.
-
NativeScript is a framework similar to React Native used to write “apps” in Javascript and render them in native UI components.
-
-
Apps written in non-native languages and rendered in non-native UI components:
-
Flutter is a framework (maintained by Google) used to write apps in Dart and render them on a canvas using custom proprietary widgets to build the UI.
-
-
Web-based mobile apps written and rendered in web UI.
Their stack usually combines a wrapper framework and a front-end library specialized in cross-platform UI components:-
The wrappers: Capacitor (maintained by Ionic) & Apache Cordova (maintained by Adobe and also known as PhoneGap in its commercial form) are frameworks wrapping an HTML/JavaScript app into a native container that can access the device functions of several platforms
-
Ionic is the most popular front-end library that is usually used with Capacitor or Cordova. But apps can also use standard front-end libraries or simple front end.
-
Web-based mobile apps are downloadable from the store and run on the device’s OS.
What are the specificities of Flutter?
Flutter is a framework created by Google. It is used to write apps in Dart and render them on a canvas using custom proprietary widgets to build the UI. Because widgets are UI elements developers use to build the UI, the parsing of the UI has to be done by Contentsquare Flutter plugin, which is responsible for generating the target view path for gesture tracking and generating snapshots for zoning.
Read more about Flutter zoning targets
Unlike native iOS & Android apps, Flutter has the particularity to generate a very deep UI tree (composed of widgets). This meant very long targets, impacting the performance & data consumption when generating gesture events or capturing snapshots. Therefore it was decided to compress the targets in order to reduce the impact.
Note: Flutter apps will only capture what is visible on screen. It is similar to the “static snapshot” method for Android.