From time to time, I receive ques­tions from clients ask­ing how to track some­thing that doesn’t fall under the gen­eral cat­e­gory of “page view”—a link, a but­ton, an image, a form interaction—something that can’t eas­ily be cap­tured sim­ply by tag­ging a page with Site­Cat­a­lyst code, even using cus­tom vari­ables. After all, when the page loads, you don’t know what link users will click, what but­tons they will press, or what val­ues they will enter into forms.

Nearly always, these solu­tions involve a fea­ture built in to Site­Cat­a­lyst JavaScript code called cus­tom links (also known as Cus­tom Link Track­ing, or Link Track­ing for short). For those not famil­iar with the con­cept, Link Track­ing allows you to pass data into Site­Cat­a­lyst prac­ti­cally when­ever you want—not just when the page loads—opening the door to track link clicks, image loads, form inter­ac­tions, and nearly any­thing else that hap­pens on your site. Ever.

If you are an expe­ri­enced Site­Cat­a­lyst user, you may already be famil­iar with a form of Cus­tom Link Track­ing; file down­loads and exit links are typ­i­cally tracked auto­mat­i­cally when Site­Cat­a­lyst code is imple­mented on your site. I’ll explain in more detail later how these fea­tures work; for now, suf­fice it to say that they lever­age the same basic func­tion­al­ity that we’re about to discuss.

Why Cus­tom Link Tracking?

It almost goes with­out say­ing that every web site is a dif­fer­ent ani­mal. How­ever, this point is worth mak­ing because it is the exact rea­son why Cus­tom Link Track­ing can be so pow­er­ful. If every site fol­lowed the same basic tem­plate, and if each orga­ni­za­tion had the same KPIs and goals, then Site­Cat­a­lyst code would be able to antic­i­pate what links and other user actions you would want to track, and would pass along the data accordingly.

You may work on a lead gen­er­a­tion site, pass­ing users along to part­ner sites via links on your pages.

You may oper­ate a media site, with suc­cess being deter­mined in part by impres­sions and click-throughs of third-party advertisements.

Your site may be retail-oriented, serv­ing upsell rec­om­men­da­tions via a sleek AJAX-based over­lay on shop­ping cart pages.

Or your site may be some­thing com­pletely different.

In each of these cases, apply­ing Cus­tom Link Track­ing code to links, images, form fields, and other page ele­ments where you want to track some­thing can pro­vide the insight that page view data doesn’t. Note that “Link Track­ing” is some­thing of a mis­nomer; while track­ing link clicks is its pri­mary pur­pose, this fea­ture can be applied to nearly any­thing, and not just to links.

A great exam­ple of this is an AJAX-heavy site, which relies heav­ily on Link Track­ing because of one of the feature’s main advan­tages: while it is capa­ble of pass­ing nearly any type of Site­Cat­a­lyst data, there is one thing that it does not do. It does not count a page view. Sites that change the con­tent of a page with­out actu­ally load­ing a new page may not want to count a new page view every time the con­tent changes. For these sites, Cus­tom Link Track­ing is perfect—it will pass any­thing but a page view.

How Does Link Track­ing Work?

The nuts-and-bolts of imple­ment­ing Cus­tom Link Track­ing are actu­ally fairly sim­ple as JavaScript goes. They are explained ade­quately in our Link Track­ing white paper, avail­able from the Site­Cat­a­lyst online help site. If you find that you still have ques­tions about the tech­ni­cal aspects of Link Track­ing after read­ing that white paper, leave me a com­ment and I’ll do my best to address them.

The Link Track­ing code is typ­i­cally applied either

  1. directly in an JavaScript event han­dler (usu­ally onclick, but oth­ers work as well), or
  2. for more dynamic func­tion­al­ity, in a sep­a­rate func­tion called in an event handler.

Link Track­ing (includ­ing auto­matic down­load and exit Link Track­ing) is based on a func­tion built into the Site­Cat­a­lyst “s” object, called s.tl(). When called, s.tl() builds a Site­Cat­a­lyst image request con­tain­ing the Cus­tom Link Track­ing data that you choose to pass, along with data for any other vari­ables you’ve cho­sen to populate.

