Standard events

 

Forewords

One of the strengths of the Analytics Suite Delta data model is that it offers standard events and properties that are present by default.

These events will allow you to measure the majority of interactions present on your perimeters. So there is no need to reinvent an event from scratch when you just want to measure the loading of a page, or the consultation of a product page! Moreover, the use of these standard events allows us to provide you with dedicated metrics. For example, the time spent per page is a metric linked to the use of the standard page view event page.display.

Each standard event can be linked to standard properties dedicated to it.

However, it is not mandatory to use each of the informed properties, and it is quite possible to add other properties (standard or custom) if you wish.
 

Content

 

Pages

Event name :

page.display

Standard properties linked:

PropertiesTypeExample
pageStringArticle3
page_chapter1StringNews
page_chapter2StringPolitique
page_chapter3StringElections

The property definition is available within your data model.

Tagging example:

tag.events.send('page.display',
  {
    'page': 'page name',
    'page_chapter1': 'chapter 1' ,
    'page_chapter2': 'chapter 2' ,
    'page_chapter3': 'chapter 3' 
  }
);
_ = tracker.events.add(name: "page.display", data:
  "page" : "page name",
  "page_chapter1" : "chapter 1",
  "page_chapter2" : "chapter 2",
  "page_chapter3" : "chapter 3"
)
tracker.dispatch()
tracker.Events().add("page.display", new HashMap() {{
  put("page", "page name");
  put("page_chapter1", "chapter 1");
  put("page_chapter2", "chapter 2");
  put("page_chapter3", "chapter 3");
}})
tracker.dispatch();
 

Clicks

Event name :

click.display

Standard properties linked:

propertiesTypeExample
clickStringArticle3
click_chapter1StringNews
click_chapter2StringPolitique
click_chapter3StringElections

The property definition is available within your data model.

Tagging example:

tag.events.send('click.navigation',
  {
    'click': 'click name',
    'click_chapter1': 'chapter 1',
    'click_chapter2': 'chapter 2',
    'click_chapter3': 'chapter 3' 
  }
);
_ = tracker.events.add(name: "click.navigation", data:
  "click": "click name",
  "click_chapter1": "chapter 1",
  "click_chapter2": "chapter 2",
  "click_chapter3": "chapter 3"
)
tracker.dispatch()
tracker.Events().add("click.navigation", new HashMap() {{
  put("click", "click name");
  put("click_chapter1", "chapter 1");
  put("click_chapter2", "chapter 2");
  put("click_chapter3", "chapter 3");
}})
tracker.dispatch();
 

Internal search engine

 

Results display

Event name :

internal_search_result.display

Standard properties linked:

propertiesTypeExample
ise_keywordStringMobile Phone
ise_pageInt2
ise_resultStringWith results

The property definition is available within your data model.

Tagging example:

tag.events.send('internal_search_result.display',
  {
    'ise_keyword': 'Mobile Phone',
    'ise_page': 2,
    'ise_result': 'With results' 
  }
);
_ = tracker.events.add(name: "internal_search_result.display", data:
  "ise_keyword": "Mobile Phone",
  "ise_page": 2,
  "ise_result": "With results"
)
tracker.dispatch()
tracker.Events().add("internal_search_result.display", new HashMap() {{
  put("ise_keyword", "Mobile Phone");
  put("ise_page", 2);
  put("ise_result", "With results")
}})
tracker.dispatch();
 

Results clicks

Event name :

internal_search_result.click

Standard properties linked:

propertiesTypeExample
ise_keywordStringMobile Phone
ise_pageInt2
ise_click_rankInt15
ise_resultStringWith results

The property definition is available within your data model.

Tagging example:

