From time to time, I receive questions from clients asking how to track something that doesn’t fall under the general category of “page view”—a link, a button, an image, a form interaction—something that can’t easily be captured simply by tagging a page with SiteCatalyst code, even using custom variables. After all, when the page loads, you don’t know what link users will click, what buttons they will press, or what values they will enter into forms.

Nearly always, these solutions involve a feature built in to SiteCatalyst JavaScript code called custom links (also known as Custom Link Tracking, or Link Tracking for short). For those not familiar with the concept, Link Tracking allows you to pass data into SiteCatalyst practically whenever you want—not just when the page loads—opening the door to track link clicks, image loads, form interactions, and nearly anything else that happens on your site. Ever.

If you are an experienced SiteCatalyst user, you may already be familiar with a form of Custom Link Tracking; file downloads and exit links are typically tracked automatically when SiteCatalyst code is implemented on your site. I’ll explain in more detail later how these features work; for now, suffice it to say that they leverage the same basic functionality that we’re about to discuss.

Why Custom Link Tracking?

It almost goes without saying that every web site is a different animal. However, this point is worth making because it is the exact reason why Custom Link Tracking can be so powerful. If every site followed the same basic template, and if each organization had the same KPIs and goals, then SiteCatalyst code would be able to anticipate what links and other user actions you would want to track, and would pass along the data accordingly.

You may work on a lead generation site, passing users along to partner sites via links on your pages.

You may operate a media site, with success being determined in part by impressions and click-throughs of third-party advertisements.

Your site may be retail-oriented, serving upsell recommendations via a sleek AJAX-based overlay on shopping cart pages.

Or your site may be something completely different.

In each of these cases, applying Custom Link Tracking code to links, images, form fields, and other page elements where you want to track something can provide the insight that page view data doesn’t. Note that “Link Tracking” is something of a misnomer; while tracking link clicks is its primary purpose, this feature can be applied to nearly anything, and not just to links.

A great example of this is an AJAX-heavy site, which relies heavily on Link Tracking because of one of the feature’s main advantages: while it is capable of passing nearly any type of SiteCatalyst data, there is one thing that it does not do. It does not count a page view. Sites that change the content of a page without actually loading a new page may not want to count a new page view every time the content changes. For these sites, Custom Link Tracking is perfect—it will pass anything but a page view.

How Does Link Tracking Work?

The nuts-and-bolts of implementing Custom Link Tracking are actually fairly simple as JavaScript goes. They are explained adequately in our Link Tracking white paper, available from the SiteCatalyst online help site. If you find that you still have questions about the technical aspects of Link Tracking after reading that white paper, leave me a comment and I’ll do my best to address them.

The Link Tracking code is typically applied either

  1. directly in an JavaScript event handler (usually onclick, but others work as well), or
  2. for more dynamic functionality, in a separate function called in an event handler.

Link Tracking (including automatic download and exit Link Tracking) is based on a function built into the SiteCatalyst “s” object, called s.tl(). When called, s.tl() builds a SiteCatalyst image request containing the Custom Link Tracking data that you choose to pass, along with data for any other variables you’ve chosen to populate.

As an aside, for those of you with ActionSource experience, s.tl() is the JavaScript version of s.trackLink(). Their purpose and structure is the same.

In the case of automatic download and exit Link Tracking, when a page loads, SiteCatalyst inserts an s.tl() function call into the onclick event handlers for any link where the href attribute

  1. ends in one of the extensions specified in the s.linkDownloadFileTypes variables (for file downloads), or
  2. does not contain any of the strings specified in the s.linkInternalFilters variable.

There are, essentially, three “types” of custom links; you can specify the type of link that you want to count when you make the s.tl() function call. These types are:

Link Type Description Destination Report
o Other/General. This is listed first because it is the most common choice. Used as an all-purpose option, or whenever you know that you don’t want the action to be considered a file download or an exit link. Site Content > Links > Custom Links
d File Download. Use this when you want the action to be considered a file download (e.g. an HTML page that contains the text of a length piece of documentation—it isn’t going to be tracked as a file download automatically, but for your purposes it may be equivalent to downloading the PDF). Site Content > Links > File Downloads
e Exit Link. Setting this type will cause the action to be considered an exit link. Site Content > Links > Custom Links

The value in the “Link Type” column above goes into the second argument in the s.tl() function call to determine the type of link to count, which also determines which report that will receive the data generated by the given link click (or other action).

A Few Things Everyone Should Know About Link Tracking

