Structure

Data & taxonomy

A raw callback is not an insight. Everything the meter captures resolves into one documented vocabulary, so the name you see in a Parquet column is the name your analyst, your dashboard and your agent all use.

One event vocabulary

Every signal the meter captures resolves to one of a small number of typed events. The list is deliberately short: a vocabulary an analyst can hold in their head is a vocabulary that gets used consistently, and consistency is what makes two months of data comparable.

app_session
A panelist opens an app and a session begins.
page_view
A screen or feed inside the app, or a page on the open web.
search_query
A query entered in-app or on the web — including apps with no public search.
product_view
A specific item examined, not merely scrolled past.
add_to_cart
Intent committed: the item is in the basket.
checkout
A purchase completes.
watch_time
Time spent on a specific piece of video or audio.
ad_impression
An ad rendered in front of the panelist, in-app or on the web.
push_received
A notification arrives — and whether it started a session.
app_install
An install completes on the device.
brand_mapped
A package name or domain resolved to a brand entity.
session_end
The session closes; duration and depth are final.

Raw signal to typed event

Resolution is where the platform earns its keep. The same commercial act shows up as an accessibility callback, an HTTP request, a TLS handshake or all three, and it has to arrive in your feed once — as the event it was, attributed to the right brand, at the right moment in the session.

TYPE_WINDOW_STATE_CHANGED→app_session
TYPE_VIEW_TEXT_CHANGED→search_query
GET /v2/search 200→search_query
TYPE_VIEW_CLICKED→product_view
GET /api/items 200 8.2kB→product_view
POST /v2/cart 302→add_to_cart
POST /checkout 201 1.4kB→checkout
TLS SNI cdn.video-app.tv→watch_time
TLS SNI ads.exchange.net→ad_impression
PACKAGE_ADDED com.retail.app→app_install

Sessionization

Where a session starts and stops

Foreground transitions define the boundaries, so a session is the period the panelist was actually in the app rather than a fixed inactivity timeout applied after the fact. Backgrounding, a phone call and a screen lock are all distinguishable.

Identity

One panelist, many surfaces

Events resolve to a single pseudonymous panelist identifier, which is what lets an ad seen in one app and a purchase made in another be read as one journey. Where a panelist has more than one metered device, those events resolve to the same identifier.

Brand mapping

Package names are not brands

A package identifier, a CDN hostname and a checkout domain can all belong to one retailer. Mapping them to a single brand entity is what turns a pile of hostnames into a share figure you can put in front of a client.

The same name, everywhere

A taxonomy is only worth anything if it survives the trip out of the platform. checkout is a column in the Parquet feed, a field in the API response, a row in the dashboard and a term the chatbot and the MCP server both understand.

Which means an analyst's definition and an agent's query cannot drift apart — a class of quiet, expensive disagreement that stitched pipelines produce as a matter of course.