If you’ve spent any amount of time using SiteCatalyst, you’ve probably run across the Netscape Plug-ins report. This is a nice report to see what browser plug-ins your visitors have installed, however (as you can probably tell from the name of the report), this report does not include visitors running IE, which probably makes up a good bulk of your traffic.
Knowing all the plug-ins a visitor has installed may or may not be all that important to you, however there may be a select few plug-ins that are critical to providing your users with a quality experience.
If you Google ‘javascript browser plugin detection’ you will find a large number of scripts you can download to identify browser plug-ins.
Why do we need a script anyway?
Firefox exposes an object, navigator.plugins, which provides an array of browser plug-ins, which I’m assuming Omniture makes use of when populating the Netscape Plug-ins Report, however IE does not. In order to detect plug-ins within IE, you are forced to instantiate the ActiveX Control for the plug-in you want to detect.
Items to consider before tracking plug-ins in IE:
1. Instantiating ActiveX Controls on every page of your site, may have a negative impact on user experience, so only detect the plug-ins that are most important to measure.
2. When you instantiate an ActiveX Control for the first time, the browser will give a popup warning message asking you to approve or disapprove the control, you know, the yellow bar at the top of the browser. Not the greatest thing from a measurement perspective.
There are a set of “approved” ActiveX Controls that will not trigger the popup warning. If anyone knows where this list of approved controls is published, please let me know.
OK, I understand why I need to track IE plug-ins differently and the potential drawbacks, so how do I deploy the tracking?
As I mentioned, there are a wealth of pre-built scripts available on the Internet that you can make use of. I made use of a free script available from JavaScriptKit.com. I took this script and modified it to my needs — track if my visitors had Flash installed or not.
I added the following code snippet to my doPlugins function within my s_code.js file.
var agt=navigator.userAgent.toLowerCase();
var ie = (agt.indexOf("msie") != -1);
var ns = (navigator.appName.indexOf("Netscape") != -1);
var win = ((agt.indexOf("win")!=-1) || (agt.indexOf("32bit")!=-1));
var mac = (agt.indexOf("mac")!=-1);
if (ie && win) { pluginlist = detectIE("ShockwaveFlash.ShockwaveFlash.1","Shockwave Flash"); }
if (ns || !win) {
nse = ""; for (var i=0;i < navigator.mimeTypes.length;i++) nse += navigator.mimeTypes[i].type.toLowerCase();
pluginlist = detectNS("application/x-shockwave-flash","Shockwave Flash");
}
function detectIE(ClassID,name) { result = false; document.write('\n'); if (result) return name+','; else return ''; }
function detectNS(ClassID,name) { n = ""; if (nse.indexOf(ClassID) != -1) if (navigator.mimeTypes[ClassID].enabledPlugin != null) n = name+","; return n; }
pluginlist += navigator.javaEnabled() ? "Java," : "";
if (pluginlist.length > 0) pluginlist = pluginlist.substring(0,pluginlist.length-1);
if (pluginlist.indexOf("Flash")!=-1){
s.prop8="Flash Installed";
}
else{
s.prop8="Flash Not Installed";
}
Notice that I altered the code to only look for “Flash” but you can in theory look for any browser plug-in using this approach, you just need to know the name of the Class/Object.
In this example, I have captured if Flash is installed or not into a custom traffic variable (prop) and correlated it with Browser.






Avinash Kaushik
Crepuscular Light
Kevin Rogers
Pritesh Patel
Rudi Shumpert
The Art of a Viral Campaign
This morning I awoke to a new campaign that was launched by the guys at Visual Website Optimizer and I was impressed.
Let’s break down the campaign:
The campaign landing page, in this instance a blog post, clearly provides incentive for visitors to engage in the campaign. Take a look at the blog title, who doesn’t want to win $3000 worth of optimization services?
The parameters of the campaign (the challenge, prize, steps for how to enter, how the winner is chosen, and additional background information about the challenge) are clearly presented, front and center, and above the fold.
The call-to-action, pick which design you think is the winning version, is cleanly presented on the page but what makes this work is how easy they made it to “enter the contest”. A Tweet button is located beneath each option, you click the Tweet button for the version you think is the winner and that’s it, you’ve entered the contest. Not only is this super easy for the visitor to do but it creates a great viral component to the campaign — now all my followers know I’ve chosen my winner is some contest, I’m sure they will click the link to find out more.
It was no surprise to me that after I tweeted my pick, conversations began to popup on Twitter about the contest.
Several of my followers entered the contest themselves.
A few side conversations started about why one version would perform better than the other.
Also, many of my followers retweeted my original Tweet that was generated when I entered the contest.
I would be amiss if I didn’t comment on targeting content to your audience. This campaign is perfectly targeted to those of us who work in the measure and optimization community. We all like to think that we know best when it comes to how to design a site for increased conversions, a test, a very public test, is a great way for us to prove our skills. Campaigns that play on ego are typically very successful.
I’d be very interested to hear from the team at Visual Website Optimizer on how well this campaign performed. From the outside looking in, this is a model for how to run a successful viral campaign.