fr | en | es | de

Rich Media

Discover the latest tools in the
Analytics Suite, thanks to our new online help.

Contents: Hide

Thanks to the Rich Media feature, it is possible to obtain a precise and detailed measurement of all of the different types of content that is available on your website (audio, video, podcast). Not only this, but it is also possible to obtain further information relating to the areas in which the content is broadcast (internal or external to your website), to the different broadcasting modes used (Clip or Live) as well as information relating to specific user behaviour (play, stop, pause, backward, forward, share, sending by email, adding to bookmarks etc).

This tagging document describes a general procedure, and depends on the technology that is used to implement the Rich Media module:

This document provides information on (with the help of different valid examples) the different measurements which can be taken from all types of content (audio, video, etc).

All of the information described in this document requires that you download version 3.4.002 or later of the xtcore.js file. This file is available for download in:

General principles

Irrespective of the type of reader that is used (JavaScript or Flash), it is possible to measure the following different types of content with AT Internet solutions:


A piece of content cannot belong to more than one content type. Entering the same label during the tagging process (or the same ID) does not mean that the different content types can be grouped together.

Custom tagging

Depending on the type of content that is measured, all of the different items can be named and then classified (with “::” to separate them) into a maximum of 3 themed levels.

With AT Internet it is possible to measure a large number of Rich Media items thanks to the predefined values that are available in our solutions. It is also possible to integrate customised information during the tagging phase.


All of the predefined values of the different variables can be found in the annex of this document.

The Refresh Tag

To guarantee measurement accuracy, AT Internet measures the interaction between the user and the Rich Media content at regular intervals to ensure that the different media content on your site is always read by Internet users.

This results in a more precise measurement of playback duration in comparison to a measurement which is based on the time difference between the 'Stop' and 'Play' actions.

Post-Roll Advertising

Post-roll advertisements are advertisements which appear at the end of a specific Rich Media broadcast. The xt_rm() method, which is described below, must be used in order to measure this type of content.


The implementation method which is used for the Podcast tag is different from the other types of content.

A detailed description of the tagging procedure is given this document.

JavaScript implementation

The method which is used to measure Rich Media items is based on the following principle: using a JavaScript (xt_rm()) function at the exact moment when an Internet user clicks on an item of the player (which broadcasts the media content).

Tagging video and audio content

The web page which contains the Rich Media reader must contain a tag code with the xtcore.js file.

This xtcore.js file contains the xt_rm() function which must be used for each action that is carried out on the reader (JavaScript action).


The xt_rm() function must be used to measure all events on different audio and video content.

The use of JavaScript through the xt_rm() function

The xt_rm() function, which is common to all content types, allows you to add several variables. These variables will have a different purpose and different meaning depending on the content type that is being measured.

The xt_rm() function must be structured as follows (the order must be strictly adhered to):



List of variables to be entered




Compulsory - content type ("video", "audio" or "vpost" for the measurement of post-roll videos). The content type must be concatenated to the variable "&plyr=", which contains the ID of the reader that is currently being used (refer to the example below). The variable "&plyr=" is optional but must be added when several readers are used, the aim of this is to distinguish between the hits that are received by the different readers.


Level 2 site in which the content is placed.


Compulsory - content label (use "::" if necessary) or post-roll advertisement label (in this case do not use the "::"). The label which is used for a post-roll advertisement must be concatenated to the variable "&clnk=". The "&clnk=" variable needs to resume the video content that the advertisement is linked to (refer to the example below).  


Compulsory - action (predefined ID). All of the different IDs can be found in the annex of this document.


Refresh count duration (optional and measured in seconds, but necessary to calculate detailed durations). This is a fixed duration, and a minimum interval value of 5 seconds applies.


Compulsory (except if D is different from "play" or if L = "Live"):Total content duration is measured in seconds (to be left empty if L="live"). Must be less than 86400.


