ECO Metrics
ECO provides a robust set of metrics to enable application performance monitoring and user behavior analysis across your web and native applications. Metric values appear as time series and distributions in metric widgets, and alongside dimensional values in the dimension drill-down tables. Selecting different metric widgets changes the metrics in the dimension tables. All metrics are calculated during the selected time interval. ECO supports several metric types:
-
Metrics associated with user flows: helps in the identification of crucial moments in user journeys to optimize applications and improve the user experience. For example, consider the metrics corresponding to the flow from searching for a video to successfully playing it.
-
Custom metrics associated with initial and follow up events: ECO enables three types of custom metrics.
-
Duration Metric: Measures the time interval between two events, such as the duration between the login screen event and the login success event.
-
Conversion Metric: Measures the count or conversion rates of events from one stage to another, such as the count of sessions with successful login after opening the login screen.
-
Event Aggregation Metric: Measures the number of events, or calculates the value of event attributes, such as the average duration of network requests.
-
Metric Builder provides templates for guided metric creation, cloning existing metrics, and building metrics based on specified settings.
An ECO session starts when any system or user-defined event is received and ends after 90 seconds of inactivity.
Metrics can span a specific interval or a complete session.
-
Session Metrics: Metrics based on data from events that occur throughout sessions that end within the selected time interval, for example App Video Bounce Rate metric from sessions that ended yesterday. If a session starts before the selected time interval but ends within it, the data for that session is still considered for the calculation of the session metrics.
-
Interval Metrics: Metrics based on data from events that occur within a specific interval during sessions, for example, Total Events, the cumulative count of mapped events occurring within a specific interval during sessions.
In addition to the metrics designed by Conviva to optimize your analysis, ECO supports a custom metric builder so you can create customized metrics based on your specific requirements. For more details, see Metric Builder.
Secondary Metric
As primary metrics, Conviva uses a proprietary combination of native and web applications events to provide a rich set of application performance and experience metrics. The Conviva ECO Sensor supports events, such as page_view and network_request.
Selecting a metric widget in ECO also displays a secondary metric that provides a context or related data to help you more completely understand the primary metric. Secondary metrics enhance the interpretation and analysis of primary metrics.
Secondary metrics display in the dimension panel after clicking a metric widget in the metric panel, for example Ended Session Count displays as a secondary metric for App Video Bounce Rate.
Out-of-Box Events
Check the auto-ingested events and minimum player versions for details about auto-collected event support.

