Metrics
There are three levels of data available for creatives in Cavai Cloud: standard, funnel, and flow.
- Standard — impressions, viewability, and clicks (what you'd expect from any advertising platform)
- Funnel — what happens after the first interaction (open rate, goal completion, engagement depth)
- Flow — granular content-level insights (e.g. how many people chose option A vs. option B)
Data is available at two sampling rates: time-bucketed (hourly, daily, weekly, monthly) and raw interaction-level data.
Availability
- Standard and funnel data through Reports, Time Bucket API, and Streaming API
- Flow data through Reports and Streaming API
- Raw data through the Streaming API and Reports
Reports provide a built-in interface for data analysis, visualization, and export (CSV, JSON, XLSX, PNG, PDF).
Standard metrics
These metrics are available across all reporting interfaces:
| Metric | Description |
|---|---|
| Impressions | Number of creative impressions during the observation period |
| Interacted | Number of impressions that led to any kind of interaction |
| Started conversation | Number of impressions that led to starting the interaction |
| Continued conversation | Number of impressions that led to more than one action in the interaction |
| Finished conversation | Number of interactions that reached the end of the creative |
| Actions | Total number of actions in the interaction |
| Clickthroughs | Number of link clicks |
| Time goal met | Number of interactions that met the configured time goal |
| Time to active | Seconds between impression and first activity |
| Time spent | Total seconds spent in interaction |
| Viewable impressions | Impressions that met the viewability threshold (50% visible for 1+ second). Respects TCF consent. |
Video metrics
When the creative contains a video block, additional metrics are tracked:
| Metric | Description |
|---|---|
| Plays | Number of video plays |
| Watched 25% | Video reached first quartile |
| Watched 50% | Video reached midpoint |
| Watched 75% | Video reached third quartile |
| Watched 100% | Video completed |
Time Bucket API
The Time Bucket API returns data aggregated into time buckets (hourly, daily, weekly, monthly).
Data is available in three value types:
values
Returns absolute values for each metric in each time bucket.
percentile_change
Returns the percentile change relative to the previous observation. Values can be negative; the first observation is always 0%.
rate
Returns rate-transformed values. Each metric is divided by an appropriate denominator:
| Metric | Rate transformation |
|---|---|
| Impressions | No transformation |
| Interacted | Interacted / Impressions |
| Started conversation | Started / Impressions |
| Continued conversation | Continued / Started |
| Actions | Actions / Started (actions per interaction) |
| Clickthroughs | Clickthroughs / Started (clicks per interaction) |
| Finished conversation | Finished / Started |
| Time goal met | Time goal met / Started |
| Time to active | Sum(Time to active) / Started |
| Time spent | Sum(Time spent) / Started |
Streaming API
The Streaming API returns raw interaction-level data. Each record represents a single user interaction with a creative.
| Field | Type | Description |
|---|---|---|
connection_id | varchar | Impression-level ID (group by this to get impression-level records) |
creative_id | integer | Unique identifier of the creative |
creative_group_id | integer | Unique identifier of the creative group |
campaign_id | integer | Unique identifier of the campaign |
time | timestamp | Timestamp of the observation |
seconds_to_active | integer | Seconds between impression and first activity |
seconds_total_active | integer | Total seconds between impression and end of activity |
creative_actions | integer | Total actions in the interaction |
clicked_link | integer | 1 if a link was clicked |
time_goal_met | integer | 1 if the time goal was met |
time_goal_seconds | integer | Time goal threshold in seconds |
reached_end | integer | 1 if the interaction reached the end |
reached_goal | integer | 1 if the interaction reached the creative's goal component |
reached_input | integer | 1 if the interaction reached an input field |
interaction_components_shown | integer | Number of flow components rendered |
url | varchar | Full creative placement URL |
link_url | varchar | URL(s) of links clicked in the creative |
input_data | varchar | Input data captured in the creative |
object_type | varchar | Type of the flow component (e.g. Text, Choice) |
level | varchar | Level number in the interaction flow |
choice | varchar | Choice number on a given level (unique per level) |
prev_object | integer | Previous flow component ID (useful for comparing flow drop-off) |
TIP
To group raw interaction data into impression-level records, use connection_id.
Viewability tracking
The Creative Engine tracks viewability using the Intersection Observer API with a 50% visibility threshold. A creative is marked as "viewable" after 1+ second of continuous visibility. Visibility time is tracked in buckets: 5s, 10s, 15s, 30s, 45s, 60s, 120s, 180s, 240s, and 300s.
Viewability tracking respects GDPR/TCF v2 consent — tracking is disabled if the user has not provided consent for Purpose 7 (Legitimate Interests) or Vendor 729 (either denial disables tracking).
Custom metrics
Reports support custom metric expressions. Use the custom metric builder to create calculated fields from standard metrics (e.g. a custom engagement rate combining multiple interaction metrics).