Brightcove Video in SiteCatalyst 15
telleston | August 25, 2011One of the things that stopped many companies from upgrading to SiteCatalyst v15 was the use of video. Well that’s no longer the case, as v15 Video Measurement has now been fully released and is ready to go.
Video tagging changed from v14 to v15 and an updated way of measuring video was introduced, which required a few more things to be configured before it would actually work.
In my previous post Lights, Camera, Action…Video Measurement, I focused on how easy it was integrating the Brightcove platform for SiteCatalyst v14.
So, this is a functional post on how to integrate video measurement into SiteCatalyst 15, if you’re using the Brightcove platform.
Integrate and measure
There are still only really 10 steps involved:
From your Omniture Reporting Suite admin, download the AppMeasurementExtension.swf file.- Edit your report suite settings to enable video measurement (see below).
- Create a config file.
- Host the AppMeasurementExtension.swf file and the config file on your server.
- Update your crossdomain.xml file to allow brightcove.com.
- Upload your video to Brightcove.
- Add a setting for your AppMeasurementExtension to be called.
- Attach the video to a player and generate the website code.
- Add the code to your website.
- Play the video through your site and you’re done.
How easy could that be. No flash programming. No fuss.
New reports
The new set of video reports are fairly comprehensive. You can also sub-relate by other eVars, and add in different success events so you can gauge how well they help in converting visitors. Pathing on the video name also shows which videos they go through.


eVars, events and s.props
Video in v15 requires that you use a minimum of 4 events, 3 eVars, 1 optional s.prop (and a partridge in a pear tree). While that sounds like a lot, they actually make much more sense than the old way of doing things.
So, your 3 eVars will be used for:
- Video Name
- Segment
- Content Type
Your 4 events will be used for:
- Video Time (in seconds) spent watching
- Video Views
- Video Completes (100% view)
- Video Segment Views
It’s also a good idea to use an 3 additional events as well, to track percentage viewed:
- 25% viewed
- 50% viewed
- 75% viewed
(Ok, so that’s actually 7 success events you need).
And your optional s.prop will be used for pathing between the different Videos.
Note: the Video Name eVar requires Full Sub Relations. Now, on the face of it, that seems a bit weird given that all eVars are now fully-subrelatable. The reason for this is that if you’re running on v14 you can upgrade your video measurement now, while you’re waiting to upgrade to v15. Just note that with full-subs on the eVar, it won’t show up in the list.
Note: the Video Name sProp requires Pathing enabled before it becomes available in the dropdown too.
SiteCatalyst Video Management
In your report suite admin, after you’ve configured all of your eVars, events and s.props, select Edit to go to the new Video Management > Video Reporting section.
You’ll be presented with a list of requirements for Video.

When you select the checkbox, the dropdown next to it will appear listing all available eVars, events etc. The first one, Video Name, will only appear if Full Subs are enabled on the eVar. You can actually select new eVars and events from the list and it will create them and rename them in your admin console…but, it won’t do the optional events at the bottom.
Once you’ve populated the list of required variables, you can add in the optional variables (s.prop and your 3 percentage viewed events). The optional events get added at the bottom where it says “Include additional Event”.
Hit save and you’re ready to create your config file.
It’s also a good idea to write them down on a bit of paper, so when you create you’re config file, you’ve got a handy reference.
Ours are as follows:
Standard eVars:
- Video Name = eVar50
- Segment = eVar36
- Content Type = eVar37
Standard events:
- Video Time Played (in seconds) spent watching = event31
- Video Views = event32
- Video Completes (100% view) = event33
- Video Segment Views = event34
Optional s.prop
- Video Name = prop23
Percentage viewed events:
- 25% viewed = event35
- 50% viewed = event36
- 75% viewed = event37
The main config file
If you’ve used Brightcove and SiteCatalyst before you’ll know that you create a config file with all of your SiteCatalyst variables declared in it, which is loaded into the AppMeasurementExtension file through the video player. Easy enough to do.
Simply create a new XML file called config.xml and put it somewhere on your servers.
The file should contain the following:
<config>
<account>your-rsid</account>
<debugTracking>true</debugTracking>
<visitorNamespace>your-namespace</visitorNamespace>
<trackingServer>your-tracking-server</trackingServer>
<media>
<autoTrack>true</autoTrack>
<trackMilestones>25,50,75,100</trackMilestones>
<trackVars>events,eVar50,eVar36,eVar37</trackVars>
<trackEvents>
event31,event32,event33,event34,event35,event36,event37
</trackEvents>
<segmentByMilestones>true</segmentByMilestones>
<trackUsingContextData>true</trackUsingContextData>
<contextDataMapping>
<a.media.name>eVar50,prop23</a.media.name>
<a.media.segment>eVar36</a.media.segment>
<a.contentType>eVar37</a.contentType>
<a.media.timePlayed>event31</a.media.timePlayed>
<a.media.view>event32</a.media.view>
<a.media.segmentView>event34</a.media.segmentView>
<a.media.milestones>
<item name="25">event35</item>
<item name="50">event36</item>
<item name="75">event37</item>
<item name="100">event33</item>
</a.media.milestones>
</contextDataMapping>
</media>
</config>
As you’ll immediately notice, the config.xml file got a whole lot longer than the original.
The context data mapping section describes each variable and the name. I found it easier to make a list of the names and values, write them down, then check them against my config when I’d finished, just to make sure everything was in the right spot.
Notice that event33 (our Video Complete event) is matched against the item.name=”100”.
AppMeasurementExtension
The next part is downloading the latest AppMeasurementExtension.swf file from your code repository inside SiteCatalyst. Once you’ve downloaded it, you need to upload it onto your server somewhere.
Brightcove
When you’ve uploaded your video to Brightcove, you edit/create a new player to include a custom plugin.