tag.events.send('internal_search_result.click',
  {
    'ise_keyword': 'Mobile Phone',
    'ise_page': 2,
    'ise_click_rank': 15,
    'ise_result': 'With results' 
  }
);
_ = tracker.events.add(name: "internal_search_result.click", data:
  "ise_keyword": "Mobile Phone",
  "ise_page": 2,
  "ise_click_rank": 15,
  "ise_result": "With results"
)
tracker.dispatch()
tracker.Events().add("internal_search_result.click", new HashMap() {{
  put("ise_keyword", "Mobile Phone");
  put("ise_page", 2);
  put("ise_click_rank", 15);
  put("ise_result", "With results")
}})
tracker.dispatch();
 

On Site Ads

Event name :

publisher.display publisher.click self_promotion.display self_promotion.click

Standard properties linked:

propertiesTypeExample
onsitead_typeStringPublisher
onsitead_campaignStringAcquisition
onsitead_categoryStringGold
onsitead_creationStringBanner_main
onsitead_variantStringBlue
onsitead_formatString400×300
onsitead_general_placementStringSidebar
onsitead_detailed_placementStringSidebar_bottom
onsitead_advertiserStringMy Site
onsitead_urlStringwww.mysite.com

The property definition is available within your data model.

tag.events.send('publisher.display',
  {
    'onsitead_type': 'Publisher',
    'onsitead_campaign': 'Acquisition',
    'onsitead_category': 'Gold',
    'onsitead_creation': 'Banner_main',
    'onsitead_variant': 'Blue',
    'onsitead_format': '400x300',
    'onsitead_general_placement': 'Sidebar',
    'onsitead_detailed_placement': 'Sidebar_bottom',
    'onsitead_advertiser': 'My Site',
    'onsitead_url': 'www.mysite.com'
  }
);
_ = tracker.events.add(name: "publisher.display", data:
  "onsitead_type": "Publisher",
  "onsitead_campaign": "Acquisition",
  "onsitead_category": "Gold",
  "onsitead_creation": "Banner_main",
  "onsitead_variant": "Blue",
  "onsitead_format": "400x300",
  "onsitead_general_placement": "Sidebar",
  "onsitead_detailed_placement": "Sidebar_bottom",
  "onsitead_advertiser": "My Site",
  "onsitead_url": "www.mysite.com"
)
tracker.dispatch()
tracker.Events().add("publisher.display", new HashMap() {{
  put("onsitead_type", "Publisher",);
  put("onsitead_campaign", "Acquisition",);
  put("onsitead_category", "Gold",);
  put("onsitead_creation", "Banner_main",);
  put("onsitead_variant", "Blue",);
  put("onsitead_format", "400x300",);
  put("onsitead_general_placement", "Sidebar",);
  put("onsitead_detailed_placement", "Sidebar_bottom",);
  put("onsitead_advertiser", "My Site",);
  put("onsitead_url", "www.mysite.com",);
}})
tracker.dispatch();
 

Audio / Video

 

Specifications

 

Important notes

In order to properly monitor the measurement of your AV content, there are a few things you need to know.

 
play vs playbackStart

The events av.play (play) represent the first click on the play button, which starts loading the video.

The events av.start (playbackStart) represent the playback of the first frame of the content.

The classic sequence of events is therefore av.play followed by av.start. In between, the video loading time can be measured with events av.buffer.start followed by av.buffer.heartbeat..

If you are not able to differentiate these two times, it is necessary to send av.start (playbackStart).

 
start vs resume

If playback is resumed (after a pause or loading time (rebuffer) for example), it will be necessary to send an event av.resume (playbackResumed) rather than av.play.

 
Cursor position management

When using methods related to reading content, the cursor position is required.

This position makes it possible to know the real progress of the reading.

 
Playback speed management

In order to measure the position of the cursor, the libraries calculate the time actually spent playing. By default, one real second will correspond to one second of playing.

However, you can change this playback speed via the method setPlaybackSpeed, by specifying the speed factor.

 

Tracking examples

 
Full playback
 
seek event tracking
 

Automatic processing

Some automatic processings are managed by the tagging libraries.

However, it is necessary to know them and to take them into account when tagging not using libraries.

 
seek (seek start, forward/backward)

