Category Archives: Intermediate

Source Tracking Part II: Using UTM parameters for online source attribution

Google Analytics’ source tracking is primarily URL based, and unfortunately, some of your important traffic sources may not be correctly identifiable based on their default referring and destination URLs. But there is a solution! Read on to learn how you can leverage native Google URL parameters to deliberately label your traffic sources in a way that aligns with your objectives.

Typically, when determining the source of a visit, Analytics looks at the referring URL domain, page and any additional parameters (such as search parameters) that may be included in the URL. Read Source Tracking part I to learn more about how Analytics interprets source information from referring URLs. However, Analytics can also recognize source information contained in the destination URL in the form of UTM parameters. These parameters are native to Google and are already used to communicate campaign attributes from Adwords to Analytics. You can leverage these UTM parameters to communicate custom tracking information for your advertising campaigns to Analytics – read on to see how.

Historical note: UTM stands for Urchin Tracking Module and references a web traffic tracking and logging system developed by Urchin Software Company and eventually acquired by Google to become Google Analytics. Although Google no longer uses the Urchin program, the acronym is still used to refer to URL parameters that are interpreted by Analytics for source information.

When UTM parameters are added to a destination URL, they have the affect of causing Analytics overwrite whatever source information Analytics might otherwise have populated by default. This means that to use UTM parameters to improve ad tracking, you can simply add parameters designating source information about, say, a display ad, to the destination URL (this works for online ads – I’ll explain how it works with offline ads later).

Important: Do NOT use UTM parameters in destination URLs in AdWords or AdSense, as Analytics already receives all of the available source information, so long as the accounts are linked. If you try to manually add UTM parameters, they will most likely not show up in Analytics.

Available parameter slots

There are five UTM parameter slots that you can leverage to label your traffic sources, described in the table below.

Parameter Name UTM Code Description
Medium utm_medium How—via what channel—the visitor found your site. E.g., paid search, online display or email
Source utm_source Who—what domain or publisher brought the visitor to your site. E.g., Google, Amazon or Buzzfeed.
Campaign utm_campaign What campaign brought the visitor to your site. May be a campaign targeted at a specific audience or keyword group or may represent a promotion. For Adwords traffic, this is the name of the Ad Campaign.
Ad Content utm_content What ad content brought the visitor to your site. In Adwords, this is the copy in the displayed search ad, but you can use it to indicate anything you want about the content of an ad.
Term (Keyword) utm_term What search term prompted the ad—most relevant for Adwords.

So what does use of the parameters look like in practice? First, you identify the destination landing page. Then, you follow the landing page URL with a question mark. The question mark indicates that any following characters are parameters, and are not part of the base page URL. After the question mark, add your parameters in the form utm_source=your-source-name. All individual UTM parameter phrases must be separated from one another with an ampersand (&) sign.

Here’s an example:


Important: Not all parameters are created equal. The first two parameters—source and medium—are required parameters and both MUST be used in order for any customized UTM source data to register in Analytics.

Not just for online display!

This method is not limited to online display advertising. It can also be used for Yahoo/Bing Search advertising (since that account won’t natively sync with Google Analytics in the way that Adwords will). It can also be used for any other type of electronic traffic-generation campaign where visitors click on a URL to get to your site, such as email, press releases, guest blog posts and social media.

Devising and organizing your labeling strategy

For your source tracking to be really useful for marketing analytics, it has to be logical and consistent.

Think about what sources of traffic you have and how you would ideally like to organize them for reporting purposes. You may want to be able to identify traffic generated by via the medium of email. You may also want to be able to segment what portion of email traffic came from invites, nurture campaigns or auto-responses—this type of information could be considered the “source” of the traffic. Or, maybe you’re running cross-promotional email campaigns with another vendor. In that case, maybe the “source” shouldn’t be the type of email (you could call that campaign, instead), but rather the vendor or partner that generated the email. There’s no right answer, but maintaining a consistent, labeling scheme that is compatible with your reporting needs will save you a lot of headache.

You’ll also want to make sure that your labeling system not only makes sense, but that it’s applied consistently, down to the exact spelling of the terms used. You’ll end up with sloppy data if you, say, call paid search “cpc” in one place and “sem” in another. In order to keep track of what tracking you’re running and to maintain consistency of terminology, I recommend using a spreadsheet to catalogue all of the destination URLs (complete with tracking URLs) and parameter values you use. This spreadsheet can also build the URLs for you, and can maintain consistent parameter values by getting all parameter values from a look-up table.

Save source info to your CRM or marketing automation platform

An additional benefit of using URL parameters to improve your source tracking is that it may make it easier to save that source information to your CRM or marketing automation platform. Your marketing automation platform may save a visitor’s landing page URL by default, and that landing page URL now contains useful traffic source information. You can simply parse out the parameter values from those landing page URLs to gain insights into unknown traffic. If some of your common landing pages also include forms that submit to your CRM, you can edit your form to save the page URL as well. You can then write workflows to parse out the source and medium of a converting visit for a known individual in your database.

