Skip to content
Home ยป Blog ยป How to Create a UTM Link to Track Traffic Sources in Google Analytics

How to Create a UTM Link to Track Traffic Sources in Google Analytics

UTM link tracking

You post the same link on Instagram, in a newsletter, and in a Slack community, and a week later Google Analytics just shows a pile of traffic labeled “direct” or “referral” โ€” no way to tell which post actually worked. That’s the exact problem UTM links solve, and once you’ve built your first one, you’ll wonder why you didn’t start sooner. I use these on nearly every link I share externally, and it’s saved me a lot of guesswork on what’s actually driving traffic.

What You’ll Need

Nothing complicated here โ€” just a live URL and access to your Google Analytics property.

Before You Start

  • The destination URL you want to promote (a blog post, landing page, product page, etc.)
  • A Google Analytics 4 property already connected to that site
  • A rough idea of where you’re sharing the link โ€” that decides your source and medium values

Step 1: Understand the UTM Parameters

UTM stands for Urchin Tracking Module โ€” a leftover name from the analytics company Google acquired back in 2005, though nobody actually calls it that anymore. A UTM link is just your regular URL with a few extra tags stapled onto the end, and each tag tells Google Analytics something specific about where the click came from.

  • utm_source โ€” where the traffic is coming from, like newsletter, instagram, or facebook
  • utm_medium โ€” the type of channel, like email, social, or cpc
  • utm_campaign โ€” the name of the specific push, like summer-sale or july-newsletter
  • utm_term โ€” optional, mainly used for paid search keywords
  • utm_content โ€” optional, useful when you’re A/B testing two versions of the same ad or link

In my experience, source and medium are the two that matter most day-to-day. Campaign is a close third once you’re running more than one promotion at a time.

๐Ÿ“ Note: Keep your naming consistent โ€” always lowercase, always the same spelling for the same channel. “Newsletter” one week and “Email-Newsletter” the next will show up as two separate sources in your reports.

You’ve got two real options here โ€” use a purpose-built tool that assembles the link for you, or type the parameters onto the URL by hand. I’d recommend the software route if you’re tagging more than the occasional link, but it’s worth knowing how to do both.

Option A: Use a UTM Builder Tool

This is the method I use for almost everything now. Google’s free Campaign URL Builder is the obvious starting point โ€” you fill in your website URL, source, medium, and campaign name into labeled fields, and it assembles the full link for you, correctly formatted every time. No stray spaces, no missing ampersands.

If you’re tagging links regularly across a team, a dedicated tool like UTM.io or Terminus is worth the upgrade. They store your past campaign names so you’re not retyping “summer-sale” slightly differently every time, they can auto-shorten the link in the same step, and most let you export a history of every link you’ve created โ€” handy when someone asks “wait, which link did we use for that email?” three months later.

๐Ÿ’ก Tip: A shared Google Sheet with a formula-driven UTM template works surprisingly well too, and it’s free. Set up one row with dropdowns for source and medium, a formula that concatenates everything into a finished link, and your whole team stays consistent without needing a paid tool.

Option B: Build It by Hand

Honestly, this is easier than it sounds once you’ve done it a couple of times, and it’s worth knowing in case you need to tweak a link quickly without opening another tool. Here’s the pattern to follow:

https://yourwebsite.com/landing-page
  ?utm_source=newsletter
  &utm_medium=email
  &utm_campaign=july-promo

Start with a question mark after your URL, then join each parameter with an ampersand. No spaces โ€” if a value needs one, use a hyphen or underscore instead.

โš ๏ธ Warning: Double-check the destination URL before you add the parameters, whichever method you use. A typo in the base link means the tracking data will be perfect, but visitors will land on a broken page โ€” and you won’t notice until someone complains.

Step 3: Shorten and Organize Your Links

UTM links get long and ugly fast, which is fine in an email but awkward on Instagram or a printed flyer. Run the finished link through a shortener like Bitly or your website’s own redirect tool, and it’ll look clean while still carrying all the tracking data underneath.

Honestly, this is easier than it sounds once you build a habit around it. I keep a simple spreadsheet with columns for the destination URL, source, medium, campaign, and the shortened link โ€” that way I’m never guessing whether I already used a campaign name for something else.

๐Ÿ’ก Tip: Name your campaigns by date and purpose, like 2026-07-summer-sale, instead of something vague like promo1. Six months from now, you’ll actually remember what it was.

Step 4: Track the Results in GA4

Once people start clicking your link, head into Google Analytics and open Reports, then Acquisition, then Traffic acquisition. Your source and medium values will show up as their own row in the session source/medium table, and clicking into it lets you filter by campaign name too.

This step trips up a lot of people because data doesn’t appear instantly โ€” GA4 usually takes a few hours to process new sessions, so don’t panic if your link shows zero clicks five minutes after you send it out.

GA4 Report What It Shows
Traffic acquisition Sessions grouped by source/medium and campaign
Conversions Which campaigns actually led to sign-ups or purchases
Explore reports Custom breakdowns if you want to compare campaigns side by side

Pro Tips & Common Mistakes

  • Inconsistent capitalization is the most common mistake โ€” GA4 treats “Instagram” and “instagram” as two different sources. Stick to lowercase, always.
  • Tagging internal links on your own site with UTM parameters will overwrite the visitor’s original source data. Only use UTMs on links pointing to your site from somewhere else.
  • Forgetting utm_medium makes campaign reporting messier than it needs to be โ€” source alone won’t tell you if a click came from an ad versus an organic post.
  • Not testing the link before sending it out. Paste it into your own browser first and confirm it actually loads the right page.

โœ… Once you can see individual campaigns broken out in your Traffic acquisition report, you’ve got it working. From there, it’s just a matter of tagging every link you share going forward.

Wrapping Up

Now every link you share can tell you exactly where your traffic is coming from, instead of leaving you to guess. It’s a small habit that pays off fast โ€” within a week or two, you’ll have a much clearer picture of which channels are actually worth your time. Once you’re comfortable with the basics, it’s worth exploring GA4’s Explore reports to compare campaigns side by side.