As an aside, for those of you with Action­Source expe­ri­ence, s.tl() is the JavaScript ver­sion of s.trackLink(). Their pur­pose and struc­ture is the same.

In the case of auto­matic down­load and exit Link Track­ing, when a page loads, Site­Cat­a­lyst inserts an s.tl() func­tion call into the onclick event han­dlers for any link where the href attribute

  1. ends in one of the exten­sions spec­i­fied in the s.linkDownloadFileTypes vari­ables (for file down­loads), or
  2. does not con­tain any of the strings spec­i­fied in the s.linkInternalFilters variable.

There are, essen­tially, three “types” of cus­tom links; you can spec­ify the type of link that you want to count when you make the s.tl() func­tion call. These types are:

Link Type Descrip­tion Des­ti­na­tion Report
o Other/General. This is listed first because it is the most com­mon choice. Used as an all-purpose option, or when­ever you know that you don’t want the action to be con­sid­ered a file down­load or an exit link. Site Con­tent > Links > Cus­tom Links
d File Down­load. Use this when you want the action to be con­sid­ered a file down­load (e.g. an HTML page that con­tains the text of a length piece of documentation—it isn’t going to be tracked as a file down­load auto­mat­i­cally, but for your pur­poses it may be equiv­a­lent to down­load­ing the PDF). Site Con­tent > Links > File Downloads
e Exit Link. Set­ting this type will cause the action to be con­sid­ered an exit link. Site Con­tent > Links > Cus­tom Links

The value in the “Link Type” col­umn above goes into the sec­ond argu­ment in the s.tl() func­tion call to deter­mine the type of link to count, which also deter­mines which report that will receive the data gen­er­ated by the given link click (or other action).

A Few Things Every­one Should Know About Link Tracking

You can pass just about any­thing using Link Track­ing.
As I men­tioned above, there is really only one thing that Link Track­ing won’t do for you: count a page view (and may pass, but will not count, a page name). Any other cus­tom vari­able can be passed by lever­ag­ing the s.linkTrackVars and s.linkTrackEvents vari­ables explained in the online documentation.

Want to pass pur­chase data using cus­tom links? No prob­lem. On that final pur­chase but­ton, set s.linkTrackVars="events,products,purchaseID", set s.linkTrackEvents="purchase", set each of these vari­ables and events dynam­i­cally, call the s.tl() func­tion, and away you go.

Need to grab the user’s waist size when he/she clicks the “waist size” drop-down menu on your prod­uct view page? Piece of cake. The drop-down has an onchange event han­dler, so you can pass the waist size (or any­thing else, for that mat­ter) into a prop or eVar when­ever the drop-down selec­tion changes and fire off an s.tl() func­tion call. Voila. You know what per­cent­age of users is between a 32– and a 40-inch waist.

You have a sur­vey on your site, and you’re sick of los­ing out on data from par­tial responses? Pass the response to each ques­tion into a prop and tag the “Next” but­ton with Link Track­ing code. Some­thing like s.prop1="question 1:yes" or s.prop1="question1:no" for each of the ques­tions and pos­si­ble responses should do the trick. That way, when­ever some­one answers a ques­tion, you’ve got it recorded—even if he or she aban­dons the sur­vey halfway through.

Want to cap­ture an image load as a file down­load? Easy. When you’re putting Link Track­ing into the onload event han­dler in the image tag, just make sure to set the sec­ond argu­ment in s.tl() to a ‘d’ and you’re all set.

And I could keep going. As I said, if you aren’t sure how to cap­ture data that you need after read­ing this post and the avail­able doc­u­men­ta­tion, please leave me a com­ment and I’ll address it.

Cus­tom Link Track­ing does not count a page view.
I already men­tioned this, but it war­rants men­tion­ing again here. This means that you will not see any data in your Pages report due to Link Track­ing data. Your report suite page view totals will not change when cus­tom link data is passed. How­ever, Cus­tom Link Track­ing does count vis­its and vis­i­tors. Thus, it is pos­si­ble to have more vis­its than page views. I have seen this in rare cases for sites that rely very heav­ily on this feature.

You may some­times hear Omni­ture rep­re­sen­ta­tives refer to Link Track­ing image requests as “non-page view events.” Now you know why.

