Skip to main content

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:

FieldTypeDescription
e0_kingdomstringThe event kingdom (e.g., "session", "panel", "overlay", "module").
e1_phylumstringThe event phylum (e.g., "view", "start", "end", "dismiss").
e2_classstringThe panel, overlay, or session class.
e3_orderstringPanel or overlay ID.
e4_familystringPanel or overlay name.
e5_genusstringSub-classification (may be empty).
e6_speciesstringInstance identifier (may be empty).
metadataassocArrayEvent-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:

FieldTypeDescription
metadataassocArrayContains 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 trackAction for 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 metadata object may contain nested values (for example, overlay_data on overlay events).
  • For overlay events, the metadata object includes overlay_event ("view" or "dismiss"), overlay_id, and overlay_name fields.