Getting Started

Welcome to the SDK implementation guide!

This guide is designed to help you seamlessly integrate our SDK into your application. By following the outlined steps, you’ll be able to collect and analyze data from your app, within just a few minutes.

Before implementing the SDK, make sure your app meets the following technical prerequisites to avoid integration issues and ensure optimal performance.

RequirementVersion
Android SDKAPI level 21 (Android 5.0, Lollipop) and later
Compiled against SDK version 34
JavaJava 17 (bytecode version 61)
Kotlin1.8.22
Jetpack Compose1.5.0 (bom 2023.08.00)

Provide your application ID to Contentsquare

Section titled Provide your application ID to Contentsquare

Provide the applicationId property from your build file to Contentsquare.
This ID is required to generate your project configuration.

build.gradle
android {
namespace 'com.example.testapp'
compileSdk Versions.compileSdkVersion
defaultConfig {
applicationId "com.example.testapp"
minSdk Versions.minSdkVersion
targetSdk Versions.targetSdkVersion
versionCode 1
versionName "1"
}
// ...
}

Validate Contentsquare account and project ID

Section titled Validate Contentsquare account and project ID

Once your project is created, ensure you have access to:

  • A Contentsquare account
  • A valid project ID

Each project ID corresponds to a specific data collection setup.

In Contentsquare, ensure that the applicationId you provided matches the one in Contentsquare.

If it doesn’t or if you can’t connect to Contentsquare, reach out to your Implementation Manager.

Our Android SDK is shipped as an Android library (AAR) which you need to add as a dependency to your Gradle file.

For distribution of our API we use Maven Central Repository which is supported by the Android build system by default. To add our SDK (or library), add the following line to your application’s dependency list.

build.gradle
implementation "com.contentsquare.android:sdk:0.4.0"

The SDK autostarts when your application launches, requiring no manual initialization.

If you are using with an older Kotlin version, see Compatibility.

Start your application, and check logs for this output:

CSLIB: Contentsquare SDK 4.35.0 starting in app: com.example.testapp

If the SDK isn’t working, verify that your app’s package name is tied to a Contentsquare project. Make sure you’ve communicated all variants of your app identifier to your Contentsquare.

Contentsquare provides logging capabilities that allow you to inspect the raw event data logged by your app in Android Studio or on the Contentsquare platform.

To view all logs, you must enable in-app features: logging is linked to in-app features being enabled or disabled.

Viewing logs in Android Studio

Section titled Viewing logs in Android Studio

To view SDK logs:

  1. Plug your Android phone into your computer (or use an emulator)
  2. Open Android Studio and start your app
  3. Open the Logcat view and select your phone or emulator
  4. Filter logs by CSLIB

In-app features are essential for your implementation, as it includes key functionalities like snapshot creation and replay configuration.

To enable in-app features within your app, make sure your app is launched in the background. To do so, start it and press the Android home button. Then, follow the appropriate method described as follows.

On a device: scan the QR code

In Contentsquare, select the Mobile icon in the menu top bar and scan the QR code with your phone.

On an emulator: use the ADB command

If you are using an emulator, use the ADB command to enable in-app features.

In Contentsquare, select the Mobile icon in the menu top bar then select your application ID, and “Copy this ADB command”.

The following command is copied to the clipboard:

Terminal window
adb shell "am start -W -a android.intent.action.VIEW -d cs-{{packageName}}://contentsquare.com?activationKey={{uniqueActivationKey}}\&userId={{userId}}"

To execute the ADB command:

  1. Plug your Android phone into your Computer (or use an emulator).
  2. Make sure that only one phone or emulator is connected or running.
  3. Start Android Studio.
  4. Open the Terminal view.
  5. Paste the ADB command into the Terminal and press Enter.
  6. Switch to your phone or emulator and follow the steps on the screen.

Log Visualizer is a feature integrated into the Contentsquare SDK. As you navigate and interact with your app, it provides a live view of events detected by the SDK, visible directly on the Contentsquare platform.

  1. Start your app.
  2. Select the Mobile icon in the menu top bar then select Log Visualizer.
  3. Select the device to inspect.