You can pass just about anything using Link Tracking.
As I mentioned above, there is really only one thing that Link Tracking won’t do for you: count a page view (and may pass, but will not count, a page name). Any other custom variable can be passed by leveraging the s.linkTrackVars and s.linkTrackEvents variables explained in the online documentation.

Want to pass purchase data using custom links? No problem. On that final purchase button, set s.linkTrackVars="events,products,purchaseID", set s.linkTrackEvents="purchase", set each of these variables and events dynamically, call the s.tl() function, and away you go.

Need to grab the user’s waist size when he/she clicks the “waist size” drop-down menu on your product view page? Piece of cake. The drop-down has an onchange event handler, so you can pass the waist size (or anything else, for that matter) into a prop or eVar whenever the drop-down selection changes and fire off an s.tl() function call. Voila. You know what percentage of users is between a 32- and a 40-inch waist.

You have a survey on your site, and you’re sick of losing out on data from partial responses? Pass the response to each question into a prop and tag the “Next” button with Link Tracking code. Something like s.prop1="question 1:yes" or s.prop1="question1:no" for each of the questions and possible responses should do the trick. That way, whenever someone answers a question, you’ve got it recorded—even if he or she abandons the survey halfway through.

Want to capture an image load as a file download? Easy. When you’re putting Link Tracking into the onload event handler in the image tag, just make sure to set the second argument 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 capture data that you need after reading this post and the available documentation, please leave me a comment and I’ll address it.

Custom Link Tracking does not count a page view.
I already mentioned this, but it warrants mentioning again here. This means that you will not see any data in your Pages report due to Link Tracking data. Your report suite page view totals will not change when custom link data is passed. However, Custom Link Tracking does count visits and visitors. Thus, it is possible to have more visits than page views. I have seen this in rare cases for sites that rely very heavily on this feature.

You may sometimes hear Omniture representatives refer to Link Tracking image requests as “non-page view events.” Now you know why.

Correlation data is only available when the two variables in question were passed on the same image request.
What does this have to do with Link Tracking? Occasionally, users will complain that when they go to a Custom Traffic report and break down a value in the report by Pages, they get no data. My first question is always, “Are you passing the prop data on a Link Tracking image request?” If the answer is yes, then they’ve answered their own question. If the prop is populated using Link Tracking, then there is no page name value for that hit. Thus, the correlation doesn’t have any data for page name.

The workaround is to pass the page name into another prop on every custom link image request, and then enable a correlation between the original prop and the new one storing the page name.

If you are using Link Tracking on something other than a link, you’ll need to tweak s.tl() slightly.
The first argument in the s.tl() function call is set to “this” by default, with “this” referring to the href attribute of the page element that triggered the s.tl() call. The only problem with “this” in the context of non-links is that anchor tags (i.e. links) are typically the only page elements that have an href attribute. Therefore, if you are tagging a form field, a button, an image, or anything that isn’t a true HTML link with Custom Link Tracking code, “this” will be null. Simply change it to “true” and it should work just fine.

Custom Links do count as server calls.
They can answer questions that normal page views cannot. At the same time, use them wisely.

Even if automatic download and exit link tracking is working fine, there may be cases where you should consider Custom Link Tracking for file downloads and exit links.
In this post, I have already mentioned and explained SiteCatalyst’s automatic file download and exit link tracking mechanism. This will track the URLs of your downloaded files and exit links, but what if you want to pass additional variables—props and eVars, or events—when these links are clicked? What if you want complete control over the values of these variables when users download a file or exit your site? The automatic functionality is a great start, and, depending on your business needs, it may be enough. However, if you determine that it isn’t enough, Custom Link Tracking is a great way to take the reins and get the most actionable data possible regarding these user interactions with your site.

You cannot debug Link Tracking image requests using the JavaScript Debugger, so get familiar with a packet monitor.
I recommend TamperData for Firefox, HTTPWatch for IE, or Charles for both. Each of these tools will allow you to filter your HTTP requests to show only SiteCatalyst image requests by including only URLs containing the string “/b/ss/”, which is a part of every Omniture request.

You can tell that you are looking at a Link Tracking request if you see a “pe=” parameter in the image request. It should be set to “lnk_”, followed by the letter that you chose in the second argument of s.tl(), as described above.

The s.tl() function involves a built-in 500 millisecond delay for very good reason.
This delay is in place to allow the s.tl() function to execute before the next page loads, in cases where Link Tracking 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. Depending on your implementation, this 500 millisecond delay may not be necessary. For instance, AJAX calls do not involve new page loads, so there is no threat of the browser moving on to the next page before the Link Tracking request is sent. To disable the delay, set the first argument 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.