Cor­re­la­tion data is only avail­able when the two vari­ables in ques­tion were passed on the same image request.
What does this have to do with Link Track­ing? Occa­sion­ally, users will com­plain that when they go to a Cus­tom Traf­fic report and break down a value in the report by Pages, they get no data. My first ques­tion is always, “Are you pass­ing the prop data on a Link Track­ing image request?” If the answer is yes, then they’ve answered their own ques­tion. If the prop is pop­u­lated using Link Track­ing, then there is no page name value for that hit. Thus, the cor­re­la­tion doesn’t have any data for page name.

The workaround is to pass the page name into another prop on every cus­tom link image request, and then enable a cor­re­la­tion between the orig­i­nal prop and the new one stor­ing the page name.

If you are using Link Track­ing on some­thing other than a link, you’ll need to tweak s.tl() slightly.
The first argu­ment in the s.tl() func­tion call is set to “this” by default, with “this” refer­ring to the href attribute of the page ele­ment that trig­gered the s.tl() call. The only prob­lem with “this” in the con­text of non-links is that anchor tags (i.e. links) are typ­i­cally the only page ele­ments that have an href attribute. There­fore, if you are tag­ging a form field, a but­ton, an image, or any­thing that isn’t a true HTML link with Cus­tom Link Track­ing code, “this” will be null. Sim­ply change it to “true” and it should work just fine.

Cus­tom Links do count as server calls.
They can answer ques­tions that nor­mal page views can­not. At the same time, use them wisely.

Even if auto­matic down­load and exit link track­ing is work­ing fine, there may be cases where you should con­sider Cus­tom Link Track­ing for file down­loads and exit links.
In this post, I have already men­tioned and explained SiteCatalyst’s auto­matic file down­load and exit link track­ing mech­a­nism. This will track the URLs of your down­loaded files and exit links, but what if you want to pass addi­tional variables—props and eVars, or events—when these links are clicked? What if you want com­plete con­trol over the val­ues of these vari­ables when users down­load a file or exit your site? The auto­matic func­tion­al­ity is a great start, and, depend­ing on your busi­ness needs, it may be enough. How­ever, if you deter­mine that it isn’t enough, Cus­tom Link Track­ing is a great way to take the reins and get the most action­able data pos­si­ble regard­ing these user inter­ac­tions with your site.

You can­not debug Link Track­ing image requests using the JavaScript Debug­ger, so get famil­iar with a packet mon­i­tor.
I rec­om­mend Tam­per­Data for Fire­fox, HTTP­Watch for IE, or Charles for both. Each of these tools will allow you to fil­ter your HTTP requests to show only Site­Cat­a­lyst image requests by includ­ing only URLs con­tain­ing the string “/b/ss/”, which is a part of every Omni­ture request.

You can tell that you are look­ing at a Link Track­ing request if you see a “pe=” para­me­ter in the image request. It should be set to “lnk_”, fol­lowed by the let­ter that you chose in the sec­ond argu­ment of s.tl(), as described above.

The s.tl() func­tion involves a built-in 500 mil­lisec­ond delay for very good rea­son.
This delay is in place to allow the s.tl() func­tion to exe­cute before the next page loads, in cases where Link Track­ing is applied to links. If the next page loads before the image request has a chance to be sent, your data will not be tracked. Depend­ing on your imple­men­ta­tion, this 500 mil­lisec­ond delay may not be nec­es­sary. For instance, AJAX calls do not involve new page loads, so there is no threat of the browser mov­ing on to the next page before the Link Track­ing request is sent. To dis­able the delay, set the first argu­ment in s.tl() to “true,” as described in #4 above.

75 comments
Ameer
Ameer

