UTM Tags: How to Build Them Without Breaking Your Analytics

UTM tags are parameters at the end of a link that tell Google Analytics where a visitor came from. A good tag includes at least three parameters: utm_source (where from), utm_medium (which channel) and utm_campaign (which campaign), with every value written in lowercase and following one naming template. For Google Ads you usually don’t need them, because auto-tagging does the job.

I’ve been setting up Google Ads and analytics for more than 9 years, and almost every audit shows the same picture: the email newsletter is tagged three different ways, some social traffic sits under direct, and the reports have dozens of rows nobody can make sense of. Below I’ll show how to build tags so your reports stay clean from day one.

What UTM tags are and why you need them

When someone lands on your site, the browser doesn’t always say where they came from. Clicks from messengers, mobile apps, PDF files or QR codes often look like direct traffic. UTM tags solve this: you label the link yourself, and GA4 records the source, medium and campaign from that label.

You need tags wherever you place a link to your site and want to see the result:

  • email newsletters;
  • social media posts and ads;
  • links in Telegram channels and group chats;
  • QR codes on flyers, packaging and business cards;
  • influencer and partner placements;
  • ad platforms without a built-in GA4 integration.
A link with colored UTM tags passing traffic sources to analytics

What a link with UTM tags looks like

Tags go after the page address. The first parameter follows a ?, and the rest are joined with &. Example:

https://primer-shop.com/sale?utm_source=newsletter&utm_medium=email&utm_campaign=black_friday
Diagram of a URL with UTM tags: page address, utm_source, utm_medium and utm_campaign

If the address already contains a ? (for example ?page=2), add the tags with &. Never use a second question mark.

Which parameters exist and which are required

Google’s Analytics help recommends always using three parameters: utm_source, utm_medium and utm_campaign. Add the others when you need them.

  • utm_source: where the visitor came from. For example newsletter, instagram, partner_site, flyer.
  • utm_medium: the channel or traffic type. For example email, social, paid_social, cpc, qr, referral.
  • utm_campaign: the campaign, promotion or product name. For example black_friday, spring_sale, new_collection.
  • utm_content: what differs between links in the same campaign. For example button_top and button_bottom in one email, or different creatives.
  • utm_term: the keyword, if the platform can pass it.
  • utm_id: the campaign ID. You need it if you import cost data from other platforms into GA4.
  • utm_source_platform: the platform used to buy the ads.

There are also utm_creative_format and utm_marketing_tactic, but according to Google’s help, GA4 doesn’t show them in reports yet.

The rules I follow when building tags

The goal isn’t just to add a tag, it’s to make sure the report is still readable six months from now. These are the rules I use for my own projects and for clients.

  1. Lowercase only. GA4 is case-sensitive: newsletter and Newsletter become two different rows in your report.
  2. Latin letters, numbers, underscores and hyphens only. Non-Latin characters turn into long codes like %D0%B0, which are hard to read and some services break them.
  3. No spaces. Use _ instead.
  4. Always name the same source the same way. Decide once, instagram or ig, and stick with it.
  5. Use standard values in utm_medium. GA4 assigns traffic to default channel groups based on utm_medium and utm_source. If you write utm_medium=newsletter-post, the traffic may end up as “Unassigned”. Use email for newsletters, social for organic social posts, and paid_social or cpc for paid social ads.
  6. Keep a tag log. A simple Google Sheet with columns for date, source, medium, campaign and full URL. It’s a lifesaver when several people create tags.

UTM examples for different channels

Templates you can use as a starting point:

  • Email newsletter: utm_source=newsletter&utm_medium=email&utm_campaign=black_friday
  • Organic Instagram post: utm_source=instagram&utm_medium=social&utm_campaign=new_collection
  • Facebook ad: utm_source=facebook&utm_medium=paid_social&utm_campaign=retargeting_nov
  • Telegram channel post: utm_source=telegram&utm_medium=social&utm_campaign=promo_week
  • QR code on a flyer: utm_source=flyer&utm_medium=qr&utm_campaign=store_opening
  • Influencer placement: utm_source=blogger_name&utm_medium=influencer&utm_campaign=autumn_promo

Tags matter most for QR codes: without them, the visit is almost always recorded as direct.

How to build a link quickly

