What are UTM parameters?
UTM parameters are tags added to the end of a campaign link so analytics tools can identify where a visitor came from. There are five standard parameters — utm_source, utm_medium, utm_campaign, utm_term and utm_content — plus utm_id for cost-data import. Without them, Google Analytics 4 groups most campaign traffic as Direct or Unassigned, which hides true campaign performance.
UTM stands for Urchin Tracking Module, named after Urchin Software, the analytics product Google acquired in 2005 that became Google Analytics. The parameters are read by GA4, Adobe Analytics, Matomo, Piwik PRO, Plausible, HubSpot and most CRMs, because they are plain query-string values rather than a proprietary format.
| Parameter | Question it answers | Example | Required |
|---|---|---|---|
| utm_source | Where did the traffic come from? | google, facebook, newsletter | Yes |
| utm_medium | What type of channel is it? | cpc, email, social | Yes |
| utm_campaign | Which initiative is this? | spring_sale_b2b_2026 | Yes |
| utm_term | Which paid keyword? | growth marketing agency | No |
| utm_content | Which creative or link variant? | header_cta, video_15s | No |
| utm_id | Which campaign ID, for cost import? | {campaignid} | No |
Source is where the traffic came from. Medium is the type of channel. The pair decides your GA4 channel: source=google with medium=cpc is Paid Search, while source=google with medium=organic is Organic Search.
How to build a UTM link
Paste your landing page URL, fill in source, medium and campaign, add term or content if you need them, then copy the finished link. The builder above does this live and shows the GA4 channel your link will land in before you spend anything.
- Start with the exact landing page. Use the final URL a visitor should reach, including https:// and any existing parameters. Tagging a URL that then redirects is the most common way parameters get lost.
- Set the source. The platform or property sending the click: google, facebook, linkedin, newsletter. Pick one spelling per platform and never change it.
- Set the medium. The type of traffic: cpc for paid clicks, email, social for organic posts, referral for partners. This is the field GA4 leans on hardest for channel grouping.
- Name the campaign. Use a model such as purpose_audience_date, for example spring_sale_b2b_2026. Keep it under 40 characters so dashboards and exports stay readable.
- Add term and content only when they earn their place. utm_term is for paid keywords. utm_content separates creative variants so you can compare them.
- Check the channel and score, then copy. If the preview says Unassigned, your source and medium do not match any GA4 rule and the traffic will be hard to report on.
Which GA4 channel will my link land in?
GA4 assigns every session to a default channel group by matching your utm_source against Google's published source list and your utm_medium against a set of rules. The builder above previews that assignment before you launch, so links do not land in Unassigned.
| utm_source | utm_medium | GA4 default channel |
|---|---|---|
| cpc | Paid Search | |
| organic | Organic Search | |
| cpc or paid_social | Paid Social | |
| social | Organic Social | |
| youtube | cpc | Paid Video |
| newsletter | ||
| criteo | cpc | Paid Other |
| any | display, banner, cpm | Display |
| partner | referral | Referral |
| anything unrecognised | media, paidsearch | Unassigned |
Two facts worth knowing. Google's published source-category list contains 819 sources, and a source that is not on it will not trigger the search, social, shopping or video rules. Google also states that channel definitions are not case sensitive, so "Facebook" and "facebook" reach the same channel — but your reports still show them as two separate rows, which is why casing matters.
Checked against Google Analytics Help, "[GA4] Default channel group", and Google's published source-category list, September 2026.
Dynamic UTM parameters for every ad platform
Most ad platforms can fill in campaign, ad set and ad names automatically using macros, so you never retype them. The syntax differs per platform, and using the wrong one silently breaks tracking. These are verified against each platform's own documentation.
| Platform | Source | Medium | Campaign macro | Ad macro |
|---|---|---|---|---|
| Google Ads | cpc | {campaignid} | {creative} | |
| Meta (Facebook) | {{site_source_name}} | cpc | {{campaign.name}} | {{ad.name}} |
| LinkedIn Ads | cpc | {{CAMPAIGN_NAME}} | {{AD_NAME}} | |
| TikTok Ads | tiktok | cpc | __CAMPAIGN_NAME__ | __CID_NAME__ |
| YouTube Ads | youtube | cpc | {campaignid} | {creative} |
| Microsoft Ads | bing | cpc | {Campaign} | {AdId} |
| Reddit Ads | cpc | {{CAMPAIGN_NAME}} | {{AD_NAME}} | |
| Pinterest Ads | cpc | {campaign_name} | {creative_id} | |
| Snapchat Ads | snapchat | cpc | {{campaign.name}} | {{creative.name}} |
| X (Twitter) Ads | cpc | Typed by hand | Typed by hand |
Three gotchas that cost teams whole quarters of data: Google Ads has no campaign-name macro, only {campaignid}. Meta freezes names at first publish, so renaming an ad later does not change what lands in your reports. Microsoft's UTM auto-tagging in replace mode overwrites anything you set by hand.
Every macro above verified against the platform's own documentation in September 2026.
Why isn't my UTM link showing in GA4?
In order of how often it actually happens: the report has not processed yet, a redirect stripped the parameters, you are looking at the wrong dimension, auto-tagging took precedence, or the source and medium do not match a GA4 channel rule. Work down this list before assuming the link is broken.
- Processing lag. Standard GA4 reports can take 24 to 48 hours. Check the Realtime report first to confirm the hit arrived at all.
- A redirect ate the parameters. Link shorteners, vanity domains, www-to-apex rules and marketing-platform click trackers can all drop the query string. Load the link yourself and look at the address bar after every hop.
- Wrong dimension. Session campaign, first user campaign and session source/medium answer different questions. Traffic acquisition uses session-scoped dimensions; user acquisition uses first-user ones.
- Google Ads auto-tagging wins. When auto-tagging is on, the gclid takes precedence over manual UTMs for Google Ads traffic, which is usually what you want.
- The source and medium do not match a rule, so the session lands in Unassigned. Mediums like media or paidsearch match nothing.
- Casing split the data. Facebook and facebook are two rows in every report, even though they resolve to the same channel.
- A double question mark broke the URL. If the landing page already had a ?, the tags must be joined with &. The builder above handles this automatically.
- Consent mode or an ad blocker. If the user declined analytics consent, the session may never be recorded regardless of tagging.
- The click never reached the tagged page. In-app browsers, PDFs and QR codes pointing at an old URL are common culprits.
UTM naming conventions that survive contact with a team
Use lowercase only, replace spaces with underscores, agree on one spelling per platform, and write the convention down where the links get made. Inconsistent naming is the single most common cause of unusable campaign reports.
Lowercase everything
GA4 keeps values exactly as you type them. Facebook and facebook become separate rows, splitting one campaign's numbers in two.
One spelling per platform
Pick facebook or meta, paid_social or cpc, and never mix. Fragmented mediums are the second most common reporting break.
purpose_audience_date
A campaign name like spring_sale_b2b_2026 sorts, filters and reads well. Keep it under 40 characters.
Never tag internal links
UTMs on your own navigation restart the session and overwrite the original source, erasing the attribution you paid for.
Keep utm_id for cost import
GA4's cost-data import matches on utm_id plus utm_campaign, so add the platform's campaign ID macro if you want spend beside sessions.
Remember UTMs are public
Anyone can read your campaign names out of the address bar, including competitors. Never put budgets, client names or internal codes in them.
Common mistakes that break reports
- Mixed casing like Facebook versus facebook splits one dataset into two.
- Inconsistent mediums like paid-social versus paid_social fragment your channels.
- UTMs on internal links overwrite the original attribution and inflate direct traffic.
- Deleting the spaces in a keyword changes the data: growth marketing agency and growthmarketingagency are different terms in GA4. This builder keeps your words and encodes the spaces.
- Tagging a URL that redirects hands the parameters to a server that may not pass them on.
- Letting each person invent names guarantees the report is worthless by quarter three.
How this compares with other UTM builders
Most free UTM builders are a single form that produces a link. This one adds the checks that decide whether the data is usable: a GA4 channel preview, a link health score, a decoder, bulk building and verified ad-platform macros.
| Capability | utms.co | Typical free builder | Paid tools |
|---|---|---|---|
| Build a single tagged link | Yes | Yes | Yes |
| Keeps keyword words intact | Yes | Yes | Yes |
| GA4 channel preview before launch | Yes | No | Paid add-on |
| Link health score and issue list | Yes | No | Rare |
| Decoder for an existing link | Yes | No | Paid |
| Bulk building with CSV export | Yes | No | Paid, often row-capped |
| Verified ad-platform macros | 10+ platforms | No | Rare |
| Signup required | No | No | Yes |
| Monthly link limit | None | None | Free tiers cap at 25 |
Based on hands-on testing of nine free UTM builders and a review of the paid tier, September 2026.
Frequently asked questions
What does UTM stand for?
UTM means Urchin Tracking Module. These parameters identify where traffic came from and how each campaign performs.
What is the difference between source and medium?
Source is where traffic came from. Medium is the type of channel. Example: source=google, medium=cpc.
Are UTM parameters case-sensitive in GA4?
Your reports are. GA4 shows values exactly as you type them, so Facebook and facebook appear as two rows. Google's channel grouping itself is not case sensitive, so both still reach Paid Social. Keep everything lowercase and the problem disappears.
How many UTM parameters should I use?
Use source, medium and campaign every time. Add term and content only when useful. Add utm_id when you need strict campaign IDs or GA4 cost-data import.
Should spaces be %20, a plus sign, or an underscore?
Either %20 or a plus sign is fine, and GA4 reads both as a space. What matters is that the words survive: deleting the spaces turns "growth marketing agency" into a different keyword. Underscores also work, as long as every person on the team uses them the same way.
Why does my traffic show as Unassigned in GA4?
Your source and medium did not match any of GA4's channel rules. Mediums such as media or paidsearch match nothing. Check the channel preview in the builder above before launching.
Do UTM parameters affect SEO?
Normally no. UTMs are for tracking, but they can create duplicate URL variants. Canonical tags should handle this on your site.
Should I use UTMs on internal links?
No. Internal UTMs can overwrite original attribution, restart the session and reduce reporting accuracy.
Should I use UTMs for organic social posts?
Yes, if you want campaign-level clarity. Use medium=social and consistent source values per platform.
Can I use UTMs for email campaigns?
Yes. Use source=email or newsletter and medium=email, then separate email placements with utm_content.
Do UTMs work with Google Ads auto-tagging?
They coexist, but for Google Ads traffic the gclid takes precedence in GA4. Keep auto-tagging on for Google Ads and use manual UTMs everywhere else.
What is utm_id for?
utm_id carries a campaign ID. GA4's cost-data import matches on utm_id plus utm_campaign, so it is how you get ad spend to sit beside sessions in your reports.
Can other people see my UTM parameters?
Yes. They sit in the address bar, so anyone who receives the link can read your campaign names, and competitors do exactly that. Never put budgets, client names or internal codes in a UTM.
How do I see UTM data in Google Analytics 4?
Open Reports, then Acquisition, then Traffic acquisition. Add Session source/medium and Session campaign columns. Use Explorations for custom drilldowns.
What happens with inconsistent naming conventions?
You get split datasets and unreliable attribution. A standard naming convention is required for trustworthy reporting.
Is this UTM builder free?
Yes. Building single links is free with no signup and no monthly limit. An email unlocks bulk building, CSV export and the ad-platform templates.
Glossary
- UTM parameter
- A query-string tag appended to a link so analytics tools can attribute the visit to a campaign.
- Default channel group
- GA4's automatic bucketing of sessions into Paid Search, Organic Social, Email and so on, based on source and medium.
- Auto-tagging
- Google Ads appending a gclid to your destination URLs, which GA4 reads instead of manual UTMs.
- Dynamic parameter (macro)
- A placeholder such as {campaignid} that the ad platform replaces with the real value at click time.
- Tracking template
- The Google Ads field that holds tracking parameters separately from the landing page URL.
- Final URL suffix
- The Google Ads field for parameters that must survive redirects and reach the landing page.
- Cost-data import
- Uploading ad spend into GA4 so it appears next to sessions. Matches on utm_id plus utm_campaign.
- Unassigned
- The GA4 bucket for sessions whose source and medium match no channel rule. Usually a tagging mistake.
Generating UTMs is step one. Is your GA4 actually set up to read them?
Most teams tag links but never finish attribution setup. iExcel will review your tracking and send a clear fix plan. Typical response time: within 48 hours.