I was trying to track clicks within "ShareThis" widget, could you verify the below if it is correct function trackWithOmniture (event,service) { var s = s_gi("bmcsoftware"); s.tl(this, 'o', "+service); s.pagename = ”” // Add a 500ms delay to allow the image request to complete before leaving the page b=e=new Date; while(e.getTime()-b.getTime()<500) { e=new Date; } } stLight.subscribe("click",trackWithOmniture); //registers the callback function with sharethis

Joszhl
Joszhl

My grand-father thought I would appreciate this website. It was utterly right. This publish in fact saved me a whole lot of time. You can not conceive of just how a great deal time I had exhausted for this info ! Thank you! As a final point , give permission me thank you for your tolerance with my English as (I'm convinced you have become aware this by now,), English is not my first language hence I am utilizing Google Translate to figure out what to compose what I sincerely mean to write .

Ken
Ken

Ben, first to apologize if this is not the place to post this question but i couldn't find anywhere else to push this query on to an omniture support site. if so please do direct me. much appreciated. I'm working in one of SEA's ad networking company and we've managed to do a campaign where our client's using sitecatalyst to measure referrals coming from our ad network and also other places. A "cid=" was embedded to the click url of the creative running in our network. it looks something like this: http://www.campaignpage.com?cid=adnetwork_300x250 Campaign ran successfully and our ad network recording 2000 clicks all in all but when our client pulled out their report on omniture, it's a 600+ click report. Is there something you can suggest as how an ad network (vendor) should properly measure with omniture? I understand the idea of first and third party cookies, and if we're actually comparing ad network's clicks against omniture's visits which is wrong i think. Was there any experiences on your end that may have an impact similar to this? appreciate your advice.

Melissa
Melissa

We have links that direct users to another page within our website and we want to know when someone uses one of these links as opposed to another navigation method. We are firing an onclick to accomplish this. We are populating "pev2" with a custom link name, but we don't always see the link type (o, e, d) populate in "pe" when using a web debugger. Will not firing a pe value cause the pev2 value to not appear in the Custom Links report? Does pe always have to populate in order for the Cusom Links report to show the correct values? Thanks!

MitchellT
MitchellT

This is a great article - but my CMS won't allow me to add 'onClick' events. How can I add query string parameters to links on the site and have them tracked?

Abishek
Abishek

Hi Ben, I need to track value entered in a textbox after button is clicked in the web page, so I am calling j-script method on onclick event for the button & j-script function is: var s = s_gi(account'); s.linkTrackVars = 'eVar1'; s.eVar1 = 'text'; s.t(); So in sitecatalyst under eVar1, i should see text with count. But it is not coming if i replace s.t() with s.tl(this,'o','text'); then i see text string under custom links...... but i need it to be counted under evar1 -Abishek

Shaun
Shaun

Ben, I'm applying link tracking on download links and populating additional parameters (events and evars). However, I have automatic tracking kicking in that picks up these parameters on the next link I click on. For example: I have a download link that fires off its own convention (pev2) with event 1 and evar1 populating two calls get fired. The custom tracking gets called and Omniture's automatic download tracking. What happens is the next download I click on that has custom tracking my custom tracking files correctly (pev2) with event2 and evar1 populate but the second automatic call that Omniture fires on its own also populates an event evar. It populates event1 and evar1 (these are the parameters from the previous download I clicked on.This is a hypothetical example, but this is the gist of what’s going on. The site i'm working with is www.inventivclinical.com. If you use fiddler, or fire bug you can see what's going on by clicking a download and then click a subsequent download or exitlink. Any help to fix this problem would be great, since client care has not been able to help me with this issue.

Surjith
Surjith

Hello Ben, We implemented click tracking on a banner in our site. Initially, we had designed the banner using tag and the tracking code was put inside the onclick of the div. However, the values were not getting passed, The tracking started working once we changed the tag to anchor tag. So, my question is, will the s.tl() function work only with anchor tags? Is there any way we can use s.tl() on click of a div?

Alyx
Alyx

Ben, it works perfectly now. That did the trick. Thank you!

Alyx
Alyx

Ben, could you please take a look at a custom link I'm trying out? The code is on just one link here -- on the onclose function for the popup on January 18th: http://www.saveur.com/foodiegiveaway/ a href="javascript:void(0)" onclick="popupclose('Jan18');var s=s_gi('bonnsaveur');s.tl(true,'o','Monari Federzoni')"><img class="PUClose" src="close.gif" alt="Close"/ It shows as lnk_o in my packet sniffer, but not in SiteCatalyst! Livechat did offer to look into it -- but I think it has to just be some minor error I've made with the code. Thanks :)

Harsh
Harsh

HI ben, One last question, so I understood that i can do campaign tracking and enable pathing on that s.prop to track the visitors’ navigation through the site. Is there any way to track and see if that unique visitor who came from a unique campaign had downloaded a file? Pretty much what i would like to see is the conversion rate of visitors clicking on a particular campaign link and how many of those visitors got to actually downloading a file on my site. Also would like to classify each campaign like emails or externals links on blogs. hope that makes sense Harsh

Harsh
Harsh

Thanks Ben Looks like Campaign Pathing along with tracking code and classifications should get me what I am looking for. Again thanks for your help Harsh

Harsh
Harsh

Thanks a lot ben for breaking ti down for me. I will definately give campaign tracking a try. My only concern is if it will also show me the navigation full path user takes after coming to the landing URL. I also want to be able to track that user who came from the Email or Other website, where else is he going (clicking). Basically like a next page flow report. Thanks Harsh

Harsh
Harsh

Essentially what i am trying to get is, how many times and which links were clicked (click throughs) either in an Newsletter or a webpage that doesn't have a s_code.js file. And where the the user go after getting to the landing page. Which other links are being clicked (full navigation path). Thanks, I really appreciate it.

Harsh
Harsh

Hi Ben, Thank you so much for your prompt response. I was using Web trends earlier and our company just transferred to Omniture. In webtrends i use to use something called parameter analysis tags, which was just some code that i had to put at the end of each url of which clicks i wanted to record. Most of these pages don't use the s_code.js file so i need a way to figure out for site catalyst to record the click throughs. I would like to track the full path of the user that came to the landing page from the original URL he clicked on. Do you think camping tracking is a better way for me ? Thanks Harsh

Harsh
Harsh

Hi Ben, Sorry if this is a really basic question. I need to figure out how to do link tracking in omniture. That is I put a link out in a newsletter or other website and I need to track how many click throughs on that link and where they went in our site. Thanks Harsh

Alin Shah
Alin Shah

Hi Ben, we are an Entertainment news magazine website. We are in the process of imlementing a new website in which we are planning to implement a few functionalities where , for an example, there will be bunch of news stories on our home page and for each story user will have an option to do a "Quick Preview" which will expose the first paragraph of the story being on the same page. This does not involve Ajax but only javascript. And we would like to count the number of times users click on "Quick Preview" link. I would really appreciate if you can address this confusion of us as soon as possible.

Abhilash
Abhilash

Hi Ben, In my web site, user can select multiple products and place an order. my product string has the following pattern: s.product = “;100;1;0.45,;101;1;0.55,;102;1;0.65,”; // ;id;1;price, and then I am calling s.tl() after populating s.linkTrackVars and s.linkTrackEvents variables. But in my reports I am seeing orders always same as units. My understanding is that, units should be the number of items selected (100,101 & 102) and order is the number of times I place the order. For example, in the above case I am expecting units as 3 and order as 1. But I am getting units as 3 and order as 3. Any thoughts Ben? Thanks Abhilash

Mike
Mike

I have been looking for the white paper "Link Tracking" mentioned in several forum comments and this blog. The stated place (in one of the comments of this blog) is no longer valid. Canyou tell me where the white paper is? Also, is there an API/reference or documentation on using the Omniture javascript code? How is the javascript as-described in this blog related to what I see as the "beacon javascript" functions?

VaBeachKevin
VaBeachKevin

I just want to confirm that I can get Unique Visitors that have clicked on the custom tracked link?

Suzy Borsh
Suzy Borsh

Hi, I have a question here: I am looking for data for my 'clickout'; meaning when a visitor clicks on a product, it will be linked to an external page. My question is, where shall I look at to collect the data; is it Exit Links or Custom Links? Also is tagging necessary in this instance? Thanks, Suzy

lg
lg

Ben, We tried the onload but its not working for us...we cannot see anything come through via httpfox on firefox and no data in the the metrics report. Here is the code we are using, can you see anything incorrect? onload="var s=s_gi('devrs'); s.linkTrackVars='products,events'; s.linkTrackEvents='event4'; s.products=';member: section'; s.events='event4'; s.tl(true,'o','Ad Impression');"

lg
lg

Ben, Can the custom link tracking code be used to create an image request that fires off when an ad is loaded? since the s.products variable has a limited size and I have several adds on the site I want to pass those ad impressions (not clicks) on a separate image request but dont want to inflate my page views.

Abhilash
Abhilash

Hi Ben, Thanks for looking into it. I have used 'c' as a second argument as suggested by our Omniture consultant! Somehow it is working too. But when I saw your comment, I looked back at the documentation and found you are correct. Can you please tell me how bad this can be if the second argument is wrong? Thanks Abhilash

Abhilash
Abhilash

Hi, My issue (Ref: Abhilash2009/5/22 @ 8:23 am) is resolved and sharing the solution so that others can use. var s=s_gi(s_account); s.events = "purchase"; products="100;1;1"; s.products=products; s.linkTrackVars="prop16,eVar16,events,products"; s.linkTrackEvents="purchase"; s.tl(true,"c","Submit "); Thanks Abhilash

J.
J.

How do you calculate a click-through rate of a link if the page views aren't being counted? How would you set up the s.tl and a calculation metrics?

Andrey
Andrey

Sorry, you are right and I am wrong :-) It seems that Firebug has a bug when debugging http requests (it showed only one request for 2 s.t() calls). But in Fiddler there are 2 requests in all browsers.

Andrey
Andrey

Ben, you write that "s.t() function is designed to send the Omniture image request as soon as it executes". But there is 500 ms delay in that s.t() request. And if I assign s.eVar20 = 'XXX' even after s.t() call, it will be sent with s.t() request. And it will be actually sent in 500 ms period of time after s.t() call. Am I wrong?

Andrey
Andrey

Thanks Ben. I will request to place s.t() call at the bottom of the page. It's a pity that we cannot send eVar in addition (or include it in current s.t() request)

Ben Gaines
Ben Gaines

Hi Ken, No worries! This is an okay place for any discussion at all on the topic of web analytics. :) What you're describing isn't entirely uncommon, although a discrepancy of that size could probably be investigated. The best explanation of possible sources of discrepancy between SiteCatalyst campaign measurement and ad network (or PPC network) metrics is found in our Knowledge Base, specifically in article ID 9536, "Why does the number of clicks reported by a third-party ad vendor or search engine differ from Click-throughs or Searches in SiteCatalyst?" It lists several possible causes. (You can get to the KB from within SiteCatalyst by going to Help > Knowledge Base.) Of course, whenever we are talking about different systems, potentially using different tracking technologies/methodologies, that are tracking at different times (at the time of click as opposed to on landing page load), there is going to be some discrepancy. It will never be a true apples-to-apples comparison. That said, your client could potentially give you access to contact our ClientCare team for additional help debugging the SiteCatalyst report in question to make sure it's comparing "apples-to-apples" as much as possible (e.g., similar metrics, dates, etc.), and the support staff can even analyze the raw, click-stream data in some cases to validate that we are properly reporting clicks to this campaign. That would be my recommended next step, if the answer given in the KB article referenced above doesn't help. Thanks, Ben

Ben Gaines
Ben Gaines

The key thing is to have a pe= value of either lnk_o, lnk_d, or lnk_e. Without one of those three, link tracking requests will not be counted as links; any variables you are setting should be recorded, but the overall image request will be counted as a page view. If this code is available publicly, please feel free to post a link and I'll give it a shot to see what might be going on.

Ben Gaines
Ben Gaines

Mitchell, There are a couple of ways to capture user actions without using link tracking. The first is to use campaign tracking, as you've suggested. Add a query parameter to your hrefs and then use the getQueryParam plug-in (or similar) to capture the param value on the next page. Of course, that requires that a.) the user action generate a new page view, so that the SiteCatalyst code runs again, and b.) that the action not take the user beyond your site, where there won't be SiteCatalyst code waiting for him/her to capture the action data. The other option is to use a plug-in like the one I posted on automatic exit link tracking to add a global event listener, which doesn't involve applying specific onclick events and could therefore be allowed by your CMS. Let me know if you have any other questions! Thanks, Ben

Ben Gaines
Ben Gaines

Abishek, A few thoughts: 1.) You should probably never use s.t() in this case. It will count an additional page view in your report suite, and it sounds to me like the user action in question does not actually constitute a new page view. The s.tl() function should give you exactly what you need here, as it can pass custom variable data without incrementing page views. 2.) What metric are you using when you check for this value in the eVar1 report? Make sure you have changed it to Instances. 3.) The rest of the implementation looks pretty good to me. Are you seeing the eVar1 value passed in the request when you use a packet monitor to observe the request going out? Let me know if there is anything else I can do to help. Thanks, Ben

