Last updated on March 14, 2017.
Video related analytics are an important part of a successful online video strategy. It can tell you which content works best for your audience and provide guidance on how to increase viewer engagement and revenue.
Radiant Media Player provide several options for getting media-related analytics.
Google Analytics property ID. Typically looks like UA-XXXXXXXX-Y. Default: ''.
Set the Google analytics tracking category. Typically the object that was interacted with (e.g. 'Video'). Default: 'RMP'.
Set the Google analytics label for each events. Use it to uniquely identify your video (e.g. 'Fall Campaign'). Default: 'RMP label'
In some cases you might want to send data to multiple properties from a single page. This is useful for sites that have multiple owners overseeing sections of a site; each owner could view their own property. In such cases we need to configure
Google Analytics to
work with multiple trackers. When set this setting allows to do just that with a custom tracker based on
gaNamedTracker. The player will automatically send data with this named tracker. Default: '' which means no specific named tracker is used.
Our implementation is based on the analytics.js event tracking documentation. Refer to this documentation for more information. Events can be tracked in real-time or for "next-day" reporting in your Google Analytics back-end (events can be tracked in Behavior > Events).
Google Analytics imposes Limits and Quotas. As such the data collected by our Google Analytics implementation may only be partial - but still relevant bacause based on a good sample of your audience (if you go over your account limit Google decides when to collect data or not). Our implementation takes this into account and is made to send only the required information to Google Analytics. If you have a high volume of monthly video views you may consider upgrading to a Google Analytics 360/premium account for better analytics data accuracy.
Each tracked media content should be sorted by gaLabel in order to see relevant data for a given asset. The ready and startuptime events provide associated values in milliseconds. You need to look at average values for those 2 events.
Below is the list of tracked events when a valid gaTrackingId setting is provided.
ready: the player has reached the ready state. The readytime value in milliseconds is also sent along this event. This event only fires once per player session.
playbackstarted: the player has started playback. When video ads are used this event fires when the content is started after all pre-roll ads are completed. This event only fires once per player session.
startuptime: the player startuptime in milliseconds is sent as an associated value to this event. Note that this event differs from the playbackstarted event when a linear pre-roll video ad is displayed as it is sent as soon as the first frame of the ad is shown.
playbackended: the player has reached the end of the content. This event may fire multiple times per player session. When loop setting is used this event may not fire.
playbackstartedafterhavingended: the player starts the content again after having reached its end. When loop setting is used this event may not fire. This event may fire multiple times per player session.
enterfullscreen: the player has entered fullscreen mode. This event may fire multiple times per player session.
seeking: the player has received a seek order. This event may fire multiple times per player session.
adtagloaded: the current adTag has been successfully loaded into the player (after init or loadAds) - this means the VAST/VMAP data have been retrieved by the player. This event may fire multiple times per player session.
adloaded: Fired when ad data (e.g. creative) is available.
adimpression: fired when the impression URL has been pinged. This event may fire multiple times per player session.
adclick: the player has registered a click for an ad. This event may fire multiple times per player session.
The player will also send data about the context in which it is rendered. The related event will only fire once per player session.
html5-hls: the player is loaded in HTML5 mode with HLS.
html5-dash: the player is loaded in HTML5 mode with DASH.
html5-mp4: the player is loaded in HTML5 mode with MP4 progressive download.
html5-webm: the player is loaded in HTML5 mode with WebM progressive download.
html5-m4a: the player is loaded in HTML5 mode with M4A (audio-only) progressive download.
html5-mp3: the player is loaded in HTML5 mode with MP3 (audio-only) progressive download.
flash-hls: the player is loaded in Flash mode with HLS.
nosupport: the player displays a no-support message to the viewer because it has no valid playback option.
Tracking content mark data for Google Analytics must be enabled with player setting
gaAdvanced. This option is only available for on-demand media content. This will cause the player to send more data to your Google Analytics account.
Content mark analytics try to reproduce the heatmap analytics pattern describe below but within the constraints of what can be done within Google Analytics. Still it should really help you to tell which type of content works better for your
audience and which parts of this content are consumed.
content mark analytics are based on estimates and statistics pattern. They can provide an indication as to how your media content is consumed but may not be 100% accurate.
Enables tracking of content mark data for Google Analytics. Default: false.
The following events are sent to Google Analytics when a specific % mark of the content has been reached. A given content mark event can be sent multiple times within a player session assuming the same mark of the content is reached multiple times.
This methods returns a
Number expressed in milliseconds that represents the cumulative time viewed for the current player instance. Returns
-1 if not available. This number can exceed content duration if the same part of content is viewed multiple times for a given player session.
This methods returns a
Number expressed in % that represents the
cumulative percent viewed for the current player instance (example 20 for 20%). This is calculated against content duration. It will only return valid for on-demand content as for live/DVR content the duration is unknown. Returns
-1 if not available. This number can exceed 100% if the same part of content is viewed multiple times for a given player session.
This methods returns a
Number expressed in milliseconds that represents the time for the player to be ready (i.e. fully appended to DOM and ready to receive API calls). Returns
-1 if not available.
This methods returns a
Number expressed in milliseconds that represents the time needed for the player to display the first frame of the video/audio after initial user interaction (or autoplay). Returns
-1 if not available.
This method will return an actionable value when the
startuptimeavailable player event fires.
A heatmap represents which parts of your content are actually being consumed by your audience. For example in the case of soccer when a goal happens viewers will tend to replay a reduced section of the content multiple times indicating a clear area of interest. Better than words an image:
The idea here is to provide API player methods in order to reconstruct a heatmap for a given asset. This is only available for on-demand video. Live/DVR content have fluctuant duration and thus a heatmap cannot be drawn.
The heatmap analytics API is a client-side API. In order to get to a complete solution you will need to send the information provided by the player to a remote logging server where heatmap analytics data can be stored and processed. This last part is for you to set up.
This methods returns an
Array. The array size is dictated by the
heatMapAccuracy setting (see below). Each item of the array consists of an incremental number of player ticks. A player tick is registered each time the
timeupdate event fires.
Typically after a certain amount of time playing a video the getRawHeatMap method may return something like:
[18, 19, 18, 19, 81, 84, 45, 36, 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
This would be the output for the
heatMapAccuracy default value of 20. This means that ticks are logged within segments that represent 5% (1/20) of the content. The first number in the array - 18 - means that when the
getRawHeatMap method was called 18 ticks have been registered for the first 5% of the content. At index 4 of the array we can see an increase in ticks, 81 then at index 5, 84 ticks. This means that this area of the video has been
watched more intensively by the viewer while the second half of the video was completely ignored.
This can effectively tell you which parts of a content work for your audience.
In order to draw a clear picture you will need to query the getRawHeatMap method at regular intervals or when the player session ends (e.g. a browser tab/window is closed) and to send those data to a logging server for post-processing.
This is a player setting. The value must be a
Number. The default is 20 which means that the content will be cut into 20 segments. Each segment represent 5% of the content duration. Ticks are logged for each of those 5% segments.
You can increase accuracy up to 100. With a 100 value the player ticks will be logged within segments that represent 1% of the content duration.
You are most likely going to have to play around with the above methods/player setting in order to grab the full scope of the heatmap concept and how powerful it can be in order to achieve a successful online video strategy.