Our traffic bounces all over the place.
We have social. We have email. We have paid ads. Thereโs more sites, platforms, and networks than we could possibly hope to run our campaigns on.
How do we keep track of it all?
How do we know whatโs working and whatโs not?
We use UTM codes.
Whatโs a UTM?
UTM stands for Urchin tracking parameters. Theyโre little pieces of data that we add to our URLs in order to see where different traffic comes from. They were introduced way back with an analytics tool called Urchin, the tool that was bought by Google and evolved into Google Analytics. Somewhere along the way, they became the industry standard for tracking marketing campaigns across tools.
These days, most analytics tools, marketing apps, marketing automation tools, and CRMs look for these parameters automatically.
There are five standard parameters.
UTM Medium: Think of this as a channel. Social, Organic, Paid, Email, Affiliates, are all core marketing channels that include multiple traffic sources.
UTM Source: The individual site within that channel. For example, Facebook would be one of the sources within your Social medium for any unpaid links that you post to Facebook. If youโre running a Facebook ad or spending money to promote a link, youโd want to label Facebook as a source within Paid. If youโre building a link for email, define which list that youโre sending the email to.
UTM Campaign: The specific campaign that youโre running. Feel free to fill this in however it makes sense to you. Names that allow you to easily identify product launches, promotional campaigns, individual emails or posts, etc. are all good.
UTM Content: This is an optional field. If you have multiple links in the same campaign, like two links in the same email, you can fill in this value so you can differentiate them. For most marketers, this data is more detailed than they really need.
UTM Term: Marketers rarely use this field these days. Itโs so you can track specific keywords for paid organic campaigns. Since AdWords has itโs own tracking methodology and a deep integration with Google Analytics, youโll rarely need to use this field.
Whenever you put a link on an external site (not your own site, more on this below), you add these parameters to your URL. Then when traffic lands on your site, you know where the visitor came from and that data appears in all your marketing and analytics tools.
Hereโs a normal URL without any tracking:
www.yoursite.com/pricing
And hereโs the same URL with four UTM parameters added:
www.yoursite.com/pricing?utm_source=active%20users&utm_medium=email&utm_campaign=feature%20launch&utm_content=bottom%20cta%20button
In this hypothetical example, we have a set of active users for a product that are going to receive an email. The campaign isnโt set to every email subscriber on file, only users that are defined as โactive.โ
Letโs break down each individual element of this URL to really understand it.
- www.yoursite.com/pricing โ Same page as the normal URL
- ? โ this tells your browser that everything after this point is just data
- utm_source=active%20users โ weโve defined โactive usersโ as our UTM Source. Since spaces canโt be used in a URL, the space is replaced with โ%20โ
- & โ this tells our marketing tools that weโve finished defining the previous UTM and weโre about to start a new one
- utm_medium=email โ weโve defined the UTM Medium as โemailโ
- utm_campaign=feature%20launch โ weโve defined the UTM Campaign as โfeature launchโ
- utm_content=bottom%20cta%20button โ weโve defined the UTM Content has โbottom cta buttonโ so we can track traffic down to the individual link of the campaign
Feel free to skip Content and Term if you donโt have a need for them. But definitely get in the habit of always using Medium, Source, and Campaign consistently. Many analytics tools assume that all three are used together. And by skipping one, you can create data gaps in your reporting.
Google has a UTM Builder to help you put together these trackable URLs whenever you need them.
Email UTM Examples
Hereโs an email sent by CreativeLive:
The button uses this URL and UTM parameters:
This email is from Rover:
The button uses this URL with these UTMs:
Note: a lot of email tools auto populate UTMs on every link which is why youโll see some email links using the UTM Term parameter. This data is rarely, if ever, looked at by the marketing team.
Another example from the hotel chain, 1 Hotels:
The URL and UTMs that the button uses:
Paid UTM Examples
A paid ad from The Information on Facebook:
Note: Theyโre using a custom โofferโ parameter along with the normal URM parameters.
An ad from uBiome on Facebook:
The URL:
An ad from Electronic Arts on Twitter:
The URL:
Note: you can see that theyโre using โsocialโ for the medium. Since this is a paid ad, Iโd use a medium of โpaidโ instead. This will keep all the paid traffic sources under the same โpaidโ channel in your reporting.
Social UTM Examples
A tweet from Tomasz Tunguz:
The URL:
A tweet from Shane Barker:
The URL:
A Facebook post from The Points Guy:
The URL:
The Key to UTMs: Clean Data
Iโve worked with hundreds of teams and different analytics implementations. By far, the biggest problem with UTMs is getting a team to use them consistently.
UTMs are pretty flexible, you can add whatever values to each parameter you want. Want to segment your marketing channels into your โfluffy bunnyโ medium, your โrainbowsโ medium, and your โpink unicornsโ medium? Go for it! Completely up to you.
This flexibility has a downside though, flexibility also means a lack of consistency.
Letโs use an example, say you want to tag all your links from paid channels with the same medium parameter.
What do you define that medium as?
Well, you have a LOT of options:
- Paid
- paid (yes, these are case sensitive in some tools)
- CPA (cost per acquisition)
- cpa
- PPC (pay per click)
- ppc
- CPC (cost per click)
- cpc
Itโs incredibly common for different people on the same team to use different terms for the same medium, source, or campaign. Itโs even pretty easy to use different terms yourself! We all get busy, forget what we used in the past, and tweak something accidentally. I catch myself doing this regularly.
Whenever this happens, your data fragments.
Now, some tools will attempt to group some of the more common variants for you. Google Analytics has a range of parameters that it groups into particular mediums.
But many tools donโt, they take the data exactly as it comes.
Messy data means that youโll have a terrible type trying to see whatโs going on. The problem can range from constantly having to manually massage a few rows yourself to having reports so messy that itโs impossible to see where anything is coming from.
How do we fix this?
Whenever working with a new team or site, I always start with a basic Google Spreadsheet. Then I build a few columns that have dropdown selections, especially for medium and source. Iโm paranoid about forcing consistency for those two values. And then I let folks fill in the campaign and name parameters however they like. If you keep medium and source clean, the majority of your reporting problems will go away.
With a quick formula, you can even get the spreadsheet to build the final tracking URL for you.
The workflow goes like this for the whole team:
- For all external links, go to the teamโs UTM spreadsheet
- Add your destination URL in the first column
- Pick the medium from a dropdown of only 5-10 options
- Pick the source from a dropdown of 20-30 options (this list will be longer since each channel has a few sources within it)
- Fill out the campaign field
- Fill out the content field if you want (optional)
- Final URL is automatically populated in the last column
Quick and easy for the entire team to follow. It also gives you an ongoing record of every single trackable URL your team has built. Good to have if something breaks later and you have to diagnose the problem.
Thereโs a few UTM tracking templates out there like this one. Feel free to Google around until you find one you like. I usually find a free template from Google, create a copy, and then add dropdowns for the Medium and Source columns. Finally, I force the team to use that same spreadsheet every time they create a new URL. Once Iโve done that, Iโve never had an issue with getting a team to use the same values consistently.
What about internal tracking? Can we use UTMs?
How do we track links on our own site? What if we put a banner on our blog for a purchase, demo, or free trial, how do we tell if the banner drives conversions?
I strongly recommend that UTMs never get used for your own internal links.
How come? Itโll break your analytics tracking.
You see, Google Analytics and other tracking tools typically start a brand new visitor session whenever a visitor arrives on a page with UTMs. They assume that UTMs are only being used on external links and then reset all session-level data.
That means that the session resets and the visitor now looks like theyโve visited your site multiple times.
All of these metrics will start to get skewed:
- Session totals
- Time on site
- Pages/visit
- Page entrances and exits
- Traffic sources and channels
Just about every metric in Google Analytics will change.
If this happens to a few visitors, itโs not a big deal. You wonโt even notice it.
But if you have a steady flow of visitors that go through that campaign, youโre permanently skewing your analytics data from reality. Analytics data is already hard enough to keep accurate, the last thing you want to do is make it worse intentionally.
What do we do instead?
Thereโs two options that typically get used.
Event Tracking
Every analytics tool has a way to fire a JavaScript event. Any front-end engineer can do this easily, itโs a way to tell the analytics tool that an action occurred.
When an analytics tool sees an event, it knows that the action occurred during the same session. None of the other analytics metrics will get reset. And thereโs plenty of reports built into these tools to see which events lead to conversions, how many events are happening, and which traffic sources trigger events.
For Google Analytics, thereโs a bunch of documentation on events work here.
A Custom Parameter
UTMs are one set of URL parameters that are broadly recognized by the marketing community. But we can set any of our own parameters that we want on our own site.
For example, we could add ?unicorn=purple to all of the links. Analytics tools will just ignore these parameters since they donโt recognize them but we have the freedom define any parameter of our choosing.
Many engineering teams will use their own internal parameters to track extra internal data in a custom way. One of the more popular parameters is โrefโ which is short for reference. Itโs just a quick short-hand parameter that people tend to use when they want to track something.
Again, analytics tools wonโt pay any attention to the ref parameter or any other custom parameter that you build. If you have a user database (youโre building a SaaS or consumer tech app) or have a CRM (most B2B companies), your engineers can use a few of these internal parameters to collect any extra data that you want to record.
Your blog banner URL would then look something like this:
www.yoursite.com/demo?ref=blog_banner
Then when the demo request gets submitted, the value โblog_bannerโ would be stored however you want in your user database or CRM. And youโll get that data without accidentally resetting all your analytics metrics for that visitor session.
Use Crazy Egg
If you install Crazy Egg, you can visually see all the clicks coming from internal links, buttons and forms from any page on your website. Itโs the easiest way to see what clickable elements are hot and which ones are not.
Other Methods to Track Marketing Campaigns
While UTMs are the method for tracking marketing campaigns between marketing tools, you have a few other options.
Conversion Pixels
Just about every paid ad platform will give you a snippet of JavaScript that you can use to track conversions within their tool. This includes Facebook, AdWords, and all the retargeting tools like Adroll and Perfect Audience.
The process is pretty simple:
- Go into your account on that tool
- Find the JavaScript snippet for tracking conversions
- Place the snippet on the page of your site that means a conversion event has occurred (usually a thank-you page of some kind)
Since the paid platform can now see when visitors convert on your site, theyโll track the conversion for you. When you see conversion data in Facebook or Analytics, this is usually where the conversion data is coming from.
While this does make managing your paid campaigns much more efficient since you can do everything within the tool itself, I do recommend that you also set up your own UTM tracking for these campaigns. Youโll want your own set of data to validate against when itโs time to calculate the true ROI of a channel or campaign. By nature, there is a conflict of interest with these tools, they want to take credit for as many conversions as they possible can in order to demonstrate their value. If you have your own data, itโll be easy to double-check and make sure everything is accurate.
Separate Landing Pages
When all else fails, thereโs always the option to build unique landing pages for every single campaign. Itโs labor intensive but itโs also fool-proof.
Instead of worrying about UTMs and analytics integrations, sign up for a landing page tool like Leadpages or Unbounce. Then create a few basic landing page templates that you can re-use over and over again. Then every time you appear on a podcast, write a blog post, run a new paid campaign, or anything else, whip up a quick landing page and send the traffic to that specific page.
Simple and effective.
These tools will give you reporting on how much traffic and how many conversions happen on each page. Since every campaign got a unique page, itโs easy to see which campaigns give you conversions. This is a great option when your marketing team only needs to collect email subscribers or get prospects to fill out a simple form to become a lead. If youโre trying to drive free trials or more complicated conversion types, this may not be an option.
It also wonโt work if youโre promoting pages that donโt have a strong CTA and visitors are likely to bounce around your site to other pages. Promoting blog posts on social is a good example where unique landing pages wouldnโt work.
The Quick Recap
UTMs are the most popular method for tracking our traffic across different sites. All the analytics tools and many marketing tools recognize them automatically. When you set them up, make sure you use the Medium, Source, and Campaign parameters every time. Only use Term and Content if theyโre valuable to you.
Remember that the key to having useful campaign data is to use values for Medium and Source consistently. Otherwise, your data will get fragmented in your reports which makes it much more difficult to figure out whatโs going on.
However you implement UTMs, donโt ever use them for internal links. Theyโll break your analytics data, triggering an event for your analytics tool or using a custom parameter are much better options.
While UTMs are the standard, there are a few other ways to set up your tracking. For paid platforms, using the tracking pixel that they provide can make things much easier. And you can always keep things keep by building a unique landing page for each campaign.