Ben Gaines
Ben Gaines

Shaun, Lemme make sure I grasp this: You have an event and an eVar that get set when you implement link tracking, but then the same event and eVar get populated (unexpectedly) when automatic download/exit link data gets sent subsequently? If that is what you're seeing, have you tried clearing out the variables in question after the s.tl() call? If that is not what you're seeing, let me know. I went out to the site you mentioned and clicked some PDF links, but I didn't see a link tracking request when I did so. If you can let me know exactly what to click, I'll be happy to take a closer look. We'll get to the bottom of it one way or another. Ben

Ben Gaines
Ben Gaines

Surjith, In short, you definitely CAN use link tracking with non-anchor elements, although you would need to update the way you call the s.t() function. In the subsection labeled "If you are using Link Tracking on something other than a link, you’ll need to tweak s.tl() slightly," the post describes how to apply link tracking to non-anchor tags. When calling s.tl(), the first argument, "this" refers to the href of an anchor tag, so trying to use "this" as an argument in another context won't work correctly. Changing the argument to "true" should resolve the issue; however, it also prevents the 500ms delay that ensures the transaction occurs with our servers before moving on to the next page, so you may want to implement a manual delay in these cases. I hope this helps! Ben

Ben Gaines
Ben Gaines

Alyx, My packet monitor showed that the request was successful, too. A couple of things, though, that might help: 1.) Try moving the popupclose() function so that it comes after the s.tl() call. This will ensure that s.tl() has a chance to run before the pop-up window closes. 2.) Because there is an anchor tag involved, you can use "this" as the first argument in s.tl() instead of "true." This allows for the 500-millisecond delay to give s.tl() a chance to send the image request and receive the response. Let me know if those two changes don't help! Thanks, Ben

