A com­mon ques­tion from Site­Cat­a­lyst users and devel­op­ers deals with detect­ing the ver­sion of Adobe Flash Player that vis­i­tors have installed in their browsers. This infor­ma­tion can be use­ful in deter­min­ing what ver­sion of Flash your appli­ca­tions should require. There are a few dif­fer­ent ways to cap­ture the user’s Flash Player ver­sion, and I think there is some con­fu­sion about the best meth­ods for doing this.

What I have always rec­om­mended is to use one of the many scripts avail­able for free, and to put the out­put into a Cus­tom Traf­fic (s.prop) and/or Cus­tom Con­ver­sion (eVar) vari­able on the pages of your site.

Five min­utes ago, I searched for “flash ver­sion detec­tion” in Google and came up with a num­ber of viable options; Adobe even offers a Flash Detec­tion Kit, which includes com­plete instruc­tions and exam­ples for detect­ing the Flash ver­sion using either Flash itself or JavaScript.

The Adobe exam­ple includes a func­tion, GetSwfVer(), which returns the Flash ver­sion num­ber. This can eas­ily be placed into a Site­Cat­a­lyst vari­able by apply­ing the script to your page code and then set­ting some­thing like:

s.prop31=GetSwfVer();

or

s.eVar17=GetSwfVer();

Other Flash detec­tion scripts work sim­i­larly; once the func­tion has got the Flash ver­sion num­ber in a vari­able or as the result of a func­tion call, putting this data into a Site­Cat­a­lyst vari­able is as easy as set­ting the Site­Cat­a­lyst vari­able equal to the vari­able or func­tion name.

Keep in mind that traf­fic and pathing met­rics (pri­mar­ily Page Views, Vis­its, Vis­i­tors) are avail­able or can be enabled on Cus­tom Traf­fic reports, whereas con­ver­sion met­rics (Orders, Rev­enue, cus­tom events, etc.) will be the stars of the show if you use Cus­tom Con­ver­sion reports for Flash detec­tion. Make sure to pass the Flash ver­sion into the desired type of vari­able; cer­tainly, if you have spare vari­ables, you can pass this data into both types.

This question—how to track Flash ver­sion number—provides a great exam­ple of how com­mon scripts avail­able on the Inter­net can be used in con­junc­tion with a Site­Cat­a­lyst imple­men­ta­tion to meet report­ing needs. The solu­tion I described above doesn’t require an Omni­ture plug-in or hours on the phone with Client­Care. You don’t need to be an Omni­ture cer­ti­fied imple­men­ta­tion pro­fes­sional. All you need is a lit­tle bit of JavaScript savvy and your favorite search engine. That isn’t to say that you def­i­nitely won’t run into ques­tions, con­cerns, or prob­lems, but the point is that there are some really cool/powerful things you can do inde­pen­dently by com­bin­ing your own code (or code pub­licly avail­able for use) and your Site­Cat­a­lyst implementation.

As always, feel free to leave com­ments, e-mail me (omniturecare@​omniture.​com), or con­tact me via Twit­ter (@OmnitureCare) with ques­tions or ideas for future blog posts!

  • http://blog.gilluminate.com Jason Gill
    • http://blogs.omniture.com/author/bgaines Ben Gaines

      That’s awe­some, Jason! This is exactly what I’m talk­ing about—you saw a report­ing need, you fig­ured out a way to do it, you made it hap­pen. Some­times a plug-in is the way to go, but some­times your par­tic­u­lar need can be met (and man­aged) just as eas­ily (or more eas­ily) using some­thing home-baked. Great work.

  • http://etrade.com.au Sam Potts

    We have done a sim­i­lar imple­men­ta­tion but using SWFOb­ject also…

    //Get flash ver­sion using SWFOb­ject (prop27)
    try
    {
    var ver­sion = deconcept.SWFObjectUtil.getPlayerVersion();
    var flashVer­sion = “None”;
    if (version!=“undefined”)
    {
    if(version[’major’] > 0) flashVer­sion = version[’major’] +”.”+ version[’minor’] +”.”+ version[’rev’];
    else flashVer­sion = “None (or Dis­abled)”;
    }
    s.prop27=flashVersion;
    }
    catch (e)
    { s.prop27=“Browser Error”; }

  • http://etrade.com.au Sam Potts

    Ben,
    We’ve done a sim­i­lar imple­men­taion using SWFOb­ject:
    var ver­sion = deconcept.SWFObjectUtil.getPlayerVersion();
    which returns an array of ver­sion:
    var flashVer­sion = version[’major’] +”.”+ version[’minor’] +”.”+ version[’rev’];

    Cheers
    Sam