At this stage, you should see an ‘App start’ or ‘App show’ event being logged.

Contentsquare collects usage data from your app users. To start tracking, you need your users’ consent for being tracked.

The SDK treats users as opted-out by default.

To start tracking, the SDK Opt-in API must be called. Calling this method generates a user ID and initiates tracking.

Handle user consent by implementing a UI for privacy preferences. Assuming you have an opt-in screen with a button to give consent, the code could look like this:

import com.contentsquare.android.Contentsquare;
Button optinButton = ...
optinButton.setOnClickListener(view -> {
Contentsquare.optIn(view.getContext());
// Then finish initialization and move to the next screen...
});

Contentsquare aggregates the user behavior and engagement at the screen level. Start your SDK implementation by tracking key screens like the home screen, product list, product details, or conversion funnel.

Screen tracking is achieved by sending a screenview event each time a new screen is displayed on the user’s device.

To trigger a screenview each time an activity becomes visible, place the call in the onResume() method (XML layouts only):

import com.contentsquare.android.Contentsquare;
public class MyActivity extends Activity {
@Override
public void onResume() {
super.onResume();
// Send screenView
Contentsquare.send("screen_name");
}
}

To enable Jetpack Compose support, add a new dependency to your Gradle build file.

build.gradle
implementation 'com.contentsquare.android:compose:4.35.0'

Attention must be paid to recompositions. The call should be wrapped using TriggeredOnResume to ensure only one screenview is triggered when a given screen is presented to the user.

import com.contentsquare.android.Contentsquare
import com.contentsquare.android.compose.analytics.TriggeredOnResume
@Composable
fun MyComposable(data: Data) {
TriggeredOnResume {
Contentsquare.send("screen_name")
}
// ...
}

Implementation recommendations

Section titled Implementation recommendations

From a functional perspective, a screenview should be triggered in the following cases:

  • When the screen appears on the device
  • When a modal or pop-up is displayed
  • When a modal or pop-up is closed, returning the user to the screen
  • When the app is brought back to the foreground (after being minimized)

Most events collected by the SDK require a screenview event to be sent first so they can be associated with that screen; otherwise, they will be discarded. If you need to collect events from the moment the app launches, you should trigger a screenview event immediately after the SDK has started.

Refer to our guide for implementation examples.

It is necessary to provide a name for each screen when calling the screenview API.

As a general rule, keep distinct screen names under 100. As they are used to map your app in Contentsquare, you will want something comprehensive. The screen name length is not limited on the SDK side. However, the limit is 2083 characters on the server side.

More on screen name handling.

Testing your SDK implementation is essential to make sure data is being accurately captured and reported.

To test your setup, simulate user interactions in your app and check that the events are logged correctly in our analytics platform.

You can also use debugging tools such as Android Studio or Log Visualizer to monitor data transmission and ensure everything is running smoothly.

Visualize events in Contentsquare

Section titled Visualize events in Contentsquare

Use Log Visualizer to view incoming events within the Contentsquare pipeline. This allows you to monitor the stream in real time.

By simulating user activity, you see incoming screenview and gesture events.

Visualize data in Contentsquare

Section titled Visualize data in Contentsquare

Open Journey Analysis in Contentsquare and visualize the user journeys main steps across your app, screen by screen.

See how to use Journey Analysis on the Help Center.

Open Session Replay in Contentsquare and replay the full user session across your app.

See how to use Session Replay on the Help Center

To explore some of these features in context, check our Android sample app.

Android-sample-app

A sample app giving an example implementation of the Contentsquare SDK

Kotlin 10

While screen tracking gives an overview of user navigation, capturing session, screen, or user metadata provides a deeper understanding of the context behind user behavior.

Our SDK offers a wide range of features to enhance your implementation, including Session Replay, Error Monitoring, extended tracking capabilities, and personal data masking.

Proceed with these how-to’s to refine your implementation.