Ben Gaines
Ben Gaines

Harsh, This could be done by passing a custom event (using link tracking, as described in this post) when users download a file. This would enable you to pull the "File Downloads" custom event into the Tracking Code or Campaigns reports and see how many file downloads were attributed to each code/campaign in the reports. As for classifying your campaigns, this is certainly possible. Check out Adam Greco's excellent post on SAINT classifications to learn how this can be done according to your specifications. Thanks, Ben

Ben Gaines
Ben Gaines

Harsh, Great question. There are a few ways to do this. 1.) ASI lets you request all visit data for any user who came to your site via a certain campaign tracking code (or group of tracking codes). Then you can run pathing reports (included Next Page Flow) for only those users. 2.) You can use a Custom Traffic (s.prop) variable with pathing enabled to set up something called "Campaign Pathing." (This topic really warrants its own blog post.) The basic idea is that you concatenate the page name and the campaign tracking code: s.prop1=s.pageName+":"+s.campaign This gives you values like "Home:jun09_campaign" on landing pages (i.e., just after the user has clicked through a link on a third-party site) and just the page name on other pages. You can then go to pathing reports for the Custom Traffic variable (in this case, s.prop1) and set the start of the path to (for example) "Home:jun09_campaign," and you'll see the pages that followed it. This is described in the SiteCatalyst Implementation Guide under the heading "Campaign Pathing." I hope this helps! Ben

