
How to use UTM parameters to grow your audience - yakshaving
https://smashnotes.com/updates/how-to-use-utm-parameters-to-grow-your-audience
======
gk1
“Grow your audience” is a stretch here. Better to say “...to see where traffic
comes from.”

If you want to go a step further and see which traffic sources lead to form
completions (like newsletter or app signups), I made a utility that captures
UTM parameters and then inserts them into any form submitted during that
session: [https://github.com/gkogan/sup-save-url-
parameters](https://github.com/gkogan/sup-save-url-parameters)

~~~
kirillzubovsky
That's really useful! It's actually surprising that something like this
doesn't come as a default with Mailchimp forms. Just forked it and will give
it a try. Thank you!

~~~
medius
You can also check out
[https://github.com/medius/utm_form](https://github.com/medius/utm_form) which
can handle a lot of use cases.

(Disclosure: I created this to help my customers at
[https://www.terminusapp.com](https://www.terminusapp.com))

~~~
gk1
Nice product. I came across it recently when researching other accessible
methods for capturing UTM parameters. Yours was the only other one I found.

------
_jal
I occasionally change them to something random, like
"potato_world_weekly_back_cover". Figure it might provide a little
entertainment to bored marketeers.

~~~
dmkii
Bored marketeer here. It’s much appreciated :-D.

------
petercooper
I run a newsletter company with almost 500k subscribers. When I started out 10
years ago, I was a fan of Google Analytics so added these parameters to all
links in my newsletters. This was uncommon at the time and it turned out to
have a huge impact on our growth as lots of webmasters were glued to their
analytics at the time, wondered who we were, and Googled the name of our
newsletters! I got emails or tweets every week saying as much and thanking us
for linking to them, etc.

In the last five years it hasn't come up at all as everyone is doing it and
people seem to dig through their analytics less than ever before, but if it
helps you track links to _your own_ content, as being shown in the article,
it's certainly worth a go.

Another amusing point is that HN didn't used to strip these parameters, so
sometimes I could see when people had reposted things from our newsletters on
to HN (and kept the utm params in) which was always a buzz :-)

~~~
duck
Just to add to Peter's comment, the one issue with links via email/newsletters
is that they show up as 'direct' traffic with no referral, so they are about
impossible to link back to anything w/o the utm params.

~~~
personjerry
You can make a dummy page for each email link that simply redirects to the
correct page with the proper tracking information.

~~~
duck
I think that is exactly what Peter ended up doing for his newsletters.

~~~
petercooper
We have a redirect so we can measure traffic in aggregate (we don't track who
clicks what) to refine our content over time. But.. I don't believe we get set
as the referrer the way we do it (30x redirects). I believe this is why
Twitter's t.co redirector DOES use a true "dummy page" as then they get the
referral. It's something that might be worth trying though..

~~~
duck
Ah, okay... that makes sense and is a great setup. Did you run into any issues
with spam filters when you made that switch?

~~~
petercooper
Nope, it's what Mailchimp, etc., do. All the outgoing links just fly through
their server on the same hostname. We do the same with our hostname.

I have evidence that Google follows these links though, because if you link to
a "bad" site even through a redirector, Google notices and will throw you into
spam or say you're phishing, etc :-)

------
monadic2
[https://addons.mozilla.org/en-US/firefox/addon/utm-
tracking-...](https://addons.mozilla.org/en-US/firefox/addon/utm-tracking-
token-stripper/)

I have never observed a “utm” query param actually improve the quality of the
response.

We all know why this obviously positive functionality isn’t built into the
browser: because browser vendors rely on hostile business practices to
survive. Still no technology to transact with the site you’re visiting for
their content....

~~~
redis_mlc
> I have never observed a “utm” query param actually improve the quality of
> the response.

You have it backwards. It's more tracking for the webmaster/marketer to know
what was popular and what wasn't.

~~~
spike021
Reminds me of a time at my previous job where I was asked to add a utm_source
to API client calls for one specific type of client. Less for marketing, more
for just the product management side.

------
hbcondo714
I came across another article[1] on this and they state to "Never use UTM
parameters on internal links (e.g., homepage sliders, internal banners, or
internal links on blog posts). Clicking on those internal links will cause the
current session to end and a new session to start—attributing the new session
to the source/medium used on the internal link."

[1] [https://cxl.com/blog/utm-parameters/](https://cxl.com/blog/utm-
parameters/)

~~~
cosmie
That's definitely a really common issue. And correcting internal links when
that happens is always a painful process - the artificially inflated site
traffic figures it creates have likely been celebrated and publicized
internally, and correcting the analytics (and the subsequent drop in traffic
stats) gets treated as if you actually killed real traffic to the site in the
process.

~~~
kirillzubovsky
Can you use your own domain as the `utm_source` and therefore, even if the
session is being reset by an update in source, you will know that the sources
is your own domain?

Might even be good, as a way to calculate how well your internal links are
working in keeping the users within the property.

For example, put a link at the end of the blog post, and then track how many
users clicked it, vs. how many exited on that page.

~~~
cosmie
The two issues you run into are:

\- The primary attribution model in Google Analytics is last non-direct visit
prior to <conversion/goal/significant event>. Leveraging the source tracking
parameters (utm_*) on internal links obliterates the usefulness of much of the
built in attribution-related reporting. Relatively recent enhancements do
provide visibility into multi-channel funnel flows, but the capability is
compartmentalized into a few purpose-built views and don't filter back to most
of the core reporting.

\- It also drastically skews engagement-related reporting, overall and at a
source level. A new session in GA constitutes a completely new visit. So
metrics like visits per user, new vs existing users, average visit duration,
pages per visit, etc all get whacked in the process. And understanding user
behavior and conversion paths from any given channel becomes somewhere between
torturous and impossible, as the actions performed in the "new" session aren't
visible when looking at the user flow of the original session.

What you're describing is possible and commonly done, you just can't do it
with the utm parameters intended for source tracking without having disastrous
side effects. Custom dimensions/metrics[1] or event hits[2] are the intended
ways of doing that. For developers, Google's autotrack[3] library is useful
for implementing that with fairly minimal dev overhead (mainly, seeding your
markup with relevant data- attributes so event hits can be auto-populated and
sent). There are also a lot of third party libraries for framework-specific
integrations. And for non-developers, Google Tag Manager (or any other tag
manager) makes event tracking pretty straightforward to implement without dev
coordination.

[1]
[https://support.google.com/analytics/answer/2709828?hl=en](https://support.google.com/analytics/answer/2709828?hl=en)

[2]
[https://support.google.com/analytics/answer/1033068?hl=en](https://support.google.com/analytics/answer/1033068?hl=en)

[3]
[https://github.com/googleanalytics/autotrack/#overview](https://github.com/googleanalytics/autotrack/#overview)

------
anigbrowl
Neat URL is a Chrome extension that automatically removes all that cruft from
URLs. Not affiliated with the author, just sick of people like this author
littering in my address bar.

[https://chrome.google.com/webstore/detail/neat-
url/jchobbjgi...](https://chrome.google.com/webstore/detail/neat-
url/jchobbjgibcahbheicfocecmhocglkco?hl=en)

~~~
tangue
I was looking for that. Now and then I manually add "Your_Mum" as a campaign
and other profanities as utm_source

------
zamalek
I don't understand why we have to store the entire dataset in the URL, when
something like ?utm_id=1 (mapped to the others in some database) would do.
It's stuff like this that prevents average users from "getting" URLs; they
don't know what UTM is and assume it is important to get to the information.

This garbage breaks the UX of the internet.

~~~
cosmie
You don't have to; GA actually _does_ support precisely the scenario you're
proposing - you can use a random campaign key/identifier in a utm_id field,
and upload a custom dataset mapping to GA that contains the details to map to
the other utm fields. This[1] support article walks through the process.

You just rarely ever see it because marketing execution is already an
operational nightmare at most places (even more so at scale), and the
centralized coordination required to leverage the campaign key method
introduces a lot of friction, overhead, and potential bottlenecks into
processes with little perceived gain. The decentralized model (i.e. entire
dataset in the url) is far easier to enforce compliance with between all
parties, as you can providing tooling (i.e. a link builder spreadsheet) that
allows each party to integrate the usage into their workflows with minimal
overhead or ongoing coordination required.

[1]
[https://support.google.com/analytics/answer/6066741?hl=en](https://support.google.com/analytics/answer/6066741?hl=en)

~~~
zamalek
Thanks for the explanation. This really does makes sense.

~~~
cosmie
One other thing to note is that there are a few alternatives which tend to be
a bit more feasible to implement (and sustain). Namely, using a single
campaign key but leverage an encoding scheme for the key/id rather than a
randomly generated one. That way it can be parsed at collection time and every
permutation doesn't have to be predefined in a dataset ahead of time. Then end
users can still self-service link creation with a template provided to them
(they input the usual utm parameters they're used to, but it spits out a link
with a single encoded key).

Then on the receiving end, you use lookup tables or functions to decode the
various aspects of the key, and explicitly define the relevant utm parameters
in the call to Google Analytics (which it natively supports as an alternative
to implicitly sniffing them from the URL string). Or if your encoding scheme
is simple enough, you can send the key directly to GA and use Advanced custom
filters[1] to decode the utm parameters there.

[1]
[https://support.google.com/analytics/answer/1033162?hl=en](https://support.google.com/analytics/answer/1033162?hl=en)

~~~
shostack
I've implemented this approach for my teams before. It's always a giant PITA
without lots of effort around tooling to enforce conventions. It's useful
though if you're trying to marry analytics tools without reinventing the wheel
though because you can take out of the box UTMs and just transform them into
some intelligible encoded format that first into some other tool's sole field
for user-defined data.

~~~
cosmie
Web analytics as a whole is a giant PITA without lots of effort around
tooling. The default approach just has a silent failure state that is harder
to detect, and becomes more of a hassle for the analyst that has to cope with
the resulting data.

At least with this approach, the PITA becomes more explicit and easier to
justify the tooling needs, allowing for it to be addressed and tackled at the
outset by the upstream implementation team, rather than cascading to
downstream consumers.

