You are running campaigns across Google Ads, Facebook, email newsletters, and LinkedIn - and your analytics tool is telling you that most of your traffic comes from 'direct'. Sound familiar? This is not an analytics bug. It is a UTM problem. UTM parameters are the five small tags you append to a URL that tell Google Analytics (and every other analytics platform) exactly where a visitor came from, what campaign drove them, and which specific ad or link they clicked. Without them, you are flying blind. With them, you can finally see which channels are generating real revenue - not just traffic.
What Are UTM Parameters?
UTM stands for Urchin Tracking Module - a legacy name from Urchin Software, which Google acquired in 2005 and turned into Google Analytics. Today, UTM parameters are a universal standard supported by virtually every analytics platform. They are query string fragments added to the end of a URL, each starting with utm_. There are five official UTM parameters, three of which are required and two optional.
- utm_source (required) - identifies where the traffic comes from. Examples: google, facebook, newsletter, linkedin.
- utm_medium (required) - identifies the marketing channel. Examples: cpc, email, social, organic.
- utm_campaign (required) - identifies the specific campaign. Examples: spring-sale-2026, brand-awareness-q2, retargeting-abandoned-cart.
- utm_content (optional) - differentiates links within the same campaign. Useful for A/B testing two ad creatives or two CTAs in the same email.
- utm_term (optional) - captures the paid keyword that triggered the ad. Mostly used with Google Ads to track which search queries convert best.
Why 'Direct' Traffic Is Often Miscategorised Traffic
Here is a question every marketer eventually asks: why does my analytics show 30% direct traffic when I barely have any brand awareness? The answer is almost always attribution loss. Any of the following scenarios will strip referrer information and dump the visit into 'direct':
- HTTPS to HTTP redirects - when a visitor moves from a secure page to an insecure one, browsers do not pass referrer information. Even now, some landing pages still have mixed-content issues that cause this.
- Email clients - most desktop and mobile email clients (Outlook, Apple Mail, Gmail app) strip or block referrer headers entirely. Every click from an email without UTMs lands as direct.
- Shortened URLs - link shorteners often break the referrer chain. If you use bit.ly without UTMs, you will never know which campaign sent that traffic.
- Dark social - when someone copies and pastes your URL from WhatsApp, Slack, a PDF, or a private Facebook message, there is no referrer to capture. Dark social accounts for a substantial portion of traffic at most content sites and is virtually invisible without UTMs.
- In-app browsers - platforms like Instagram and TikTok use in-app browsers that behave inconsistently with referrer headers. UTMs bypass this entirely because they are embedded in the URL itself.
UTM Naming Conventions: The Part Most Teams Get Wrong
UTM parameters are case-sensitive. utm_source=Google and utm_source=google will appear as two separate traffic sources in your analytics. utm_medium=Email and utm_medium=email are counted separately. Multiply this inconsistency across a team of five people running campaigns over 12 months and you end up with data that is nearly impossible to aggregate. Establishing naming conventions before you start is not optional - it is the difference between usable data and noise.
- Always use lowercase - no exceptions. google not Google, cpc not CPC, spring-sale not Spring-Sale.
- Use hyphens, not spaces or underscores - spaces get encoded as %20 in URLs (ugly and breakable). Underscores are harder to double-click to select in text editors. Hyphens read cleanly: summer-promo-2026.
- Be specific with campaign names - email is not a campaign name. q2-2026-welcome-series is. You will thank yourself in six months when you need to compare two campaigns.
- Separate medium from source - utm_source=facebook&utm_medium=social is correct. utm_source=facebook-social collapses two dimensions into one and makes filtering impossible.
- Document your taxonomy in a shared spreadsheet - every team member should have access to the approved values for source, medium, and campaign. Treat it like a brand style guide for data.
How to Build a UTM Link Without Making Mistakes
Manually constructing UTM URLs by hand is where errors creep in - a missing ampersand, an accidental space, a typo in a parameter name. A UTM builder eliminates these mistakes by doing the URL encoding and concatenation for you. Searchlight's UTM Builder lets you enter your base URL and all five parameters, then generates a properly formatted tracking URL you can copy with one click. You can also shorten the link for cleaner sharing on social media.
- Enter your destination URL in the base URL field - the page visitors will land on after clicking.
- Fill in utm_source, utm_medium, and utm_campaign (required). Add utm_content and utm_term if needed.
- Preview the full generated URL to check it looks right before copying.
- Copy the link and paste it directly into your ad, email, or social post - no manual editing required.
- Save your parameters to a campaign tracking spreadsheet so you can reproduce consistent links next month.
Free tool · no account needed
Build properly formatted UTM links in seconds
Runs entirely in your browser. No uploads, no tracking, no paywall.
Try the UTM Builder -> →UTM Parameters and GA4: How the Data Flows
When a visitor clicks a UTM-tagged link, their browser loads the destination URL with the query string intact. GA4 reads the UTM parameters from the URL, stores them as session-level attributes, and uses them to populate channel grouping, source/medium reports, and campaign performance data. Understanding this flow helps you avoid two common pitfalls.
- UTMs override GA4 auto-tagging for Google Ads - if you use both gclid (auto-tagging) and UTMs on the same Google Ads links, the UTMs take precedence. In most cases, let Google Ads auto-tagging handle attribution for Ads traffic and reserve UTMs for everything else.
- UTMs do not survive cross-domain tracking - if a visitor clicks a UTM link on your main site and then moves to a checkout on a subdomain, the UTM session data stays with the first session. You need cross-domain tracking set up separately in GA4 to stitch these sessions together.
- One UTM per channel, not per ad - utm_content is where you differentiate ads within a campaign. Do not create a new utm_campaign for every ad variant; that makes campaign-level rollup impossible.
What Good Campaign Attribution Actually Looks Like
Consistent UTM tagging transforms your analytics from a vanity metrics dashboard into a genuine decision-making tool. With six months of clean data you can answer questions like: which email subject line drove the most conversions? Which social platform had the lowest cost-per-acquisition? Is our retargeting campaign outperforming prospecting? Which blog post CTA generates the most trial sign-ups? These are the questions that inform budget decisions - and you cannot answer them without reliable attribution.
Frequently Asked Questions About UTM Parameters
Free tool · no account needed
Stop guessing where your traffic comes from
Runs entirely in your browser. No uploads, no tracking, no paywall.
Build UTM links free -> →