What are UTM parameters?

The five UTM parameters, what each is for, which are required, a naming convention that survives a marketing team, and the mistakes that ruin reports.

What are UTM parameters?

UTM parameters are the five named query-string values that describe a campaign link: utm_source, utm_medium, utm_campaign, utm_term and utm_content. Source, medium and campaign are the ones every report groups by. Term and content are optional detail for paid keywords and creative variants.

A worked example.

One paid social campaign with two creatives, tagged consistently.

utm_sourcelinkedin
utm_mediumpaid-social
utm_campaign2026-q3-cookieless
utm_contentvideo-a
Second creative differs only inutm_content=static-b

Both creatives roll up into one campaign, and can still be compared against each other

utm_content is what lets you A/B test creative without fragmenting the campaign into two unrelated rows. Changing utm_campaign per creative is the mistake that makes the comparison impossible.

The five parameters

Source, medium and campaign are the working set. If you only ever fill in three, fill in these three, in this order of importance.

ParameterAnswersRequiredExample values
utm_sourceWhich specific site or property sent the clickYesnewsletter, linkedin, partner-blog
utm_mediumWhat kind of channel it wasYesemail, cpc, paid-social, referral
utm_campaignWhich initiative it belongs toYes2026-q3-cookieless, black-friday
utm_termThe paid keyword that triggered the adNocookieless analytics
utm_contentWhich creative, placement or link within the pageNovideo-a, footer-cta, header-link

Google Ads also uses gclid and Microsoft uses msclkid, which are click identifiers rather than descriptive tags. They work in their own platforms and are not a substitute for UTMs in your analytics.

Source versus medium, the distinction people get wrong

Medium is the category. Source is the specific property inside that category. Get this backwards and every channel report becomes unreadable.

  • Correct: utm_source=linkedin, utm_medium=paid-social. The medium groups all paid social together; the source separates LinkedIn from the rest.
  • Wrong: utm_source=paid, utm_medium=linkedin. Now there is a medium called linkedin sitting next to a medium called email, and no way to total paid spend.

A quick test: could two different sources share this medium? Newsletter and partner-newsletter can both be email. Nothing else can be linkedin. That tells you which slot each value belongs in.

Keep the medium vocabulary short and closed. Six to ten values, written down, applied by everyone. The moment mediums are invented ad hoc, channel reporting stops totalling correctly and no amount of cleanup fixes the historical rows.

The free UTM builder enforces the mechanical half of this for you: it lowercases values, hyphenates them, and hands back a finished link, so the only thing left to get right is which value goes in which slot.

A naming convention that survives a marketing team

  1. 01

    Lowercase, always

    Every parameter value is case sensitive in every analytics tool. Email and email are two rows. Lowercase everything at the point the link is created, not afterwards.

  2. 02

    Hyphens between words

    Spaces become %20 and underscores read badly in reports. Pick hyphens and never mix. black-friday, not black_friday or Black Friday.

  3. 03

    Date the campaign

    Prefix with the period: 2026-q3-cookieless. A year later you will have three campaigns called launch, and no way to tell them apart.

  4. 04

    Keep one shared list

    A single sheet with the allowed source and medium values, plus the campaign register. Attribution quality is an operations problem, not a technical one.

See it on real data

The live demo is a fully populated dashboard with real demo traffic. No signup and no card required.

Open the live demo
Mrkr traffic sources showing referrers, campaigns, and direct traffic.

Mistakes that ruin the data

Tagging internal links

A UTM on a link between your own pages restarts campaign attribution mid-visit and overwrites the real source with your own. Nothing recovers that data afterwards.

Personal data in utm_content

Email addresses and customer ids inside UTMs leak into browser history, shared links, referrer headers and server logs. Use an opaque code if you need per-recipient detail.

A new campaign name per creative

That is what utm_content is for. Splitting utm_campaign per asset makes the campaign total impossible to reconstruct.

Trusting the values

Anyone can edit a UTM in the address bar, so they arrive as untrusted input. Treat them as text to be escaped, never as a fact about where the visitor came from.

How Mrkr handles them

Mrkr reads all five parameters at ingest, normalises them, and keeps source, medium and campaign on the session so that any goal or purchase later in the visit carries the campaign that produced it.

Values are stored as text and escaped on render, because they are attacker-controlled by construction. Campaign reporting works in the default cookieless mode, since reading a query string stores nothing on the visitor's device.

What cookieless mode cannot do is connect a campaign click today to a purchase next week. That needs identity across sessions, which is what the optional per-site cookie mode provides, with the consent requirement that comes with it.

Questions, answered.

Related terms.

  • What is utm?

    A UTM is a set of query parameters added to the end of a link so that analytics can tell where a click came from.

  • What is attribution model?

    An attribution model is the rule that decides which marketing touchpoints get credit for a conversion when a customer interacted with several before buying.

  • What is direct traffic?

    Direct traffic is every visit that arrives with no referrer and no campaign parameters, so analytics has nothing to attribute it to.

  • What is conversion rate?

    Conversion rate is the share of visits or visitors that completed a defined goal, such as a signup, a purchase or a demo request.

  • What is landing page?

    In analytics, a landing page is the first page a visitor sees in a session, whatever page that happens to be.

Where this shows up in Mrkr

Your first visitor is already here.

Drop in the script and watch them land. It takes about a minute.