Key takeaways
- UTM parameters are tags added to a link that tell your analytics tool which source, medium, and campaign a visit came from.
- Pick one lowercase naming convention and stick to it, because analytics tools treat Meta and meta as two different sources.
- Add your own UTM tags to every paid destination URL before launch, and check that they survive every redirect, or the visits land in Direct.
What are UTM parameters?
UTM parameters are short tags added to the end of a URL, such as utm_source=newsletter, that tell your analytics tool where a visit came from. When someone opens a tagged link, the tool reads the tags and files the visit under the source, medium, and campaign you named. That is how you tell a visitor from last week’s email apart from one who came through a paid campaign, even when both land on the same page.
UTM stands for Urchin Tracking Module, after Urchin, the analytics company Google bought and turned into Google Analytics. The tags are now read by most analytics tools, not only Google’s. They cost nothing, need no code on the page beyond your normal analytics tag, and work with any traffic source that lets you choose the destination URL.
The five UTM parameters, and a few newer ones
Five parameters do almost all the work. Google Analytics recommends always using the first three together.
| Parameter | What it answers | Example value |
|---|---|---|
| utm_source | Which site, platform, or sender sent the visit | moonetix, newsletter, facebook |
| utm_medium | What kind of channel it was | cpc, email, affiliate |
| utm_campaign | Which campaign, promotion, or launch | spring-sale, app-launch-2026 |
| utm_content | Which creative or link, when one campaign has several | hero-button, video-thumb |
| utm_term | Which paid keyword, mostly for search ads | budget-crm |
Google Analytics 4 also reads utm_id (a campaign ID that matches campaign data you upload), utm_source_platform (the buying platform), utm_creative_format, and utm_marketing_tactic. Google’s own help page notes that the last two are not currently reported in Google Analytics properties, so most advertisers can ignore them.
How UTM tracking works
A tagged URL looks like this:
https://example.com/pricing?utm_source=moonetix&utm_medium=cpa&utm_campaign=pricing-page-test&utm_content=variant-a
- The part after ? is the query string. Each tag is a name and a value, joined by = and separated by &.
- When the page loads, your analytics script reads the tags from the address bar and attaches them to the visit.
- Everything the visitor does afterwards in that session, such as a sign-up or a purchase, is reported under those values.
Three things follow from this. The page must run your analytics tag, or nothing reads the tags. The tags must still be in the URL when the page loads, so a redirect that drops the query string silently breaks tracking. And the tags describe the visit, not the person: they do not follow a user across devices or into an app installed from a store.
A UTM naming convention that keeps reports clean
UTM tracking fails less often from technical errors than from inconsistent naming. Google’s documentation is explicit that values are case sensitive: Meta and meta show up as two sources, and SpringSale and Spring_Sale as two campaigns. A few rules prevent most of the mess:
- Lowercase everything. It is the simplest rule to follow and to check.
- Pick one separator. Hyphens or underscores, not both. Avoid spaces, which turn into %20 or + in the URL.
- One source per platform. If you call it moonetix once, never call it moonetix.com or shark later.
- One medium per channel type. Decide what cpc, email, and affiliate mean for you and reuse them.
- Campaign names that sort well. A pattern such as 2026-09-pricing-test groups related campaigns and shows their order at a glance.
- No personal data. Never put an email address, phone number, or user ID in a tag. Google’s policies forbid passing personally identifiable information to Google Analytics, and tagged URLs are easy to share and log.
Keep the convention in a shared sheet with one row per live link: the full URL, each tag value, the date, and who created it. It takes a minute per campaign and saves hours of cleaning later.
How utm_medium decides the channel in Google Analytics 4
Google Analytics 4 sorts every visit into a default channel group, such as Paid Search, Email, or Referral. For tagged traffic, the medium does most of the sorting. A few of Google’s published rules:
| utm_medium value | Default channel in GA4 |
|---|---|
| Contains “cp” (such as cpc or cpa), is ppc or retargeting, or starts with paid | Paid Other, or Paid Search, Paid Social, or Paid Video when the source is a known search, social, or video site |
| display, banner, expandable, interstitial, cpm | Display |
| email, e-mail | |
| affiliate | Affiliates |
| referral, app, link | Referral |
| Anything that matches no rule | Unassigned |
The channel rules themselves are not case sensitive, but your source and campaign values still are. The practical lesson: choose a medium that lands in the channel you expect. A medium such as rewarded or offerwall matches no rule and ends up in Unassigned. For a campaign you pay per click or per completed action, cpc or cpa sorts it into the paid channels, and your source value then tells you which platform it was.
How to tag a paid campaign link
Every paid source that lets you choose the destination URL works the same way: add the tags to the URL you give the platform, and they reach your page with the visitor, where your analytics tool reads them as usual.
Untagged paid traffic hides in Direct
Most paid sources, offerwalls included, do not add UTM parameters for you, and many visits arrive without a referrer. Without your own tags, those visits usually show up as Direct traffic, mixed with bookmarks and typed-in visits.
A few details make the setup smoother:
- Tag before launch. On many platforms, changing the destination URL of a live ad sends it back for review, so settle the tags first.
- Mind the URL length. Platforms limit how long a destination URL can be, so keep tag values short and readable.
- One campaign, one utm_campaign. If one campaign targets many countries, compare countries with your analytics tool’s country report instead of a tag per country.
- Use utm_content for tests. If you run two campaigns that point to two versions of a page, give each a different utm_content value, such as variant-a and variant-b.
- Keep the click ID too. Pay-per-result networks add their own click ID to the URL so your server can confirm a conversion with a postback. UTM tags and click IDs do different jobs and sit side by side in the same URL. Click ID and sub ID explains the difference.
A tag set for a pay-per-result campaign link could look like this:
https://example.com/signup?utm_source=moonetix&utm_medium=cpa&utm_campaign=2026-09-signup-test&utm_content=variant-a
Before you pay for a single result, run through the landing page checklist to fix what visitors see first.
Worked example: from sign-ups to cost per trial
UTM tags turn a traffic source’s own numbers into numbers you can act on. The case below uses made-up figures; what carries over to your campaigns is the way the cost per trial falls out of the tags.
Illustrative: $10 of paid sign-ups and two page variants
You pay a pay-per-result source $0.25 for each new free account and receive 40 accounts: $10.00. In Google Analytics 4, you filter by that source’s utm_source value and utm_campaign = 2026-09-signup-test and see 6 of those sessions go on to start a paid trial. Your cost per trial is $10.00 / 6 = $1.67. A second campaign with utm_content = variant-b records 10 trials for the same spend: $1.00 each. Without the tags, both campaigns would sit in Direct, mixed with bookmarks and typed-in visits.
From there, ROAS and cost per lead are one step away: divide the revenue by the spend, or the spend by the leads, for each tagged campaign.
UTM parameters and app store links
UTM tags are built for web pages. When a link goes to an app store, the store does not pass your UTM tags into the app, so web analytics cannot follow the user through the install. The stores have their own options instead:
- Google Play passes a referrer value on the store link to the installed app through the Play Install Referrer API. Google Analytics points Android advertisers to its Play Campaign URL Builder for this, which requires the Google Analytics for Firebase SDK in the app.
- The App Store offers campaign links in App Store Connect. They report product page views, downloads, and usage per campaign, with data shown only once a campaign reaches a small minimum number of users.
- Mobile measurement partners tie installs and in-app events to sources across both stores. What is an MMP? explains how they work.
For app offers on Moonetix, each conversion is confirmed by a server-to-server postback from your side that carries our click ID, so you can match it to the new user in your own data. How to get app installs covers measurement by source in more depth.
Common UTM mistakes
A mistake that often goes unnoticed for months is tagging internal links. A visitor who arrived from search and then clicked a tagged banner on your own site can be relabeled as a campaign visitor, so keep UTM tags for links that bring people in from outside. Another quiet one is a redirect that drops the query string: open the final tagged URL in a private window and check that the tags are still in the address bar after every hop.
The rest are about discipline:
- Mixed spellings. Email, email, and e-mail split one channel into three rows.
- A missing source, medium, or campaign. Use all three on every link, as Google recommends.
- Mediums that match no channel rule, so traffic lands in Unassigned, where nobody looks.
- Tagged URLs posted publicly. Shared links carry your tags into places you did not pay for, so tag the ad or campaign link, not the link on your profile.
UTM checklist before launch
- Source, medium, and campaign are set, all lowercase, with one separator.
- The medium sorts into the channel you expect in your analytics tool.
- The values match your shared naming sheet.
- The tagged URL loads, and the tags survive every redirect.
- A test visit appears in your real-time report with the right source and campaign.
- A conversion, such as a sign-up, is set up as a key event so you can measure more than visits.
UTM tags and a Moonetix offer
Advertising on Moonetix runs through custom integrations: together we agree on the offer, the payout per conversion, the target countries, and how conversions are tracked, then connect your tracking with a server-to-server postback. Your postback confirms what you pay for, and if the offer lands on a web page, UTM tags in the tracking link show the same users in your analytics next to every other channel. Settle your source, medium, and campaign values before we set up the tracking. See advertising on Moonetix.
Frequently asked questions
What are the five UTM parameters?
utm_source, utm_medium, utm_campaign, utm_content, and utm_term. Source, medium, and campaign should be on every tagged link. Content separates creatives within one campaign, and term records paid keywords.
Are UTM parameters case sensitive?
Yes, the values are. Google Analytics treats Meta and meta as two different sources, so pick a lowercase convention and use it everywhere.
Do UTM parameters affect SEO?
They do not change how a page ranks, but tagged URLs that get linked publicly can be crawled as separate addresses for the same page. A canonical tag that points to the clean URL avoids duplicates.
Does Moonetix add UTM parameters automatically?
No. Include your own UTM tags in the tracking link when we set up the integration together. They sit next to the click ID that your postback sends back to us.
Do UTM parameters work on app store links?
Not for tracking inside the app. Use the Google Play referrer, App Store Connect campaign links, or a mobile measurement partner to connect installs to campaigns.


