DPI Integration FAQ

Conviva Digital Product Insights (DPI) sensor module consists of several basic scripts accessible from the [Conviva GitHub Repositories](https://github.

Updated 2026-06-30 eco, integration, faq, sensor developer center, tools, eco integration

Conviva Digital Product Insights (DPI) sensor module consists of several basic scripts accessible from the Conviva GitHub Repositories with basic README instructions and the related script files for each the supported DPI application platforms. Lightweight integration of Conviva DPI sensor enables automatic, semantic-less data collection. Deploy custom events for advanced metrics and dimension analysis.

Use these FAQs to help answer common questions related to Conviva Digital Product Insights (DPI) sensors integration and the DPI platform support.

FAQs

Category

Question

Answer

Platform and Frameworks

Which platforms are supported by the DPI SDK?

Use these GitHub links to access the platform details.

Which frameworks and libraries are supported for auto-collection?

See the support details:

Hybrid Apps

How do I instrument a hybrid app? (native / webapp)

We support React Native and Flutter Hybrid Apps.

Storage Requirement

What is the device local storage requirement of the DPI SDK?

Events will be dispatched with 250KB size limit or 5 seconds interval.

Initialization

When should I initialize the DPI SDK?

Conviva SDK should be initialized as early as possible, preferably before the first screen loads and first HTTP client object is created.

Events Auto-Collected

Which events are auto-collected by the DPI SDK?

Reference to DPI Metrics.

Events Video to DPI

How do I send events from the VSI SDK to DPI SDK?

With these VSI and DPI SDK versions, Conviva automatically sends video events to the DPI SDK:

Minimum Version DPI SDK Minimum VersionVSI SDK
Android 0.5.2 4.0.30
iOS 0.2.10 4.0.31
JS SDK 0.3.17 4.5.13
C SDK 2.184.0.1 No
Roku 0.2.3 No
Rust 1.0.4 No
React Native 0.2.0 No
Flutter 0.3.9 No

For more details about event support, see Getting Started with Events.

Events and Tags

What is the difference between custom event and custom tag. When to use events or tags?

Custom events need to be used when a specific event needs to be reported from the app at a specific time and with all the details.

Custom tag is recommended when some specific information needs to be reported that remains static through the app sessions (such as device model).

Performance Impact

Will there be any performance impact if I include the DPI SDK in my app?

CPU Performance impact due to Android, iOS, and JS SDK's is 0.5-1%

Logging Levels

What is the recommended log level setting during testing vs production?

Conviva recommends:

  • Disable logging in production

  • Enable it on verbose mode in debug builds.

Performance KPI validation needs to be executed on Production builds.

Other Analytics Tools

We use other analytics in our app. Does the order in which we initialize them matter?

No, the order does not matter.

Validation

How do I verify if my instrumentation is correct?

Verify the basic integrations steps in the integration guide and then access Conviva Pulse to verify the metrics and metadata based on the integrated data.

Troubleshooting and Data Monitoring

Why is the DPI SDK not monitoring data after instrumentation?

Verify that the tracker is initialized with the correct customer key and app name.

Why are some of my network requests missing?

  • Verify the supported network library for auto-ingested events.

  • Verify the SDK point of initialization.

  • Check the default blocklists for:

  • Verify the blocklist and feature enablement in the remote config.

After app startup, the app uses a remote config to decide which analytics to initialize. Is that a problem?

Not initializing the DPI SDK at the time of app launch may cause some events to not be reported.

Also, the app launch time values may not be reported accurately.

Which network requests does the DPI SDK block by default.

Check the default blocklists:

Conviva Cookies Usage

What Conviva stores; why it is essential; and how it aligns with privacy frameworks?

Conviva uses essential cookies to maintain session continuity and enable accurate analytics. No personally identifiable information (PII) is stored in cookies. Conviva's cookie practices are aligned with major privacy frameworks.

React Native Expo Router

How do I track screen views in a React Native app that uses Expo Router?

Expo Router requires a manual trackScreenViewEvent() call from the root layout component to track screen views. Auto-collection of screen views is not supported with Expo Router due to its navigation architecture.

Android Support Details

Android Support Details

FAQs

Question

Answer

Which devices are currently supported by the SDK?
  • Android Mobile

  • Android Tablets

  • Android Smart TV’s

Which development frameworks are currently supported by the SDK?
  • Android Native

  • Jetpack Compose

What is the target SDK version? The SDK is targeted for Android 14 (API level 34).
What is the minimum Android version required to use the SDK? To use the SDK, the devices should run on at least Android 5.0 (Lollipop) version (API level 21).
Which network requests does the DPI SDK block by default. Check the default SDK blocklist.
What is the size of DPI Android SDK? 230 KB (approximate size)
How to get and set the Client ID?
  • Get Client ID:
ConvivaAppAnalytics.getClientId(context);
  • Set Client ID:
ConvivaAppAnalytics.setClientId(context, "client-id");
How do I track events if they are not auto-collected?

Use the trackCustomEvent() API to track all kinds of events. This API provides 2 fields to describe the tracked events:

// eventName - Name of the custom event
// eventData - Data in a JSONObject or a JSON-formatted String
// Set up the event properties JSONObject
JSONObject eventDataJSON = new JSONObject();
eventDataJSON.put("identifier1", intValue);
eventDataJSON.put("identifier2", boolValue);
eventDataJSON.put("identifier3", "stringValue");

String eventName = "your-event-name";

tracker.trackCustomEvent(eventName, eventDataJSON);

Why are some events that are supposed to be auto-collected not reported?

Add the following proguard rules to keep Conviva SDK classes from obfuscation.

-keepnames class * extends android.view.View
-keep, allowshrinking class com.conviva.** { *; }
The Android application is crashing during runtime after adding DPI. What could be the reason?

If multidex is enabled and a multidex-config.pro is being used by the application, please add the following rule to the config.pro – CadActive file.
-keep class com.conviva.
{ *; }

Exclude any classes that you do not want Conviva to track.

// For Android Gradle Plugin version <7.0
// in the app build.gradle
...
android {
...
conviva {
excludePackages = ["com/example/.",
"org/example/."]
}
...
}
// For Android Gradle Plugin version >=7.2
// in the app build.gradle
...
android {
...
conviva {
excludePackages = ["com/example/",
"org/example/"]
}
...
}

Android Gradle Plugin Dependencies

Android Gradle Version Conviva Sensor Version Conviva Plugin Version
Any Android Gradle Version >=0.9.3 0.3.5
7.2 and above >=0.9.0 0.3.3
below 7.2 >=0.9.1 0.2.4
below 7.2 0.9.0 0.2.3

(Mobile Only) Impact to Download/Install Size

Increase in Install Size due to Conviva - 250KB (measured in 0.9.7)

Increase in CPU Usage due to Conviva

(0.5 - 4 %) (measured in 0.9.7)

Network Requests Tracking Blocklist for Android

Network requests tracking is blocked for the default URL patterns:

/ctp

/wsg pings.conviva.com

.m3u8

.mpd .ism

.m4

.ts .jpeg
.jpg .png .bmp
google-analytics.com googlesyndication.com googleapis
stats.g.doubleclick chartbeat.com omtrdc.net
app-measurement.com firebase newrelic
bitmovin.com/impression bitmovin.com/analytics api.segment.io
youbora // NPAW! hotjar mixpanel.com
nr-data.net clevertap auryc // heap.io
.aac .vtt .googlevideo
webp appsflyer facebook
dynatrace mparticle npaw
doubleclick .pdf bookkeeper
kochava mp3 marketingcloudapis
demdex scorecardresearch lura.live
perimeterx.net permutive.app segment.com
vaicore.site boomtrain ketchcdn
qualtrics .svg amplitude
datadoghq branch.io hotjar
splunkcloud heap

Autocollection Details/Limitations

Sensor Version on which the implementation details or limitations are added: 0.9.4

Feature Implementation Details / Limitations Explanation
Network Request

We support only the

  • OKHTTP3 execute/enqueue

  • OKHTTP3 retrofit execute/enqueue

  • HTTPURLConnection/HTTPSURLConnection

Response and Request Body atributes are collected only when the:

  • size is < 10kb and the content-length is available

  • content-type is "json" or "text/plain"

  • data is a JSONObject or Nested JSONObject or JSONArray

Response and Request Headers are collected only when the:

  • data is a JSONObject, Nested JSONObject and JSONArray
  • server is provisioned with "Access-Control-Expose-Headers:"*
Screenview

We support:

  • Activities

  • Android Fragments

  • Jetpack Compose

App or Screen Load times

We support only:

  • Activities

Doesn’t support the:

  • Android Fragments

  • Jetpack Compose

As the screen load times are not reliable and are inaccurate for Fragments/Compose, we will not be able to collect it in future as well.

User Click Tracking

We support any clickable element clicking for:

  • Android Native

  • Jetpack Compose

Traceparent Header Generation

Supported for each request with new traceparent id

App Crashes

We support collecting:

  • Any crash after conviva is initialised

  • Will be trying to send the crash details before the application exits due to crash

We don't support:

  • Any crash before conviva is initialised

Conviva Android SDK listens to the unhandled exceptions leading to app crashes and attempts sending the crash events before app exits. If an app crash event is not sent before the app exists, SDK attempts to send that crash event only after the next app launch, which will be discarded if sent after 90 seconds of original crash timestamp.

iOS Support Details

iOS Support Details

FAQs

Question

Answer

Which Apple devices are currently supported by the SDK?
  • Apple iPhones (iOS)

  • Apple TV (tvOS)

Does the SDK support Apple Watch (watchOS)? No, Apple Watch is not supported at this time.
Which development frameworks are supported by the SDK?
  • Apple Native

  • Swift UI

What is the size of DPI iOS SDK? 700 KB (approximate size)
Which network requests does the DPI SDK block by default. Check the default SDK blocklist.
How to get and set the Client ID?
  • Get Client ID:
//Swift:
let clientId = CATAppAnalytics.sharedInstance()?.getClientId();

//ObjC:
NSString *clid = [[CATAppAnalytics sharedInstance] getClientId];
  • Set Client ID:
//Swift:
CATAppAnalytics.sharedInstance()?.setClientId(clientId);

//ObjC:
[[CATAppAnalytics sharedInstance] setClientId:clid];
How do I track events if they are not auto-collected?

Use the two APIs to track custom events:

/**
* Track custom event.
* @param name Name of the custom event.
* @param data A JSON-formatted string.
 */
- (void)trackCustomEvent:(NSString *)name data:(nonnull NSString*)data;

/**
* Track custom event.
* @param name Name of the custom event.
* @param eventData Dictionary/Array of dictionaries.
 */
- (void)trackCustomEvent:(NSString *)name eventData:(nonnull id)eventData;

Examples:

// Swift:
var eventData = ["identifier1":"test","identifier2":1,"identifier3":true] as [String : Any]
tracker?.trackCustomEvent("your-event-name", eventData: eventData)
// ObjC:
NSDictionary *data = @{@"identifier1":@"test",@"identifier2":@(1),@"identifier3":@(true)};
[self trackCustomEvent:@"your-event-name" eventData:data];
The iOS/tvOS application is crashing during compilation after adding DPI. What could be the reason?

Verify you have added "-ObjC" in Other Linker Flags section in Xcode.

Impact to Download/Install Size

Increase in Install Size due to Conviva - 700 KB

(Mobile Only) Performance Impact(CPU Usage):

  • Streaming is on while taking samples

  • Sent 100 network requests with 50 in parallel

  • Used get request as mentioned in video

Sl No Feature set CPU Usage
1 Without Conviva DPI Sensor 29.1%
2 With Conviva DPI Sensor v0.2.28 37%

Network Requests Tracking Blocklist for iOS

Network requests tracking is blocked for the default URL patterns:

/ctp

/wsg conviva.com
remote_config.json nr-data.net firebase

app-analytics-services.com

newrelic googleapis
.bitmovin.com/impression bitmovin.com/analytics omtrdc.net
chartbeat.com stats.g.doubleclick app-measurement.com
mixpanel.com hotjar google-analytics.com
doubleclick.net googlesyndication.com api.segment.io
youbora auryc heap
clevertap .m3u8 .ts
.m4 .mp4 .mpd
.ism .jpg .png
.jpeg .bmp .aac
.vtt .googlevideo webp
appsflyer facebook dynatrace
mparticle npaw doubleclick
.pdf bookkeeper kochava
mp3 marketingcloudapis demdex
scorecardresearch lura.live perimeterx.net
permutive.app segment.com vaicore.site
boomtrain ketchcdn qualtrics
.svg amplitude datadoghq
branch.io hotjar splunkcloud

Auto-collection Details / Limitations

Feature

Implementation Details / Limitations

Explanation

Traceparent Header Generation

Not Implemented yet, Once implemented will be auto-collected.

No planned date as of now.

Application Not Responding

Not Implemented yet, Once implemented will be auto-collected.

No planned date as of now.

Network Request

Supports

  • NSURLSession

  • NSURLConnection

Screen View

We support:

  • iOS/ tvOS Native

  • Swift UI

App Crashes

We support collecting:

  • Any exception after conviva is initialised

  • Will be trying to send the crash details before the application exits due to crash

We don't support:

  • Any crash before conviva is initialised

  • If we cannot send before the application exit, it will be attempted only after next launch, which will be discarded if sent after 90 seconds of original crash

  • Memory corruptions & dangling pointers crashes (EXC_BAD_ACCESS KERN_INVALID_ADDRESS) are missing

Web (JS/React) Support Details

Web (JS/React)

FAQs

Question

Answer

Which devices are supported by the SDK?
  • All Web Browsers

  • Smart TV’s Web Apps

Which development frameworks are supported by the SDK?
  • HTML-based Web Apps

  • React-based Web Apps

  • Angular-based Web Apps

What is the size of DPI JS(Web) SDK? 141 KB (approximate size)
Which network requests does the DPI SDK block by default. Check the default SDK blocklist.
What defines a 'page view' event in an app?

The definition of a page view event depends on the type of application:

  • For Multi-Page Applications (MPAs), each full page load counts as a new view.

  • For Single-Page Applications (SPAs), a page view may be triggered by a route or URL path change.

Optionally call trackPageView() based on how navigation is handled in the specific app, to enable the associated metric Average Largest Contentful Paint Time.

Is the trackPageView() call mandatory for tracking page view events? No, the trackPageView() call is optional for the Conviva JS SDK. However, most customers use it to track the page views and collect important metric Average Largest Contentful Paint Time.
When should I call trackPageView()?

Call trackPageView() whenever a significant page navigation occurs, such as a full page load, route change, or in-app view transition, to track page views. You have complete control over when to trigger trackPageView(). Conviva recommends calling trackPageView() only after a page is ready, meaning the content is both visible and usable. Avoid invoking it during the initial DOM load.

Example:

trackPageView(); // Uses document.title
trackPageView({ title: "Custom Page Title" });
What if I forget to call trackPageView()?

If you skip the trackPageView() call during a navigation event, that page view won’t be recorded. Hence, the associated metric (Average Largest Contentful Paint Time) will not be displayed correctly in the Pulse dashboard. Remember, Conviva does not auto-capture any missing page views.

How to get and set the Client ID?
  • Get Client ID:
import {
	convivaAppTracker,
	getClientId,
} from '@convivainc/conviva-js-appanalytics';

convivaAppTracker({
	appId: 'YOUR_APP_NAME_AS_STRING',
	convivaCustomerKey: 'CONVIVA_ACCOUNT_CUSTOMER_KEY',
	appVersion: '1.1.0',
});

// Always call getClientId() after initializing convivaAppTracker()
clientId = getClientId();
  • Set Client ID:
import {
	convivaAppTracker,
	getClientId,
} from '@convivainc/conviva-js-appanalytics';

// Always call setClientId() before initializing convivaAppTracker() to set a specific clientId
setClientId(clientId);

convivaAppTracker({
	appId: 'YOUR_APP_NAME_AS_STRING',
	convivaCustomerKey: 'CONVIVA_ACCOUNT_CUSTOMER_KEY',
	appVersion: '1.1.0',
});
How do I track events if they are not auto-collected?

Use the trackCustomEvent() API to track all kinds of events that are not auto-collected.

This API provides 2 fields to describe the tracked events:

name - Name of the custom event

data - Any type of data in JSON format.

import { trackCustomEvent } from '@convivainc/conviva-js-appanalytics';

let customData = {
	identifier1: 'test',
	identifier2: 1,
	identifier3: true,
};

trackCustomEvent({
	name: 'Custom Event Name',
	data: customData,
});

Why are my application page views not being auto-collected?

When you navigate within a single-page application, new pages are not loaded, so they will not be tracked as page views.

To track page views in single page applications, call the trackpageview API.

Is Conviva SDK hosted on a CDN?

Conviva prefers using npn as it improves the speed of execution at app startup. Due to this reason, it is not hosted on a CDN.

To host the DPI SDK on a CDN, use the script version of the JS DPI SDK: GitHub - Conviva/conviva-js-script-appanalytics: App analytics sensor specially made for JS script tag based integrations.

Impact to Download/Install Size

Sensor Version Download Size
v0.6.8 141KB

(Web Only) Performance Impact

These results based on actual Conviva customer data.

Process Memory

For web applications the AverageUsage(Mbytes) is calculated based on the actual running time of the web application.

MinUsage, MaxUsage, AverageUsage refer to the process memory (Mbytes) used during a video player application.

App config MinUsage **( Mbytes ) MaxUsage ( Mbytes ) AverageUsage ( Mbytes ) Duration
Conviva DPI Sensor v0.6.8 28.3 180.64 101.60 7 minutes 22 seconds
Without Conviva DPI Sensor 22.36 179.62 103.42 7 minutes 46 seconds

Network

AverageReceivedSpeed :- Referring to the average data receive speed over network(KB/sec) in a given duration,

AverageSendSpeed: Referring to the average data send speed over network(KB/sec) in a given duration.

SendTotal: Referring to the total data send over network(KB) in a given duration.

Network Requests Tracking Blocklist for Web (JS/React)

Network requests tracking is blocked for the default URL patterns:
cws.conviva.com /wsg /ctp
remote_config pings.conviva.com .m3u8
.mpd .ism .m4
.mp4 .ts .png
.jpg .jpeg .bmp
google-analytics.com googlesyndication.com googleapis
stats.g.doubleclick chartbeat.com omtrdc.net
app-measurement.com firebase nr-data.net
newrelic bitmovin.com/impression bitmovin.com/analytics
api.segment.io youbora hotjar
mixpanel.com clevertap auryc
.aac .vtt .googlevideo
webp appsflyer facebook
dynatrace mparticle npaw
.pdf bookkeeper kochava
mp3 marketingcloudapis demdex
scorecardresearch lura.live perimeterx.net
permutive.app segment.com vaicore.site
boomtrain ketchcdn qualtrics
.svg amplitude datadoghq
branch.io hotjar splunkcloud

Auto-collection Details/Limitations

Sensor Version on which the implementation details or limitations are added: 0.6.8

Feature Implementation/Limitations

Network Request

We support only :

  • XMLHttpRequest

  • fetch

Page View

Page Title can be passed as part of trackPageView api, if title is not set then page title is autodetected using api document.title when trackPageView api is called.

Button Click Tracking

We support click on input element type button or if element tag name is button.

if customer application adds stopPropagation or preventDefault in there button click event listener then conviva will not be able to detect the click.

Link Click Tracking

We support link click tracking on element if element tag name is .

if customer application adds stopPropagation or preventDefault in there link click event listener then conviva will not be able to detect the click.

Application Not Responding

Not Implemented yet, implemented will be

Autocollected

React Native

Feature Implementation/Limitations

App or Page Load Time

Not available, will be via API

Application Not Responding

Not available in iOS, will be autocollected.

Traceparent Header Generation

Not available in iOS, will be autocollected.