When calling a seek (seek) method, several events are raised:

  • av.seek.start, indicating the start of seek, and bearing the cursor position before the move
  • av.forward or av.backward, depending on the start and end positions of the cursor move
  • .
 
session id

Each playback session has a unique identifier (property av_session_id).

A playback session is defined by a content play. It stops if the content changes, or if the video is stopped (av.stop).

 
buffer vs rebuffer

Two types of loading times can be identified:

  • buffer (av.buffer.start (bufferStart) and av.buffer.heartbeat), for loading before the start of playback (between av.play and av.start)
  • rebuffer (av.rebuffer.start (bufferStart) and av.rebuffer.heartbeat), for loading during playback (after av.start)
  • ).

The method bufferStart checks if a playbackStart has been called on the current session, in order to send the corresponding load type.

 
heartbeat

During playback, in order to measure durations more precisely, heartbeat events provide information on the status of the player.
Several types of heartbeat are available:

  • av.heartbeat, triggers after a playbackStart or playbackResumed, allows to measure the content playback
  • av.(re)buffer.heartbeat, triggers after a bufferStart, allows to measure the duration of loading times

The time between two heartbeats is defined at the moment of media instantiation. It can be fixed for the whole playback, or it can evolve via a JSON object.

On short media, we recommend to fill in 5 seconds between each heartbeat, in order to have a fine enough measurement without overloading the user’s network and the collection servers. On larger media, you should space heartbeats with more time, up to 30 minutes in order to keep the playback session alive.

 
duration

The time actually spent in front of the content is filled in the property av_duration, via a timer.

This is the time elapsed in milliseconds between the previous event and the current one.

 
previous event/position

On each event, it is necessary to fill in the position (av_previous_position) and the name (av_previous_event) of the previously sent event.

 

Pattern

 

Common standard properties

PropertyDescriptionTypeMandatoryExample
av_content_idContent IDstringYes'bc35'
av_session_idSession IDuuid*Yes'799d9f3b-7307-5113-a260-2e1371e35fe6'
av_contentContent Labelstring 'Broadchurch 3.5'
av_content_typeContent Typestring 'TV Show'
av_content_durationContent Duration (in milliseconds)int 2760000
av_content_linkedLinked Content Labelstring 'myLinkedContent'
av_publication_datePublication Date (timestamp)date 1501065673
av_content_genreContent genre(s)array of string ["Crime","Drama","Mystery"]
av_showShow Labelstring 'Broadchurch'
av_show_seasonShow Season Labelstring '3'
av_episode_idEpisode IDstring '5'
av_episodeEpisode Labelstring 'Episode #3.5'
av_channelChannel Labelstring 'ITV'
av_authorAuthor Namestring 'Chris Chibnall'
av_content_versionContent Version (full length, …)string 'Full length'
av_content_duration_rangeDuration rangestring '0-10'
av_broadcasting_typeBroadcasting Typestring 'Live'
av_broadcasterBroadcaster Namestring 'ITV'
av_ad_typeAd Typestring 'Mid-roll'
av_playerPlayer Labelstring 'Main'
av_player_versionPlayer Versionstring '1.55'
av_player_positionPlayer Positionstring 'Homepage'
av_auto_modeAuto play modebooleantrue
av_languageMedia languagestring'fr'
av_subtitlesSubtitlesstring'en'
av_launch_reasonLaunch reasonstring'auto'

* uuid type requires a version 5 (random) or version 5 (named) RFC 5122-compliant UUID, otherwise, our processing will generate one to replace the tagged value.

 

Events

 
av.heartbeat
PropertyDescriptionTypeMandatoryExample
av_durationTime spent since previous event (ms)intYes5000
av_positionCurrent event cursor positionintYes15000
av_previous_eventPrevious event namestringYes'av.heartbeat'
av_previous_positionPrevious event cursor positionintYes10000
 
