trackImpression
Observable field that fires when the SDK emits an analytics event classified as an impression — meaning a passive, non-interactive event.
Description
Emits an analytics payload each time the SDK fires a non-engage analytics event. This includes session events, panel view, expand, and collapse events, overlay view and dismiss events, module view events, and any other analytics event designated as an impression.
Use this field alongside trackAction to receive the full analytics event stream from the SDK and forward it to your own analytics platform.
Type
assocArray
Usage
m.lib.observeField("trackImpression", "onTrackImpression")
function onTrackImpression(event as Object)
payload = event.getData()
if payload = invalid then return
metadata = payload.metadata
eventName = metadata?.event_name
' Forward to your analytics platform
myAnalytics.trackImpression(eventName, metadata)
end function
Data Structure
The payload shape depends on whether the event originated from a backend analytics event or a client-specific event.
Backend analytics events
Backend events (session, panel, module, overlay) arrive as the full analytics beacon:
| Field | Type | Description |
|---|---|---|
e0_kingdom | string | The event kingdom (e.g., "session", "panel", "overlay", "module"). |
e1_phylum | string | The event phylum (e.g., "view", "start", "end", "dismiss"). |
e2_class | string | The panel, overlay, or session class. |
e3_order | string | Panel or overlay ID. |
e4_family | string | Panel or overlay name. |
e5_genus | string | Sub-classification (may be empty). |
e6_species | string | Instance identifier (may be empty). |
metadata | assocArray | Event-specific metadata fields. |
The metadata object contains fields specific to the event and any host_metadata fields the event declares. For example, overlay events include overlay_event, overlay_id, and overlay_name in metadata.
Client-specific events
Events with no backend taxonomy arrive without the e0–e6 fields:
| Field | Type | Description |
|---|---|---|
metadata | assocArray | Contains event_name (the event identifier) plus event-specific fields. |
Example
sub setupAnalyticsObservers()
m.lib.observeField("trackAction", "onTrackAction")
m.lib.observeField("trackImpression", "onTrackImpression")
end sub
function onTrackImpression(event as Object)
payload = event.getData()
if payload = invalid then return
metadata = payload.metadata
eventName = metadata?.event_name
' A backend event carries both taxonomy and metadata
if payload.e0_kingdom <> invalid
kingdom = payload.e0_kingdom
phylum = payload.e1_phylum
print "Analytics impression: " + kingdom + ":" + phylum
else
' A client-specific event carries only metadata
print "Analytics impression: " + as.string(eventName)
end if
' For overlay events, overlay context is in metadata
if metadata?.overlay_event <> invalid
print "Overlay: " + as.string(metadata.overlay_name) + " (" + as.string(metadata.overlay_event) + ")"
end if
' Forward to your analytics platform
myAnalytics.trackImpression(eventName, metadata)
end function
Notes
- Fires for passive events: session start/end events, panel view, expand, and collapse events, overlay view and dismiss events, and module view events.
- Observe
trackActionfor active user interactions (engages and other action-designated events). - Distinct from
trackingEvent, which emits the raw internal analytics payload before it is forwarded to the Maestro backend. - The
metadataobject may contain nested values (for example,overlay_dataon overlay events). - For overlay events, the
metadataobject includesoverlay_event("view"or"dismiss"),overlay_id, andoverlay_namefields.