Ben Gaines
Ben Gaines

Harsh, That definitely sounds like campaign tracking to me. It's okay that the sites on which the links reside won't have SiteCatalyst code on them; this method allows you to determine where the user came from AFTER they get to your site. For example, let's say you have a link to your site on a third-party site, xyz.com. Instead of linking to "http://www.yoursite.com/", you could link to "http://www.yoursite.com/?cid=xyz.com". This would take the user to the same landing page, but it would have "cid=xyz.com" in the query string on the landing page. SiteCatalyst can easily capture "xyz.com" out of the query string on the landing page, so it would be able to tell you that the user clicked through your link on that site. Does this make sense? Thanks, Ben

Ben Gaines
Ben Gaines

Harsh, Based on your examples, it sounds like you may want to check out some of our information on campaign tracking (rather than link tracking), since that is typically how organizations capture click-through data from newsletters or partner/third-party web sites and associated conversion to these visitor acquisition sources. I'd start with Adam Greco's excellent post on the topic, located here. You can also read up on it in the Knowledge Base within SiteCatalyst. The basic idea is that you'll add a unique "tracking code" to the URLs that you use in your newsletters/partner links, then grab that tracking code on the landing page (which is tagged with SiteCatalyst code) and capture it in a variable. This will let you know that the user clicked through the link associated with the given tracking code. Let me know if this is unclear or if you have other questions! Thanks, Ben