What to do when standard reports aren’t enough

Remember when you first started working with Google Analytics? I bet you got into the interface, started poking around, and thought, “Cool! There’s so much data here, I don’t even know where to start!” It might have seemed like there was nothing the interface didn’t already do. You might have simply been overwhelmed by all the pretty graphs.

But then at some point, the honeymoon period ended, and you found yourself asking a question of your data, and realizing that there’s just not a report for that. Heck, there might not even be data for that. Facepalm.

But there’s good news! For any question you’re asking of your data, there’s most likely a way to configure Analytics to either give you the chart you want with the data you have, or, if you’re not collecting the data yet, get you the data so that you can then get the chart you want. (Any question within reason, of course – obviously Google Analytics is not going to be able to tell you how many of your visitors are wearing blue underwear or what they ate for breakfast this morning)

Odds are, you’re frustrated with your Analytics reporting for one (or more)  of four basic reasons. Figuring out which one can help you identify your next steps.

Potential Reason 1: Your reports are showing you too much

You want to look at a more specific subset of information. Let’s say you don’t want to look at all of the visits from your entire site, you just want to look at visits from iOS devices in the Bay Area.

Solutions to Reason 1:  Filters!

What you need is a filter. A filter shows you a particular subset of your data based upon certain criteria that you define. In Google Analytics, there are three different types of filters based upon how widely you want to apply your filter criteria, ranging from the report-level filter, which only applies the filter to one table or widget, to the profile-level filter, which is applied across your entire profile. Learn more about filters.

Potential Reason 2: You’re seeing all the data you want, just not in the format you want.

The standard reports, for example, have one report area for visits and another report area for conversions. Wouldn’t it be useful to see visits and conversions by source – side by side?

Solution to Reason 2: Customize your reports and dashboards.

Potential Reason 3:  The default dimensions don’t line up with your business objectives.

Let’s say that you don’t want to look at visits segmented by state, you’d rather look at visits segmented by your company’s sales regions, which might involve combinations of different states and metro areas.

Or, to give another example, the default source and medium tracking in Google Analytics might not be telling you the right information about your traffic. You may be running online display ads that are being recorded as “Referral” or “Direct” traffic with the source listed as the website hosting the ad.

Solution to Reason 3: URL tracking parameters or custom variables

The best solution depends upon the nature of the problem. If you want to set up a custom configuration of a dimension related to traffic generation sources, you may want to look into using url parameters to improve tracking. If you want to set up a dimension related to audience demographics, such as custom geography or audience engagement, such as , you may  be better served by implementing custom variables.

Potential Reason 4: You’re not tracking the data

Let’s say you want to know more about how your visitors are interacting with your video content. Which videos are they watching? What fraction of visits contain video views? By default, Google Analytics is simply not set up to tell you that. The cookie doesn’t track video plays. But guess what?

Solution to Reason 4: Event Tracking

You can set it up your Analytics tracking code to track such specific events as video plays, form field completions, and other behaviors. Some people even get really clever track whether or not visitors read pages or just skim them.  Read more about how to set up event tracking.

Did I miss something? Let me know if you don’t think your Google Analytics frustration can be attributed to one of my four reasons.




Filters for Subdomains and Hostnames

Separate Profiles for Separate Subdomains

You can also filter based on subdomains. Let’s say that there’s a part of your site that you want to track separately from the rest. Maybe it’s a blog, or maybe it’s a section that only receives traffic from your email marketing.  Or, for example, it may be a members-only part of the site – To track the members-only section of the site separately, you could create a separate google analytics profile and then set up two filters – one in a “regular” profile and one in your members-only profile.

In your regular profile, you would set up the following filter:

Exclude – subdomain –


In the new members-only profile, you would set up the opposite filter:

Include – subdomain –


Don’t count  the posers – excluding hostnames

I know it’s not nice, but sometimes  people steal content. And when they do, sometimes they’re really sloppy about it, and copy your Google Analytics code along with it. When this happens, visits to the poser’s site will show up in your Google Analytics tracking –  unless you filter them out.

Now here’s the thing – I don’t necessarily recommend filtering out all hostnames besides your own. Sometimes other hostnames represent legitimate traffic that you  might be interested in tracking. If someone uses Google Translator to translate your page, for example, their session will be attributed to the translator tool hostname. I might think that that’s pretty cool, and want to count those visitors. Even if you decide you’re not interested in counting these sorts of visits and only want to count actual visits to your hostname in your reporting, I recommend that you set up a separate profile that records everything so that you can keep tabs on traffic from other hostnames and identify posers that are stealing your content.  (Another alternative is to only exclude hostnames as you discover them and determine them to be illegitimate).