Building links by hand is tedious and error-prone: it’s easy to miss an &, add a second ? or leave a space. Any UTM builder will help, including Google’s own Campaign URL Builder. Whatever tool you use, the workflow is the same:

  1. Paste the address of the page the link should lead to.
  2. Fill in utm_source, utm_medium and utm_campaign using your naming template.
  3. Add utm_content and utm_term if needed.
  4. Copy the final link and open it in a browser: the page should load without errors.
  5. Add the link to your tag log.

Do you need UTM tags in Google Ads?

Usually not. Google Ads has auto-tagging: a gclid parameter is added to every click, and GA4 gets much more data from Google Ads than tags can provide, including campaign, ad group and keyword. To check that it’s on:

  1. In Google Ads, click the “Admin” icon.
  2. Select “Account settings”.
  3. Open the “Auto-tagging” section and make sure the box to tag the URL people click through from your ad is checked.

If you do add UTM tags to Google Ads with auto-tagging on, GA4 still takes source, medium and campaign from auto-tagging. So there’s no need for them, and incorrect tags only add confusion. The exception is when you need Google Ads data in a third-party analytics tool or CRM that doesn’t understand gclid.

Where to see UTM data in GA4

In GA4, open “Reports”, then “Acquisition” and “Traffic acquisition”. In the table, choose the “Session source / medium” dimension, and “Session campaign” for campaigns.

GA4 traffic acquisition report by session source and medium with a duplicate caused by letter case

The screenshot (Russian interface) shows what inconsistent letter case does: the same newsletter is split into two rows, newsletter / email and Newsletter / Email. You can’t merge them retroactively in standard reports.

If you see conversions in your reports but aren’t sure which events are being counted, read my articles on GA4 events and GA4 key events.

Common mistakes

  • Tags on internal links. For example, on a banner on your homepage. A click starts a new session with a new source, and the real source (ads, search) is lost. Never tag internal links.
  • Inconsistent case and spelling. Email, e-mail and mail in one property turn the report into a mess.
  • Non-Latin characters and spaces. Links break when pasted into messengers and look like gibberish.
  • utm_source without utm_medium. The traffic doesn’t land in the right channel group and ends up unassigned.
  • Tags in Google Ads instead of auto-tagging. Extra work, and the data still comes from auto-tagging anyway.
  • Redirects that drop tags. Some sites redirect to another page and strip the parameters. Test it: open the link and check whether the tags are still in the address bar.
  • Tagged links get indexed. If tagged links are publicly available, search engines may see duplicate pages. A canonical tag, which most SEO plugins add automatically, usually solves this.

FAQ

Do UTM tags affect SEO?

Not by themselves. The only risk is duplicate pages if tagged links get indexed at scale, and a correct canonical tag handles that. Tagged internal links hurt your analytics, not your SEO.

Can I use non-Latin characters in tags?

Technically yes, GA4 decodes them. But the links become long and awkward to copy, and some services truncate them. I always use Latin characters.

Why did traffic from a tagged link end up as “Unassigned”?

Most likely, the utm_medium value doesn’t match any rule in the default channel group. Use standard values: email, social, paid_social, cpc, referral, affiliate.

Should I tag the link in my Instagram bio or YouTube description?

Yes, if you want to separate that traffic from other visits from the same network. For example, utm_source=instagram&utm_medium=social&utm_campaign=profile_link.

Conclusion

A good UTM tag is short, written in lowercase Latin characters and always includes utm_source, utm_medium and utm_campaign. Agree on a naming template, keep a tag log, never tag internal links and don’t duplicate Google Ads auto-tagging. Then your GA4 reports will show the real picture instead of a hundred near-identical rows.

If you want your analytics set up correctly from the start, I can set it up for you. And if your ads are already running and you’re not sure about the numbers, order a free Google Ads express audit: I’ll review your account and tell you what to fix first. For more breakdowns of Google Ads and analytics, check out my YouTube channel.

Want real leads, not just clicks?

In most cases ads fail because of setup mistakes. Message me: I will review your account and show you where the money leaks and how to fix it.

Sergey Onishchenko
About the author Sergey Onishchenko

Independent Google Ads specialist. I have been setting up and managing ads since 2017. Google Partner, certified Google Analytics specialist. I write and record tutorials on Google Ads, GA4 and GTM.

Free
express audit

I will review your Google Ads account within 2 business days and send you a prioritized list of issues.

Get the audit