av.buffer.heartbeat
PropertyDescriptionTypeMandatoryExample
av_durationTime spent since previous event (ms)intYes5000
av_positionCurrent event cursor positionintYes15000
av_previous_eventPrevious event namestringYes'av.heartbeat'
av_previous_positionPrevious event cursor positionintYes10000
 
av.rebuffer.heartbeat
PropertyDescriptionTypeMandatoryExample
av_durationTime spent since previous event (ms)intYes5000
av_positionCurrent event cursor positionintYes15000
av_previous_eventPrevious event namestringYes'av.heartbeat'
av_previous_positionPrevious event cursor positionintYes10000
 
av.play
PropertyDescriptionTypeMandatoryExample
av_durationTime spent since previous event (ms)intYes5000
av_positionCurrent event cursor positionintYes15000
av_previous_eventPrevious event namestringYes'av.heartbeat'
av_previous_positionPrevious event cursor positionintYes10000
 
av.buffer.start
PropertyDescriptionTypeMandatoryExample
av_durationTime spent since previous event (ms)intYes5000
av_positionCurrent event cursor positionintYes15000
av_previous_eventPrevious event namestringYes'av.heartbeat'
av_previous_positionPrevious event cursor positionintYes10000
 
av.rebuffer.start
PropertyDescriptionTypeMandatoryExample
av_durationTime spent since previous event (ms)intYes5000
av_positionCurrent event cursor positionintYes15000
av_previous_eventPrevious event namestringYes'av.heartbeat'
av_previous_positionPrevious event cursor positionintYes10000
 
av.start
PropertyDescriptionTypeMandatoryExample
av_durationTime spent since previous event (ms)intYes5000
av_positionCurrent event cursor positionintYes15000
av_previous_eventPrevious event namestringYes'av.heartbeat'
av_previous_positionPrevious event cursor positionintYes10000
 
av.resume
PropertyDescriptionTypeMandatoryExample
av_durationTime spent since previous event (ms)intYes5000
av_positionCurrent event cursor positionintYes15000
av_previous_eventPrevious event namestringYes'av.heartbeat'
av_previous_positionPrevious event cursor positionintYes10000
 
av.pause
PropertyDescriptionTypeMandatoryExample
av_durationTime spent since previous event (ms)intYes5000
av_positionCurrent event cursor positionintYes15000
av_previous_eventPrevious event namestringYes'av.heartbeat'
av_previous_positionPrevious event cursor positionintYes10000
 
av.stop
PropertyDescriptionTypeMandatoryExample
av_durationTime spent since previous event (ms)intYes5000
av_positionCurrent event cursor positionintYes15000
av_previous_eventPrevious event namestringYes'av.heartbeat'
av_previous_positionPrevious event cursor positionintYes10000
 
av.forward
PropertyDescriptionTypeMandatoryExample
av_durationTime spent since previous event (ms)intYes5000
av_positionCurrent event cursor positionintYes15000
av_previous_eventPrevious event namestringYes'av.heartbeat'
av_previous_positionPrevious event cursor positionintYes10000
 
av.backward
PropertyDescriptionTypeMandatoryExample
av_durationTime spent since previous event (ms)intYes5000
av_positionCurrent event cursor positionintYes15000
av_previous_eventPrevious event namestringYes'av.heartbeat'
av_previous_positionPrevious event cursor positionintYes10000
 
av.seek.start
PropertyDescriptionTypeMandatoryExample
av_durationTime spent since previous event (ms)intYes5000
av_positionCurrent event cursor positionintYes15000
av_previous_eventPrevious event namestringYes'av.heartbeat'
av_previous_positionPrevious event cursor positionintYes10000
 
av.ad.click
 
av.ad.skip
 
av.error
PropertyDescriptionTypeMandatoryExample
av_player_errorError messagestring 'Content not available'
 
av.display
 
av.close
 
av.volume
 
av.subtitle.on
 
av.subtitle.off
 
av.fullscreen.on
 
av.fullscreen.off
 
av.quality
 
av.speed
 
av.share
Last update: 08/09/2021