utms.co rebuild — direction: B · Power Direction chosen Sep 22, 2026: B · Power. A kept for comparison. Clickable mockup, nothing is sent anywhere.
by iExcel

Tag a link. Keep your reports clean.

Build a UTM link that Google Analytics 4 reads correctly. Nothing you type gets rewritten.

Your campaign

Sample campaign

Quick fill

Optional: keyword, content, ID

Your link GA4 channel: —

Two more tools, free with your email

Enter your work email once to unlock ad-platform templates and bulk tagging. We'll email your links and templates too.

Ad platform templates

Tracking strings that fill in campaign, ad set and ad names automatically, ready to paste into the ad platform.

Google · Meta · Instagram · LinkedIn · TikTok · YouTube · Bing · Reddit · Pinterest · Snapchat · X · Email · Newsletter

Tag a list of links

Paste your page URLs, one per line, and get every one back tagged with the campaign above.

Up to 500 URLs · one click to copy all

Not sure your tracking adds up?

iExcel's team will look over your UTMs and GA4 setup with you on a free strategy call.

by iExcel
UTM Workbench
Free · single links & decoder

Free UTM Builder & Campaign URL Generator

Clean, GA4-ready campaign links in seconds. Build one link or hundreds, see the GA4 channel before you launch, and decode links you already have.

  • ✓ GA4 compatible
  • ✓ No signup required
  • ✓ 100% free
  • ✓ Verified ad-platform macros

Build one link

Sample campaign

Quick fill

Naming model: purpose_audience_date, for example spring_sale_b2b_2026. Keep campaign names under 40 characters so dashboards stay readable.

Want a second set of eyes on your tracking? iExcel will review your UTMs and GA4 setup on a free strategy call.

UTM tracking guide

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.

ParameterQuestion it answersExampleRequired
utm_sourceWhere did the traffic come from?google, facebook, newsletterYes
utm_mediumWhat type of channel is it?cpc, email, socialYes
utm_campaignWhich initiative is this?spring_sale_b2b_2026Yes
utm_termWhich paid keyword?growth marketing agencyNo
utm_contentWhich creative or link variant?header_cta, video_15sNo
utm_idWhich 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.

  1. 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.
  2. Set the source. The platform or property sending the click: google, facebook, linkedin, newsletter. Pick one spelling per platform and never change it.
  3. 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.
  4. 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.
  5. 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.
  6. 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_sourceutm_mediumGA4 default channel
googlecpcPaid Search
googleorganicOrganic Search
facebookcpc  or  paid_socialPaid Social
facebooksocialOrganic Social
youtubecpcPaid Video
newsletteremailEmail
criteocpcPaid Other
anydisplay, banner, cpmDisplay
partnerreferralReferral
anything unrecognisedmedia, paidsearchUnassigned

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.

PlatformSourceMediumCampaign macroAd macro
Google Adsgooglecpc{campaignid}{creative}
Meta (Facebook){{site_source_name}}cpc{{campaign.name}}{{ad.name}}
LinkedIn Adslinkedincpc{{CAMPAIGN_NAME}}{{AD_NAME}}
TikTok Adstiktokcpc__CAMPAIGN_NAME____CID_NAME__
YouTube Adsyoutubecpc{campaignid}{creative}
Microsoft Adsbingcpc{Campaign}{AdId}
Reddit Adsredditcpc{{CAMPAIGN_NAME}}{{AD_NAME}}
Pinterest Adspinterestcpc{campaign_name}{creative_id}
Snapchat Adssnapchatcpc{{campaign.name}}{{creative.name}}
X (Twitter) AdstwittercpcTyped by handTyped 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.

  1. Processing lag. Standard GA4 reports can take 24 to 48 hours. Check the Realtime report first to confirm the hit arrived at all.
  2. 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.
  3. 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.
  4. 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.
  5. The source and medium do not match a rule, so the session lands in Unassigned. Mediums like media or paidsearch match nothing.
  6. Casing split the data. Facebook and facebook are two rows in every report, even though they resolve to the same channel.
  7. 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.
  8. Consent mode or an ad blocker. If the user declined analytics consent, the session may never be recorded regardless of tagging.
  9. 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.

Capabilityutms.coTypical free builderPaid tools
Build a single tagged linkYesYesYes
Keeps keyword words intactYesYesYes
GA4 channel preview before launchYesNoPaid add-on
Link health score and issue listYesNoRare
Decoder for an existing linkYesNoPaid
Bulk building with CSV exportYesNoPaid, often row-capped
Verified ad-platform macros10+ platformsNoRare
Signup requiredNoNoYes
Monthly link limitNoneNoneFree 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.