Ben Gaines
Ben Gaines

Alin, If the "Quick Preview" link is an anchor tag ("<a href. . ."), then you would use the principles described in this post and make an s.tl() function call in the onclick event handler of each of these links. For example, <a href="#" onclick="var s=s_gi('your_report_suite');s.tl(this,'o','Quick Preview Link Click');showQuickPreview();">Quick Preview</a> This would count one click for "Quick Preview Link Click" in the Site Content > Links > Custom Links report in SiteCatalyst whenever the user clicks the link. I hope this helps to get you started. You or your organization's supported users may want to contact Omniture ClientCare for more information on implementation specifics related to custom link tracking. Thanks, Ben

Ben Gaines
Ben Gaines

Your understanding is correct, Abhilash (and I apologize that it has taken me 11 days to respond!). My only guess, without having looked at your implementation closely, would be that you might be setting the purchase event multiple times (once for each product). For example, you may be seeing: s.events="purchase,purchase,purchase" s.product = “;100;1;0.45,;101;1;0.55,;102;1;0.65,”; // ;id;1;price, This will cause three orders to be counted, because the purchase event is set three times. If you set the purchase event once, it will be applied to each product in the s.products string, and this is a more correct implementation. If this doesn't appear to be the case on your site, then I'd need to take a closer look in order to provide any good advice.

Ben Gaines
Ben Gaines

Yes. Your Account Manager can enable it.

Ben Gaines
Ben Gaines

If the link is pointing to an external site, you shouldn't necessarily need to do any additional tagging; SiteCatalyst automatically tracks any link click where the URL (href) of the link doesn't contain any of the values listed in the s.linkInternalFilters variable. As long as this variable has been set up correctly, you should be all set. The data will be found in the Site Content > Links > Exit Links report. You may want to apply manual tagging of these links if you want to pass additional variable values or events whenever the user clicks. However, this is not necessary if you're mostly interested in getting a total count for each external link.

Ben Gaines
Ben Gaines

That looks exactly right to me. I would need to take a look at the page to dig any deeper; if it's publicly available, please feel free to e-mail the URL to me at omniture care at omniture dot com.

Ben Gaines
Ben Gaines

It sure can. Instead of using the onclick handler, you'd use an onload. For example: <img src="some_banner.jpg" onload="var s=s_gi('rsid');s.linkTrackVars='prop1';s.prop1='some_ad_id';s.tl(true,'o','Ad Impression');" />

Ben Gaines
Ben Gaines

Abhilash: I'm pleased to hear that the issue was resolved! The code you pasted looks good, but to be clear, "c" is not a valid option as the second argument in the s.tl() function call. This should be "o", "d", or "e" . . . I don't believe any other values are expected for that argument.

Ben Gaines
Ben Gaines

This is probably most easily done by comparing data in the Custom Links report with data for the page containing the given link in the Pages report. As described here, you'll give each link a "friendly name," for which an instance is counted each time the link is clicked. If you know the name of the page to which the link belongs, you can look up the friendly name of the link in the Custom Links report and compare that to the number of page views for this page to give you click-through rate for a link. ClickMap can also be useful for getting a sense of click-through rate on individual links.

Ben Gaines
Ben Gaines

Andrey: There is no 500ms delay on s.t() requests, only on s.tl() calls when the first argument is 'this'. If you set s.eVar20 = 'XXX' after the s.t() call, it definitely will not be sent with the request, and the request will happen as soon as possible, not after a delay. :)

Ben Gaines
Ben Gaines

I understand. The s.t() function is designed to send the Omniture image request as soon as it executes, and in fact there are a number of reasons why it is very important that the request be sent as soon as the function is called (perhaps most importantly, so that you have control over exactly when this happens). I apologize for the inconvenience in this particular case.