IMHO: Why Google’s Campaign URL Builder – also referred to as UTM Builder – sucks! (And how you build a better one yourself)

Excuse the clickbaity title but the topic itself isn’t that sexy but important nonetheless.

If you’ve ever worked with Google Analytics you’ve probably come across the need to create a “tracking link” – and because you don’t have the tracking parameters remembered by heart you google something like “tracking link analytics” or “utm link builder”. And Google comes to your rescue with their “Google Campaign Builder” – and well, it sucks! Why?

The problem: You’re completely free to use any of the five utm parameters for whatever you want in that moment.

Why is that a bad thing?

  • You’re not getting any consistent data – today you write “Social” at Campaign Source, tomorrow it’s “Facebook” and so on …
  • Your colleagues do their completely own thing, messing up that sweet data even more.
  • There is no naming convention enforced which is always a bad thing
  • You’ll probably end up with messy data

You’ll hate yourself and your colleagues later when you’re given that data dump of google analytics campaign information that you then need to make sense of.

What do you want from your utm builder?

  • Enforced Naming Convention
  • Strict Hierarchy – a hierarchy from top channel to more specific information
  • Campaign Name that is stringed together out of different hierarchy levels (to get almost all information right out of the campaign-identifier).
  • Team transparency
  • History for later reference
  • Options to include dynamic variables (e.g. dates)
  • The possibility to include data that isn’t saved to analytics but rather stays in the sheet for later reference (e.g. who created the link?)

So want to sell a tool, right?

No. You can do all that yourself with a little time and effort put into Google Sheets. I’ve built my own campaign builder that suits all those/my needs. If you can relate to those you can copy my template and use it right away.

A better URL Builder (Based on Google Sheets)

→ Grab a copy of the tool

If you are happy with the tracking options I supplied you could probably get started right away. If not, see the FAQ.


  • Editing the options
 If you want to change the options you’ll have to adjust the “tracking tree” in the according tab of the sheet. Just be sure to provide the options exactly like I did in my example – you’ll see quickly if it works or not.
  • Adding more input fields
 First of all add all the fields you want to add and “design” the sheet to your liking. After that the button “Save to Database” will probably fail. Head over to Tools > Script Editor and correct the script. It should be pretty self-explanatory – if not, ask a friend who knows a bit of coding.
  • Some characters get deleted/changed in the tracking link
 Yes, that’s totally on purpose. I just don’t want some characters to enter my analytics data. You can change those unwanted characters in the settings tab.
  • I don’t like the time format in the URL 
 Just head over to the settings tab and change it according to the formatting options of the help link provided.
  • I don’t like the campaign identifier
 This is also adjustable in the settings tab. It might take a while until you figure everything out but you can totally configure the identifier to your liking
  • What is save_values and why does it ask for permission to edit my sheets?
 In order to be able to save the data to the database tab there is a little script at work to make that possible. Just head over to Tools > Script Editor to check it out. There is no shady stuff going on – nobody other than you sees your data.