The plugin needs to know where the App Extension and Config file is. This demo is located at:
http://www.elephantsandanalytics.com.au/omniture/
AppMeasurementExtension.swf
?s.configURL=www.elephantsandanalytics.com.au/config.xml
Note that this is all on one line.
And that’s pretty much it. Again, how easy was that.
Now when you browse the video, and use something like Fiddler or WASP, you’ll see a number of new calls being made to the Adobe Omniture servers, at the beginning of the video play, during the plays and at the end.
Happy video’ing.
Related Posts
- Time spent by Traffic Source
- Flowplayer and SiteCatalyst v15
- Success Event Pathing
- What are our members doing?
- Hello 15!
- Elusive engagement – Part II – Visitor scoring
- Deeper internal search insights that’ll help with content needs
- Moving beyond business-based segmentation
- Migration frustration – SiteCatalyst 15
- New products announced at Adobe Omniture Summit 2011

Hi Tim,
Nice post. We are currently looking at this atmo. Two questions come to mind;
1) From your understanding, what are the options as you understand it using the method above for setting when the players sends Omniture server calls?
In our applications, we need to control costs around tracking long form videos with pre-, mid- and post-roll ads and would prefer only to send through data at the start of each ad or content segment. Our current Sc14 tracking implementation had to be custom created in order to achieve this. I’m wondering if Sc15 standard tracking will achieve this.
2) Will the above method also cater for the HTML5 players that Brightcove can auto-deploy using their client-aware smart player switching, or would we have to code a separate js-based tracking solution for these?
Happy for you to say ‘don’t know’ to either, and I’ll take up the questions with Omniture ClientCare
Cheers,
Toby
Hi Tim,
This is a very clean blog post. I got the url from a webinar hosted by Semphonic. I have the same question as Toby about HTML5 players. Since swf method will not work for HTML5 players, do you have any tips on video tracking with HTML5 players?
THanks
Jai
Hi Toby and Jai. You both raise good questions and to be honest, I don’t have an answer to that at the moment. If I get some spare time, I’ll check into it though and post back something if I find a solution.
Hey Tim,
Great post, but there are some errors in your XML file. If the node names aren’t capitalized properly the tracking won’t work.
For example, the following XML nodes should be mixed case:
debugTracking
visitorNamespace
trackingServer
Media
autoTrack
trackMilestones
trackVars
trackEvents
segmentByMilestones
trackUsingContextData
contextDataMapping
You’re absolutely right Patrick – my error in the post. The actual config file does have the correct capitalisation – thanks for pointing that out and I’ll update it shortly.
Cheers
Tim
We have just gone through this exercise on one of our players to test it before moving ahead with a wide spread roll-out.
What is unfortunate about this is that, rather than feeding the Brightcove Video Name into whatever prop/evar represents the Video Name in the Sitecatalyst reporting, what gets passed is the Brightcove Video ID prefaced with the Brightcove API version, like this:
Video by Player
1 Brightcove 3:1323832461001
2 Brightcove 3:1402642239001
3 Brightcove 3:1350747819001
4 Brightcove 3:1313014035001
5 Brightcove 3:1395327953001
This is not particularly useful to anyone. Even if they had a way to correlate the video ID to an actual video name this greatly limits the usability of this information to end users.
If you know of a way to change this, one that does not involve uploading classifications, but rather adjusts things so that what gets passed initially is the Brightcove Video Name and The actual player name instead, it would be really great to see a follow-up post from you on that.
Phil, unfortunately, there isn’t a way I know of that passes the friendly name of the video through. That’s definitely a pain as you need to use classifications to get reports nice. It would be great if more people approach Brightcove to enable this though.
It’s a social world we are living in.
http://www.facebook.com/Brightcove
If you would like to see this change put into action then you can ‘like’ the comment which now appears on their Facebook wall or add your own.
P.
We are also facing the same issue of Video Name not getting populated. The AppMeasurementExtension.swf needs to modified to facilitate this.
Secondly, you will need to ensure that you are providing the correct value for visitorNamespace and trackingServer if you are not using the normal Brightcove analytics engine.
Pav.
Hi,
is there any reason using below for Video Complete event, when I saw the implementation guide, there is a tag for Video Complete event like event33 ?
Notice that event33 (our Video Complete event) is matched against the item.name=”100”.
@Tim,
Did you find a way to track videos for HTML5 players?
Sam
Hi Sam, no unfortunately I’ve not had the time yet to play with the HTML5 player. If I do though, I’ll post something here.
Is it possible to set the account (reporting suite ID) dynamically? I need to use the same video player on multiple sites, each with its own SiteCatalyst reporting suite ID. I’d hate to have to create separate players for each site, when the only difference is the account variable.
Good question John. I’ve not tried that, but, as the report suite id is effectively hard-coded into the config.xml, it would certainly make changing it dynamically a problem. Have you tried raising that request through Client Care to see what they say?
What reference have you used to construct your config.xml document?