Information relating to the position of the playcount ("rmp", "rmpf" and "rmbufp"), measured in seconds. These three variables, which are to be concatenated, need to be entered as follows: "rmp=0&rmpf=0&rmbufp=0" (0 is the default value).
- rmp (rich media position): position of the read head. This value must be updated for each action (variable D).
- rmpf (rich media position from): the starting position of the read head along the playback bar. This value must be updated for each action (if variable D="move").
- rmbufp (rich media buffer cache position: the position of the cache's progress bar which is present in the content. This value must be updated for each action (variable D)


Feed ID


Location ("int" or "ext").


Broadcast ("live" or "clip"). If L is empty the method which is taken into consideration for broadcasting is "clip".


Content size (integer in Kb, leave empty if L="live").


Content format (ID predefined by you - see Appendix).


All of the characteristics must be transmitted for each use.


All of the predefined values of the different variables can be found in the annexes of this document.

Example 1:

The example below shows the xt_rm function which represents a “play” action that is to be buffered on a video player.

xt_rm('video',3, 'mychapter::mycontent', 'play','0','0','3600','0','1','1','int','clip','300',1)

Example 2:
The example below shows the xt_rm function which represents a "move" action on a video player.


- the position of the read head before movement (rmpf) : '10'
- the position of the read head after movement (rmpf) : '15'

Example 3:
The example below shows a video playback followed by a post-roll advertisement. It should be pointed out that it is not necessary to tag the video before the advertisement.

- A "play" action on the video "videos::video1" (launches the video)


- A "refresh" action on the video (2 hits are automatically generated)

- A "stop" action on the video "videos::video1" (ends the video)


- A "play" action on the post-roll video "post1" (plays back the advertisement that follows the video)


Tagging podcasts

It is possible to use different measurement types to analyse the performance of a podcast that is available on a site, by:

Measuring the XML feed

It is possible to measure the XML feed by redirecting the feed to one of our servers so that then we can measure each of the feeds.

To set up this redirection, you should proceed as follows:



In this URL, the following changes must be made:


Using this method makes it possible to measure the XML feeds that have already been saved by Internet users onto their feed reader (iTunes or others). For any new registration, it is recommended to offer Internet users the same XML file with the registration date as a parameter: any redirection to logxxxx.xxxx/…. is only possible if the broadcast date comes after the registration date (there is no measurement taken on the 1st day).

Measurement date ("xtdate" variable)

prevent the feed podcast readers from saving the redirected URL, close attention must be paid to a feed's registration date. If the retrieved date is the current day's date, then no redirection will take place. If the retrieved date is different to the current day's date then redirection will occur.


If your website has a Podcast feed in the following URL:


you should follow the following steps:

1. Each time this feed is used, add the current day's date to a "xtdate" variable. For example in ASP:<% = date %>

This date will be retrieved as the registration date to be added to the feed.


2. Copy the content of this file feed.xml into another file (for example feed2.xml) that will be used in the next point, point 3.

3. Replace the content of the feed.xml file with a dynamic redirection tag (server side) to our servers and replace feed_name with your own feed label.

For example:




This operation must ONLY be carried out if the variable xtdate is not set to the current day's date.

For example, in ASP:

<% xtdate = request.querystring("xtdate")
if date = xtdate then %>
<!-- #include file="feed2.xml" -->
<% else
response.redirect "http://logxxxx.xxxx/get/feed?xts=xxxx&type=podcast&feed=feed_name
&xtinsc=" & xtdate & "&url="
end if



Measuring Podcast articles

Podcast articles may be audio, video or other files that the XML feed offers for downloading.

Once again, the process for redirection is as follows:

<enclosure url="" length="34524" type="video/quicktime" />

<enclosure url="http://logxxxx.xxxx/get/;type=Podcast&amp;feed=feed_name&amp;pod=video_name&amp;url=" length="34524" type="video/quicktime" />


For compatibility issues with iTunes, "amp ;" must be placed after the character "&".

In this URL, the following changes must be made:


The URL which is placed after the variable url= must begin with ‘http://’ and must be placed at the end.
The "pod" variable must only be used for downloaded articles (without this variable, a feed update rather than a downloaded item is measured).


The analyses are available in Rich Media > Podcasts.

Implementing ActionScript

The implementation method for Rich Media in an AS3 Flash reader is described below.


In order to facilitate Rich Media implementation, a "XiTiFlash" folder is at your disposal. This folder is available ONLY ON REQUEST via the Support Centre in the interface. It contains:
- AS3 source files: they must not be modified and must be placed in the same folder as your Flash animation source.
- A "xititag.xml" file that must contain all of the information which links flags to variables.

The are several steps involved in the implementation of the Rich Media tag:

1.       By placing the appropriate files from the "XiTiFlash" folder into your Flash workspace.

2.       By modifying your Flash animation so that you can insert the flags that represent the content you want to measure throughout your film.

3.       By using an XML file (example in the "XiTiFlash" folder). This file takes all of the flags which have been created and associates them with the different variables.

Step 1: inserting calls into existing AS files

Depending on your measurement needs, the following line of code must be inserted:



In this line of code, "Flag_Name" is a label that links the Flash event, which is to be measured, to the code that is contained in the xititag.xml file.

XiTiTag is a function which is created in one of the ".as" files of the "XiTiFlash" folder.

We recommend that names which are given to flags are explicit to them. The properties of the flags to be measured also need to be configured in the "xititag.xml" file (see step 2).


If the Flash animation calls ("XiTiTag.loadXml()") (an undeclared flag in the XML file) no measurement will be taken..



The image above shows an existing ".as" code in which 2 XiTiTag.loadXml() calls, with a flag name "Play_video1" and "stop_video1", have been added.

The objective of these calls is to generate a Rich Media measurement with a "play" and "stop" action. These actions are entered into the xititag.xml file, via the xt_rm() function.


Dynamic variables

For practical reasons, if you want to add the values of certain variables directly to the source code of the .as file (to be added to the xt_rm() function of the xititag.xml file), you need to group all of these variables together (concatenated with "&" separators) in a chain which is to be added as the second variable of the XiTiTag.loadXml().



//Start play

private function doPlay (e:MouseEvent) :void


  var nameflv:String="&richname=theme::myvideo1";


  if (nextP){




   XiTiTag.loadXml ("Play", nameflv) ;

   vidtest.stopPlay (ns) ;

   vid.clear () ;

   vidTest.startPlay (ns, flv) ;

   vid.attachNetStream (ns) ;



This example shows how a dynamic variable ("nameflv") is structured so that a content name can be changed ("myvideo1" or "myvideo2") depending on a certain context.


The following call:


means that it is possible to use the features of the play flag (added to xt_rm() of the xititag.xml file) while simultaneously modifying the content label.
Each of the variables which have been added as a second variable of this call take priority over information that has been entered in the XML file (step 2).


Structure of variables

In order to control each variable of xt_rm(), the variables need to be entered in the following fields:




Compulsory - Content type ("audio", "video", "animation" or "vpost" for post-roll advert measurements).


Player ID


Content label that is associated with a post-roll advert ("vpost")


Level 2 site in which the content is placed.


Compulsory - Content label (using "::" if necessary, to establish a themed tree structure).


Compulsory - Text ID which characterises an action amongst predefined actions (see appendix).

refresh count

Duration of refresh count (optional, and measured in seconds). For content with a long duration, this variable can be used to generate automatic intermediate hits (between the "play" hit and the "stop" hit) which provide a more accurate measurement of the duration.


Total length of the content, measured in seconds (leave empty if mode="live"). This variable is compulsory if action="Play" and mode="Clip". Must be less than 86400.


Buffering in process (buf=1)


Position of the read head.


Quality ID OR slide number if type="animation".


Feed ID.


Location of the content ("int" for internal or "ext" for external).


Broadcast ("live" for content that is broadcast continuously and without a duration of time, or "clip" for the contents that have a duration). If "type=Animation", then by entering "mode=Live" it is possible to obtain the total playback duration (not relative to “duration”). If mode is empty the method which is taken into consideration for broadcasting is "clip".


Size of content (integer in Kb, leave empty if mode="live").


Format of the content (predefined ID – see Appendix).

In order to control the variables of web pages and of level 2 sites which contain different media content, the variables should be entered in the following fields:
xtprich: the label of the page with media content
xts2rich: the level 2 site with media content

Step 2: implementing the "xititag.xml" file

This file contains:


Variables which are defined in the <tags> tag are global values by default, and are attributed to all <tag> tags: this means that the sub-domain and the ID of the site do not have to be repeatedly entered in each tag. It is possible, however, to redefine each variable in the <tag> tag.


An example of the "xititag.xml" file which is located in the "XiTiFlash" folder can be found below:

<?xml  version="1.0" encoding="iso-8859-1"?>


<tags xtsd="http://log"  xtsite="32"  xtn2="17">


<! -- video launch -->

<tag  key="Play_video1"  xtprich="page_with_video" xts2rich="3"  xtrm="video,4,video1,play,0,2,3000,4,1,1,int,clip,1000,8"  />

<tag  key="Stop_video1"  xtprich="page_with_video" xts2rich="3"  xtrm="video,4,video1,stop" />




<! -- General parameters defintion -->







With the following XML tag:

<tag key="Play_video1" xt_rm="video&plyr=1,4,chap::myvideo,play,0,6,10,rmp=0&rmpf=0&rmbufp=0 ,1,1,int,clip,1000,8" xtprich="video_page" xts2rich="3" />


Any call:


sends a hit containing the following information:

However, the following code:

XiTiTag.loadXml("Play_video1", "&richname=theme::myvideo&duration=20&rmp=10");

sends a hit with exactly the same information, except for: