Solving The Dreaded Google Analytics UTM Source Medium Mixup

As the owner of digital/web analytics, it’s your job to set your team up for success. It’s your job to make sure your data is accurate and usable to your analysts and your team members.

A common (and easily fixable) issue I see with web analytics tagging is when a team member mistakenly sets up parameterized tracking incorrectly. Here’s an example of what I mean:

The traffic source is Bing, then medium is cpc.

What the UTMs should look like


What the UTMs actually look like


Now in theory you can correct it by setting a filter within your Google Analytics account, however that does not apply to retroactive data. It would only fix it for the future. The best solution is to be proactive from the get go, and I have found limiting end user control is the way to conquer this.

Essentially what I have done is built a simple HTML/jQuery input that I preload with all of our source, medium, and website options (you can configure it to include campaign, keyword, content, etc too if you’d like).

If we are exploring a new traffic source that requires markup, then that team needs to go through the web analytics team so we can properly update the utm generator. What this does is make a source and medium parameter mixup virtually impossible (so long as your team uses this tool).

It slows down the speed to execution, but it minimizes the risk of inaccurate data. Imagine if you had a UTM mix up and anytime you did analysis on that traffic source you had to include both variations? Not fun, and even harder to explain to the teams and stakeholders why that is happening.

The Google Analytics UTM builder is fantastic, however it requires the end user to understand what they are doing (something that is not always the case). You can find my form code below (customize it to your own liking):

If you or your team uses an alternative approach for things like this I’d love to hear about it. Just as a note I have campaign as a text input here because it can vary widely. You can easily convert that to an HTML select input to control it even tighter.


Passionate about growth, analytics, and E-commerce. Life is about pushing the envelope.