Yesterday I was eavesdropping on a Twitter conversation between @alanbleiweiss and @omniturecare where they were talking about the use of Omniture tracking IDs and how they relate to SEO. It got interesting, and it reminded me of the solution we use on Ford.com for tackling this issue.
Any good SEO will tell you how much they despise tracking parameters on URLs. You know, things like ?utm_source= , ?bannerid= , ?intcmp= , etc…. Every good analytics package allows you to set up tracking IDs to track various things. They can be used to track campaigns, referring sites, affiliates, or even which link on the page somebody clicked on. In general, they’re very useful.
The problem with tracking IDs though is that they can really mess with a site’s SEO. Unless told otherwise (and we’ll get to that) when search engines encounter a URL with a parameter on it, they treat it as a separate URL than the version without it. Basically, by adding ?utm_source=feedburner to your URL, you’ve created 2 versions of the same page. In a word, duplicate content. That can be bad.
Fortunately, Google webmaster tools lets you specify specific parameters that you want Google to “ignore” – but that only works for Google.
Another solution is the canonical tag – but as Alan pointed out in his tweets, it’s only a suggestion and even though Google follows it, other search engines may not.
So webmaster tools and canonical may work for 90% of the cases and not cause problems, but sometimes that’s not good enough.
On Ford, we take an interesting approach. Take a look at this Truck Page and see if you can spot it. When you visit and hover over the name of a truck (like F-150) you see a clean URL. In this case it’s http://www.ford.com/trucks/F150/
When you click the button though you’ll notice that you actually visit http://www.ford.com/trucks/f150/?fmccmp=fvlp-tt-cons-f150 – a URL with a nice tracking code that tells us you clicked on F150 from the left column rather than the middle or right. We then use that to do other analytics and customizations that are beyond the scope of this post – but it’s a useful and required tracking code.
Why do we do that? Simple, because we don’t want to count search engines in our analytics and we don’t want them to index the URLs that have the tracking code in them – as that would also bias our data.
So how do we show you (and search engines) a clean URL without parameters but take you (and not search engines) to the one with parameters? Easy – we use the HTML/Javscript onClick event.
Essentially, the code looks like this:
That extra “return false” in there isn’t an accident either. This technique won’t work without it.
This way search engines follow a nice clean href, but users who actually click get the tracking ID appended. This technique isn’t guaranteed by itself. It’s just one extra step we can take to try to keep the tracking parameters hidden. Combined with canonical and webmaster tools parameter exclusion it works pretty well to prevent those tracking IDs showing up in search engines.