UTM parameters are tags you add to the end of a URL to tell your analytics platform where a visitor came from. Add ?utm_source=linkedin&utm_medium=paid_social to a link, and Google Analytics 4 records that session as LinkedIn paid social traffic instead of filing it under generic referral or direct traffic.
Most guides tell you there are five. Google's own Campaign URL Builder documents nine. The five classic tags utm_source, utm_medium, utm_campaign, utm_term, utm_content still carry the majority of the work, but utm_id, utm_source_platform, utm_creative_format, and utm_marketing_tactic are documented parameters with real, and differing, levels of support.
UTM Parameter Quick Reference
| Parameter | Identifies | Example value | Google's guidance | Reported in GA4? |
| utm_source | The specific platform or property the visitor came from | Always use | Yes Manual source / Session source | |
| utm_medium | The type of traffic or delivery channel | paid_social | Always use | Yes Manual medium / Session medium |
| utm_campaign | The marketing initiative being measured | summer_webinar_2026 | Always use | Yes Manual campaign name / Session campaign |
| utm_id | A unique ID for the campaign | sw2026_q3 | Recommended | Yes Manual campaign ID |
| utm_source_platform | The platform that directed the traffic | search_ads_360 | Recommended | Yes Manual source platform |
| utm_term | The paid keyword or audience term | project_management_software | Optional | Yes Manual term |
| utm_content | Which specific link or creative was clicked | hero_cta | Optional | Yes Manual ad content |
| utm_creative_format | The creative type | display | Optional | No not currently reported |
| utm_marketing_tactic | The targeting tactic | remarketing | Optional | No not currently reported |
utm_source
What it identifies: the specific origin of the visit a named platform, publication, sender, or property.
utm_source answers where, at the level of a proper noun. Not a category. A name.
Choosing the value
| Value | Verdict | Why |
| Good | Names a specific platform. Reports stay legible. | |
| newsletter | Good | Names a specific owned property, if you consistently mean one thing by it. |
| partner_acme | Good | Identifies exactly which partner drove the visit. |
| social | Bad | A category, not a source. Collapses every social platform into one unusable row. |
| Bad | Capitalisation creates a value distinct from facebook. You now have two rows for one platform. | |
| paid | Bad | Describes traffic type. That belongs in utm_medium. |
| summer_sale | Bad | Describes the initiative. That belongs in utm_campaign. |
The last two are the errors that cost the most reporting time. If you're unsure whether a value belongs in source or medium, our UTM source vs medium vs campaign breakdown resolves it with a three-question test.
Common mistakes
- Inconsistent naming across campaigns. facebook, fb, and meta are three separate sources to GA4. Your Facebook traffic is now split three ways.
- Tagging internal links. GA4 sets a session's attribution at session_start, so a tagged internal link clicked mid-visit won't overwrite the current session's source. The damage arrives later: those tagged URLs get bookmarked and shared, and when someone opens one in a new session, one of your own pages is recorded as the acquisition source.
- Putting the campaign name in the source. Sources should persist across campaigns; campaign names should not.
utm_medium
What it identifies: the type of traffic the delivery mechanism, not the brand.
If utm_source is the proper noun, utm_medium is the common noun. linkedin is a source. paid_social is a medium.
Choosing the value
| Value | Verdict | Why |
| Good | Matches GA4's Email channel rule. | |
| cpc | Good | Standard for paid search. Matches GA4's paid channel pattern. |
| paid_social | Good | Distinguishes paid from organic social, which is the entire point of tagging social. |
| organic_social | Good | The counterpart. Keeps unpaid reach separate from spend. |
| referral | Good | For partner and non-paid third-party placements. |
| Bad | That's a source. Medium describes how, not who. | |
| Bad | Capitalisation splits the value. Use lowercase consistently. | |
| social media | Bad | The space encodes as %20 and produces an ugly, error-prone value. Use an underscore or hyphen. |
Why medium values change your reports
utm_medium is not just a label. GA4's default channel groups read it to decide which channel a session belongs to.
Google's channel definitions match paid channels on a medium pattern covering values containing cp, plus ppc, retargeting, and values beginning paid which is why cpc and paid_social classify as paid traffic while an invented value like fbads does not. Organic Social matches a defined list including social, social-network, social-media, and sm. Email is classified when the source or medium matches variations of email.
Get the medium wrong and the session doesn't just carry a bad label it lands in the wrong channel group, and your paid spend shows up as organic. Which values your organisation standardises on is a governance decision; our UTM naming convention guide covers how to document and enforce them.
Common mistakes
- Inventing platform-specific mediums. facebook_ads as a medium breaks channel classification. Use paid_social and let utm_source=facebook carry the platform.
- Mixing paid and organic under one medium. You lose the ability to measure return on spend.
- Using social as a medium for paid placements. GA4 will classify it as Organic Social.
utm_campaign
What it identifies: the marketing initiative you're measuring the thing with a goal and a budget.
A campaign spans sources and mediums. One utm_campaign value should collect traffic from every channel promoting the same initiative, which is what makes cross-channel comparison possible.
Choosing the value
| Value | Verdict | Why |
| summer_webinar_2026 | Good | Human-readable, specific, sortable, unambiguous a year later. |
| q3_pricing_page_launch | Good | Names the initiative and the period. |
| blackfriday_2026_apac | Good | Initiative, period, market. |
| campaign1 | Bad | Meaningless in six weeks. Meaningless to anyone else immediately. |
| Summer Webinar | Bad | Capitals and a space. Two problems in fourteen characters. |
| linkedin_ad | Bad | Names the channel, not the initiative. Now you can't compare channels within the campaign. |
Common mistakes
- A new campaign name per channel. If the LinkedIn ad, the email, and the paid search ad for one webinar carry three different campaign names, you can no longer answer "how did the webinar campaign perform?"
- Renaming mid-flight. Reporting splits at the moment of the change. Decide the name before launch.
- Dates in inconsistent formats. 2026_q3, q3_2026, and jul2026 won't sort or group together.
utm_content
What it identifies: which specific link or creative variant was clicked, within a single campaign.
This is the differentiator parameter, and it's the most underused of the five classic tags. Source, medium, and campaign are identical across every link in one email utm_content is what tells you which of them people actually clicked.
The clearest use case: multiple links in one email
A promotional email contains three links to the same landing page: a hero button, an inline text link, and a footer link. Every UTM is identical except one.
?utm_source=newsletter&utm_medium=email&utm_campaign=summer_webinar_2026&utm_content=hero_cta
?utm_source=newsletter&utm_medium=email&utm_campaign=summer_webinar_2026&utm_content=inline_text
?utm_source=newsletter&utm_medium=email&utm_campaign=summer_webinar_2026&utm_content=footer_cta
Without utm_content, all three clicks merge into one number and you learn nothing about placement. With it, you learn whether your hero button is doing its job.
The same logic applies to ad creative variants (video_ad_a vs video_ad_b), image versus text placements, and A/B tested link copy.
Choosing the value
Describe the placement or creative, not the campaign. hero_cta and video_ad_a are useful; summer_webinar repeats information already in utm_campaign and wastes the field.
utm_term
What it identifies: the keyword or audience term associated with a paid placement.
utm_term originates in paid search, where it captures the keyword that triggered the ad project_management_software, crm_for_startups.
When you actually need it
For Google Ads specifically, auto-tagging captures keyword data natively and in more detail than a manual utm_term can. Manual keyword tagging is more relevant on platforms without that integration, or where you're using the field to record a targeted audience segment rather than a search term.
If you're running Google Ads with auto-tagging enabled, utm_term is usually redundant and manual tagging interacts with auto-tagging in ways worth understanding before you add it. Our GA4 campaign tracking guide covers that interaction.
Never put personal data in it
utm_term sometimes gets misused as a general-purpose data field. Email addresses, customer IDs, and any personally identifiable information must never appear in a URL parameter. URLs are logged, shared, and cached far beyond your analytics platform.
utm_id
What it identifies: a unique identifier for the campaign, separate from its human-readable name.
Google lists utm_id as recommended, not optional the same tier as source, medium, and campaign. It's the least-used parameter relative to its documented importance.
Why it exists
utm_campaign is a name written for humans, and names get edited. utm_id is a stable key that doesn't change even when the campaign name does, and it populates the Manual campaign ID dimension in GA4.
Its most concrete use is campaign data import. If you're importing cost data into GA4 to calculate return on ad spend, imported rows join to your session data on required keys utm_source, utm_medium, and date and utm_id gives you a granular identifier for tying imported campaign records to the right sessions.
Choosing the value
Use something short and stable that maps to a record in your own system: sw2026_q3, ADV-4471, or your ad platform's native campaign ID. It doesn't need to be readable. It needs to be unique and unchanging.
One practical note
If you're generating URLs with a builder that doesn't expose a utm_id field, you can append it manually it's a standard query parameter like any other.
Additional GA4 Campaign Parameters
Three further parameters appear in Google's Campaign URL Builder, and they are not equal in support. Conflating them is the most common error in the small number of articles that mention them at all.
| Parameter | Purpose | Guidance | Status in GA4 reporting |
| utm_source_platform | The platform that directed traffic to your property for example search_ads_360 | Recommended | Collected and reported populates the Manual source platform dimension |
| utm_creative_format | The format of the creative, such as display or video | Optional | Collected, not currently reported in standard GA4 reporting |
| utm_marketing_tactic | The targeting tactic, such as remarketing or prospecting | Optional | Collected, not currently reported in standard GA4 reporting |
What "not currently reported" means in practice
Google documents utm_creative_format and utm_marketing_tactic as valid campaign parameters, and its own URL builder will generate them. But Google also states directly that these two are not reported in Analytics properties.
So: the URL is valid, the parameters are legitimate, and you will not find a standard report showing them. If you add them expecting a dimension to appear, you'll spend an afternoon looking for something that isn't there.
A reasonable position: use utm_source_platform where it's meaningful, since it is both recommended and reported. Treat the other two as forward-looking or as data you're capturing for a warehouse or server-side pipeline rather than for GA4's interface and verify current support before you build reporting on them, because platform behaviour changes.
Which UTM Parameters Are Required?
This question gets answered too simply almost everywhere, so here is the precise version.
What Google says
Google's Campaign URL Builder documentation states that when you add parameters to a URL, you should always use utm_source, utm_medium, and utm_campaign. It lists utm_id and utm_source_platform as recommended, and utm_term, utm_content, utm_creative_format, and utm_marketing_tactic as optional.
The rule almost nobody mentions
There's a second consideration that changes how you should think about "optional", and it comes from Google's traffic-source documentation.
Where a GCLID or DCLID can't be used as intended, if any UTM parameter is present on the URL, Google Analytics derives all cross-channel traffic-source dimension values from the UTM parameters exclusively.
Read that carefully, because the consequence is significant: a partially tagged URL is not treated as partially tagged. Once one UTM parameter is present, Analytics stops inferring the other traffic-source values from anywhere else and takes them from your UTMs alone. Missing parameters can surface as (not set).
Google's guidance follows directly from this if you're setting one UTM parameter, set all the relevant ones, particularly utm_source, utm_medium, utm_campaign, utm_id, and utm_source_platform.
The practical answer
A URL with only utm_source will still work as a URL. But "the link works" and "the reporting is usable" are different standards. Treat source, medium, and campaign as mandatory in practice, add utm_id if you import campaign data or need a stable key, and add the rest when they answer a question you actually have.
Which Optional Parameters Do You Actually Need?
Five questions. Each one that returns yes adds a parameter.
| # | Ask yourself | If yes |
| 1 | Will more than one link in this campaign point to the same destination? | Add utm_content to tell them apart |
| 2 | Are you testing creative or placement variants? | Add utm_content with a variant identifier |
| 3 | Do you import cost data into GA4, or need an ID that survives a campaign rename? | Add utm_id |
| 4 | Is traffic being routed through a platform distinct from the source itself? | Add utm_source_platform |
| 5 | Are you tagging paid keywords on a platform without native keyword reporting? | Add utm_term |
If none apply, three parameters is a complete and correct implementation. Adding parameters you won't analyse creates maintenance cost and inconsistency risk without producing insight.
How UTM Parameters Fit Together
Here is a complete tagged URL for a single campaign, dismantled.
https://onlinetoolpot.com/tool/campaign-url-builder
?utm_source=linkedin
&utm_medium=paid_social
&utm_campaign=summer_webinar_2026
&utm_content=video_ad_a
&utm_id=sw2026_q3
| Component | Value | Why this value |
| Base URL | https://onlinetoolpot.com/tool/campaign-url-builder | The destination. Everything after ? is appended to it. |
| ? | — | Begins the query string. Exactly one, before the first parameter. |
| utm_source | The named platform. Not social, which would erase which platform delivered the visit. | |
| utm_medium | paid_social | Distinguishes this from an organic LinkedIn post and classifies correctly as paid traffic. |
| utm_campaign | summer_webinar_2026 | The initiative. The email and paid search links for this webinar carry the identical value, so the campaign can be compared across channels. |
| utm_content | video_ad_a | Two creative variants run in this campaign. This identifies which one earned the click. |
| utm_id | sw2026_q3 | A stable key that survives a campaign rename and ties to the record in the ad platform. |
| & | — | Separates each parameter. Never used before the first one. |
Note that utm_term is absent. There are no keywords being tracked in a paid social placement, so including it would add a field with nothing meaningful to store.
Once you understand the anatomy, you shouldn't be assembling these by hand a single typo in a & or a stray capital letter costs you the data. Use the Campaign URL Builder to generate the link and encode the values correctly.
For a broader walkthrough of how campaign URLs fit into the wider tracking workflow, start with our complete campaign URL guide.
Common UTM Tagging Mistakes
The failures below account for most of the campaign data that arrives unusable.
1. Inconsistent capitalisation
Facebook and facebook are two different values. Your traffic splits across two rows and every total is wrong.
Fix: lowercase everything, without exception.
2. Mixing up source and medium
utm_source=paid_social&utm_medium=linkedin is inverted. The reports still populate they're just describing the opposite of reality, which is worse than empty.
Fix: source is the platform's name; medium is the traffic type.
3. Spaces and inconsistent separators
A space becomes %20. Meanwhile summer_webinar, summer-webinar, and summer webinar are three campaigns.
Fix: choose one separator and apply it everywhere.
4.Partial tagging
Covered in detail above, and worth restating: once one UTM is present, Analytics derives the cross-channel traffic-source values from UTMs alone, so the missing ones can land as (not set).
Fix: always set source, medium, and campaign together.
5. Personal or sensitive data in the URL
Email addresses, names, customer IDs, and internal identifiers do not belong in query parameters. URLs are logged, shared, screenshotted, and cached.
Fix: never place personal data in a UTM value.
6. Tagging internal links
Attribution is set when a session starts, so a tagged internal link clicked mid-visit doesn't replace the session's original source. The problem is slower and harder to spot: tagged internal URLs get bookmarked, shared and re-opened, and each of those visits records one of your own pages as an acquisition source.
Fix: UTMs are for inbound links only.
7. Ad-hoc campaign names
Different values for the same initiative across channels make cross-channel comparison impossible.
Fix: decide the campaign value once, before launch, and apply it to every link in the campaign.
Build Your Tracking URL
You now know which parameters to use and which values belong in them. The next step is generating the link without introducing the typos that cause most of the problems above.
Use the free Campaign URL Builder → enter your destination URL and parameter values, and get a correctly encoded tracking link.
Where to go from here:
- Unsure which value belongs in source versus medium? → UTM source vs medium vs campaign
- Need your team to tag consistently? → UTM naming conventions
- Want ready-made examples by channel? → UTM examples library
- Tagged your links but can't find the data? → How to track UTM campaigns in GA4