ECO provides a robust set of metrics to enable application performance monitoring and user behavior analysis across your web and native applications. Metric values appear as time series and distributions in metric widgets, and alongside dimensional values in the dimension drill-down tables.
Event | Event Source | ||||||||
Android |
iOS |
JS SDK |
C SDK |
Roku |
Rust |
React Native |
Flutter |
||
Network request | After receiving the network request response. | Autocollected, displays in ECO, Device Modeling Dashboard |
Autocollected, displays in ECO, Device Modeling Dashboard |
Autocollected, displays in ECO, Device Modeling Dashboard |
Report manually | Report manually | Report manually | Autocollected | Not available |
Keep alive | Page ping or periodic heartbeat are triggered at 40 seconds of interval. | Autocollected | Autocollected | Autocollected | Autocollected | Autocollected | Autocollected | Autocollected | Autocollected |
Screen or Page view |
Autocollected, On screen interaction, either first launch or re-launch. Also, includes Jetpack compose and fragments for Android and Swift user interface for iOS. |
Autocollected, displays in ECO, Device Modeling Dashboard |
Autocollected, displays in ECO, Device Modeling Dashboard |
Not available | Report manually | Report manually | Report manually | Autocollected | Report manually |
App or Page Load Time | Time for the app to become active after launch | Autocollected | Autocollected | Autocollected | Not available | Report manually | Report manually | Not available | Not available |
Application error |
On error in application | Autocollected, displays in ECO, Device Modeling Dashboard |
Autocollected, displays in ECO, Device Modeling Dashboard |
Autocollected, displays in ECO, Device Modeling Dashboard |
Not available | Report manually | Report manually | Autocollected | Autocollected |
Button click |
On button click callback | Autocollected, displays in ECO, Device Modeling Dashboard |
Autocollected, displays in ECO, Device Modeling Dashboard |
Autocollected, displays in ECO, Device Modeling Dashboard |
Not available | Report manually | Report manually | Autocollected | Report manually |
Link click |
On link click callback | Report manually | Report manually | Autocollected | Not available | Report manually | Not available | Autocollected | Report manually |
Application background |
When application moves to the background | Autocollected | Autocollected | Not available | Not available | Report manually | Report manually | Autocollected | Autocollected |
Application foreground |
When application moves to the foreground | Autocollected | Autocollected | Not available | Not available | Report manually | Report manually | Autocollected | Autocollected |
Application install |
When application is launched for the first time after install (not exactly installed time) | Autocollected | Autocollected | Not available | Not available | Report manually | Report manually | Autocollected | Autocollected |
Deep link received |
On application open using the UTM URL. | Autocollected | Autocollected | Not available | Not available | Report manually | Report manually | Autocollected in Android; Report manually in iOS | Autocollected in Android and JS; Report manually in iOS |
ANR start |
When timer starts for the response from the main thread. If more than 4 seconds, event is triggered. | Autocollected | Report manually | Not available | Not available | Report manually | Report manually | Autocollected in Android; Not available in iOS | Autocollected in Android; Not available in iOS and JS |
ANR stop |
When SDK gets response after triggering anr_start, anr_end is dispatched. | Autocollected | Report manually | Not available | Not available | Report manually | Not available | Autocollected in Android; Not available in iOS | Autocollected in Android; Not available in iOS and JS |
Largest Contentful Paint | Largest Contentful Paint | Not available | Not available | Autocollected | Not available | Not available | Not available | Not available | Not available |
Custom events | Customer-defined events | Report manually | Report manually | Report manually | Report manually | Report manually | Report manually | Report manually | Report manually |
Custom tags | Customer-defined tags in each event to carry the contextual information. | Report manually | Report manually | Report manually | Not available | Report manually | Report manually | Report manually | Report manually |
Application version | Application version, including the build version | Autocollected | Autocollected | Report manually | Not available | Autocollected | Report manually | Autocollected | Autocollected |
Viewer ID | Set viewer/user ID | Report manually | Report manually | Report manually | Report manually | Report manually | Report manually | Report manually | Report manually |
Traceparent Header | Traceparent header generation | Autocollected | Not available | Autocollected | Not available | Not available | Report manually | Autocollected in Android; Not available in iOS | Autocollected in Android and JS; Not available in iOS |
Window loaded event | Web App page view | Not available | Not available | Autocollected | Not available | Not available | Not available | Autocollected in JS; Not available in Android and iOS | Autocollected in JS; Not available in Android and iOS |
Conviva App background before page view | Conviva App background before page view | Not available | Not available | Autocollected | Not available | Not available | Not available | Autocollected in JS; Not available in Android and iOS | Autocollected in JS; Not available in Android and iOS |
With these Video and ECO SDK versions, Conviva automatically sends video events to the ECO SDK:
Platform | Min App SDK | Min Video 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 |
Predefined Mapping Event
ECO offers a comprehensive set of predefined mapped events that enable you to create custom metrics and perform application performance monitoring and user behavior analysis on the Trends dashboard.
In the Scope column:
-
Trends and Activation: The events can be used on the Trends dashboard and all pages in Activation.
-
Activation: The events can be used on all pages within Activation.
-
Metric Builder: The events can be used on the Metric Builder page of Activation.
Predefined Mapped Event |
Raw Event Name |
Mapping Rules |
Scope |
---|---|---|---|
conviva_screen_view | conviva_screen_view | Mapped directly | Trends and Activation |
conviva_page_view | conviva_page_view | Mapped directly | Trends and Activation |
conviva_application_error | conviva_application_error | Mapped directly | Trends and Activation |
conviva_network_request | conviva_network_request | Mapped directly | Trends and Activation |
conviva_window_loaded | conviva_window_loaded | Mapped directly | Trends and Activation |
conviva_app_backgrnd_before_page_view | conviva_app_backgrnd_before_page_view | Mapped directly | Trends and Activation |
conviva_application_foreground | conviva_application_foreground | Mapped directly | Trends and Activation |
conviva_application_background | conviva_application_background | Mapped directly | Trends and Activation |
conviva_application_startup | conviva_screen_view | event_name = 'conviva_screen_view' and os_type in ('android') AND unstruct_event_com_snowplowanalytics_mobile_screen_view_1_0_0.previous_name = 'Unknown' OR event_name = 'conviva_screen_view' and os_type in ('ios', 'tvos') AND unstruct_event_com_snowplowanalytics_mobile_screen_view_1_0_0.previous_id is null | Activation |
- | conviva_session_start | find event that triggerd a new session based on the session definition, and duplicate this event as the session start event | Metric Builder |
- | conviva_session_end | find the session end time based on the session definition, and create a dummy event on this time point | Metric Builder |
conviva_video_play | conviva_video_events | event_name = 'conviva_video_events' AND unstruct_event_com_conviva_conviva_video_events.name = c3.video.play | Activation |
conviva_video_attempt | conviva_video_events | event_name = 'conviva_video_events' AND unstruct_event_com_conviva_conviva_video_events.name = c3.video.attempt | Activation |
conviva_ad_break_start | conviva_video_events | event_name = 'conviva_video_events' AND unstruct_event_com_conviva_conviva_video_events.name = c3.ad.ad_break_start | Activation |
conviva_ad_break_end | conviva_video_events | event_name = 'conviva_video_events' AND unstruct_event_com_conviva_conviva_video_events.name = c3.ad.ad_break_end | Activation |
conviva_video_sdk_init | conviva_video_events | event_name = 'conviva_video_events' AND unstruct_event_com_conviva_conviva_video_events.name = c3.sdk.init | Activation |
conviva_video_set_content_info | conviva_video_events | event_name = 'conviva_video_events' AND unstruct_event_com_conviva_conviva_video_events.name = c3.video.set_content_info | Activation |
conviva_video_bitrate_switch | conviva_video_events | event_name = 'conviva_video_events' AND unstruct_event_com_conviva_conviva_video_events.name = c3.video.bitrate_switch | Activation |
conviva_video_buffering | conviva_video_events | event_name = 'conviva_video_events' AND unstruct_event_com_conviva_conviva_video_events.name = c3.video.buffering | Activation |
conviva_video_pause | conviva_video_events | event_name = 'conviva_video_events' AND unstruct_event_com_conviva_conviva_video_events.name = c3.video.pause | Activation |
conviva_video_end | conviva_video_events | event_name = 'conviva_video_events' AND unstruct_event_com_conviva_conviva_video_events.name = c3.video.end | Activation |
conviva_sdk_custom_event | conviva_video_events | event_name = 'conviva_video_events' AND unstruct_event_com_conviva_conviva_video_events.name = c3.sdk.custom_event | Activation |
conviva_video_custom_event | conviva_video_events | event_name = 'conviva_video_events' AND unstruct_event_com_conviva_conviva_video_events.name = c3.video.custom_event | Activation |
conviva_defined_error | conviva_application_error and conviva_network_request | event_name = 'conviva_network_request' AND responseStatusCode in range 500-510 OR event_name = 'conviva_application_error' AND platform = 'mob' | Metric Builder |
app crash | conviva_application_error | event_name = 'conviva_application_error' AND platform = 'mob' | Trends and Activation |
5XX server error | conviva_network_request | event_name = 'conviva_network_request' AND responseStatusCode in range 500-510 | Trends and Activation |
conviva_<element>_click | conviva_<element>_click |
Mapped directly. Note: <element> can be any UI element (such as button, link, radio_button, checkbox, and div). |
Trends and Activation |
Custom Events
Event Type | Semantic Mapping | Metric Building | Metric in App |
---|---|---|---|
Custom Events |
|
Use mapped events to build metrics. |
Metrics based on the mapped events appear in App pages. |
Video Seek Events: For example, to track and analyze user behaviors when seeking videos, map the custom events seek_forward, seek_backward, seek_bar_dragged_forwards, and seek_bar_dragged_backwards to an event User seek action. |
|||
App Login Events: For example, to track the user login behavior and analyze the login success rate, map the event button_click with the tag key button_click_element_text and the tag value Log in to an event Login Button Click. |
Video Events
Conviva video events (conviva_video_events) are also available using abbreviations as tag keys.
For This Element or Activity |
Use this ECO Event Type |
Tag Keys |
Tag Value |
Platform |
Example Metrics |
---|---|---|---|---|---|
Video events |
conviva_video_events |
an: asset name. avgbr: average bitrate in kbps. br: bitrate in kbps. cen: custom event name. ced: custom event data. cl: content length in seconds. clid: client ID assigned by Conviva to the physical device. err: error message. ft: isFatal, a boolean value indicating whether the error is fatal. fw: framework name in which the media player runs. fwv: framework version. iid: instance ID. When several players run on the same device, each player should have a unique instance ID. lv: isLive, a boolean value indicating whether the content currently playing is Live. mn: module name mv: module version name: device name newsc: new state change oldsc: old state change pn: player name sid: session id identifying the current session, unique on this client. sst: session start time as UNIX epoch time in milliseconds. st: session time from the session start in milliseconds. |
c3.sdk.init for Video SDK init c3.video.attempt for attempt event c3.video.end for session end event c3.video.play for play event c3.video.pause for pause event c3.video.error for error event (c3.isFatal as true/false) c3.video.buffering for buffering start event c3.video.bitrate_switch for bitrate switch event c3.video.set_content_info for metadata change c3.sdk.custom_event, c3.video.custom_event for custom event c3.ad.ad_break_start for ad start c3.ad.ad_break_end for ad end CWSStateChangeEvent for audio, subtitle, and closed captions change events |
JavaScript Android iOS Roku (coming soon, api required) |
Video Attempts Video Plays Video Start Failure Error Video Playback Failure Error |
Out-of-Box Metrics and Metadata
Quickly get started analyzing your user experiences with out-of-box metrics and metadata.

Category | Metrics | ||
App Audience and Engagement |
Out-of-Box ECO Dimensions
Category |
Metadata |
||
---|---|---|---|
App |
App Name Application Build Application Version |
Bundle Info Platform Sensor Version |
|
Device |
Browser Name Browser Version Device Hardware Type Device Manufacturer Device Marketing Name |
Device Model Device Name Device Operating System Device Operating System Family Device Operating System Version |
|
GEO & ISP |
Cities Connection Countries |
ISPs States Zipcode |
|
Page (Web) |
Edited Page Title First Launch Page Host Page Path Page Query |
Page Referrer Page Title Page Url Referrer Host |
|
Screen (Mobile) |
Edited Screen Title Previous Screen Title |
Screen Title | |
Network Request |
Network Request Http Method Network Request Response Code Network Request Url Host Network Request Url Path |
Network Request Url Port Network Request Url Query Network Request Url Scheme |
|
Events | Event Category | Event Name | |
Errors | ANR Reason | Error Message | Stack Trace |
Global Tags | Dimensions that are based on global tags. | ||
Event Tags | Dimensions that are based on event tags. |
ECO Metrics