Paid media

Build clean, consistent UTM links and catch the errors that break analytics.

Category
Paid media
Signup
None
Your data
Stays in your browser

What are UTM parameters and how do you build a UTM link?

UTM parameters are tags added to a URL's query string so analytics tools can record where a visit came from. Add utm_source (the site or platform), utm_medium (the channel type) and utm_campaign (the campaign name) after a "?" on the landing page URL, joined with "&". utm_term and utm_content are optional. Use lowercase values from a fixed list.

Required, e.g. google, linkedin
Required, e.g. cpc, paid-social
Required
Paid keyword
Creative / A-B variant
Tagged URL
✓ Ready
Cleaned & encoded
Validation
1 to review
Common UTM errors

utm_campaign was normalised (casing/spaces cleaned). Consistent, lowercase, hyphenated tags keep your analytics from splitting one campaign into five.

Standardise a taxonomy once, source/medium/campaign conventions, and every report stays clean across channels.

About this calculator

A single campaign that ends up split five ways in your analytics, "linkedin," "LinkedIn," "Linkedin," "linked-in", isn't a tracking bug, it's inconsistent UTM tagging, and it's almost always a manual-entry problem. This tool builds a properly encoded, tagged URL from your source, medium and campaign values and validates it in real time, catching the casing and spacing errors that quietly fragment your reporting.

How to use it

  1. Enter your base URL, the landing page destination for the link.
  2. Enter campaign source, medium, and campaign name, the three parameters every UTM link needs.
  3. Optionally add term (paid keyword) and content (creative or A/B variant identifier) for more granular tracking.
  4. Review the validation messages and copy the generated, cleaned URL once it shows all clear.

Methodology

Every value is normalized through the same cleaning function: trimmed of whitespace, lowercased, spaces converted to hyphens, and any character outside letters, numbers, periods, underscores and hyphens stripped out, so "Q3 Demo Push" becomes "q3-demo-push" automatically.

Validation checks for a properly formed base URL (must start with http:// or https://), and flags missing values for the three required parameters, source, medium and campaign, since a UTM link without these three is not usable in most analytics platforms.

It also flags when a value you typed differs from its cleaned version, so you know the tool normalized casing or spacing on your behalf rather than silently using something different from what you typed.

The final URL is assembled by appending the non-empty parameters as a query string, using a "?" or "&" depending on whether the base URL already contains query parameters, and each value is URL-encoded before being inserted.

How a UTM-tagged URL is assembled

Tagged URL = Base URL + ("?" or "&") + utm_source=… & utm_medium=… & utm_campaign=… [& utm_term=…] [& utm_content=…]
Clean value = lowercase(trim(value)), spaces → "-", then remove anything except a–z, 0–9, ".", "_" and "-"
Base URL
The landing page, starting with http:// or https://. If it already has a query string, the tool joins with "&" instead of "?".
utm_source
Where the click came from: google, linkedin, newsletter, partner-name.
utm_medium
The type of channel: cpc, paid-social, email, referral. Drives channel grouping in GA4.
utm_campaign
The campaign or initiative, ideally with a date or quarter: q4-cfo-webinar.
utm_term, utm_content
Optional. Keyword for paid search, and creative, placement or variant for telling ads apart.

Each cleaned value is passed through URL encoding before insertion. Because cleaning already strips everything except letters, digits, dots, underscores and hyphens, and encodeURIComponent leaves those characters unescaped, the final values appear exactly as cleaned. Note that cleaning also drops characters such as "&", "+", "/" and accented letters, so "Q&A Series" becomes "qa-series". The tool flags normalisation for source, medium and campaign; it cleans term and content silently.

Worked example: tagging a LinkedIn webinar ad

A B2B SaaS team promotes a CFO webinar on LinkedIn. A marketer types source LinkedIn, medium Paid Social, campaign Q4 CFO Webinar and content carousel_v2, with the base URL https://example.in/webinar.

  1. utm_source: "LinkedIn" → lowercase → linkedin
  2. utm_medium: "Paid Social" → lowercase, space to hyphen → paid-social
  3. utm_campaign: "Q4 CFO Webinar" → q4-cfo-webinar
  4. utm_content: "carousel_v2" → unchanged
  5. Base URL has no "?" so the query starts with "?"
  6. Result: https://example.in/webinar?utm_source=linkedin&utm_medium=paid-social&utm_campaign=q4-cfo-webinar&utm_content=carousel_v2

The validator shows three notices, one each for source, medium and campaign being normalised, and no errors. Every later link for this campaign should reuse exactly linkedin / paid-social / q4-cfo-webinar, changing only utm_content for each creative. If another teammate tags the same campaign "LinkedIn / Paid_Social", GA4 reports it as a separate row, which is the fragmentation this tool prevents. For the reporting side, see UTM discipline and campaign naming.

What does a good UTM convention look like?

A good convention is short, written down, and enforced by a tool rather than memory:

  • utm_source names the platform or sender, lowercase, one word where possible (google, meta, linkedin, newsletter).
  • utm_medium comes from a fixed list of 6 to 10 values that match how GA4 groups channels. GA4 assigns traffic to default channels using source and medium rules; for example, its Email channel matches a source or medium of "email", "e-mail", "e_mail" or "e mail", and anything that matches no rule lands in Unassigned (MeasureSchool summary of GA4 rules). Check your values against Google's current default channel group table before standardising.
  • utm_campaign follows a pattern such as quarter or date, objective and offer (2026-q4-demo-cfo-webinar), so campaigns sort and filter cleanly.
  • utm_content identifies the creative or placement and is the only field that changes often.

Keep the list in a shared sheet next to your CRM data dictionary, and audit monthly for new or misspelled values. A GA4 audit usually starts with exactly this check.

UTM tagging in India vs the US

India

Indian campaigns lean heavily on WhatsApp broadcasts, Instagram bio links, influencer posts and marketplace listings, all of which arrive without a referrer or with an in-app browser that hides it. Without UTMs, that traffic shows up as direct or unassigned. Tag every link shared on WhatsApp and with influencers, give each creator a distinct utm_content, and keep links short with a shortener that preserves the query string. For leads that start on WhatsApp and close offline, pair UTMs with WhatsApp lead tracking into Google Ads.

United States

US B2B teams typically run paid search, LinkedIn, review sites, partner newsletters and events at once, so the medium list has to separate paid social from organic social and sponsored email from owned email. Store the first-touch UTM values on the contact record in HubSpot or Salesforce so pipeline reports can use them months later. Google Ads auto-tagging covers Google clicks, but UTMs remain necessary for every other platform and for tools that do not read Google's click identifier.

Common UTM mistakes

  • Adding UTMs to internal links on your own site. A click from your homepage to the pricing page then starts a new attributed session and overwrites the real source.
  • Placing UTMs after a "#" fragment. In URL syntax the query comes before the fragment (RFC 3986), so put the anchor at the end or leave it out. This tool appends to whatever base URL you paste, so remove any "#section" first.
  • Inventing a new utm_medium per campaign ("linkedin-ads", "li-paid", "social-paid"), which breaks channel roll-ups and pushes traffic into Unassigned.
  • Using spaces, capitals or special characters, which create duplicate rows and messy encoded values such as %20.
  • Putting personal data such as an email address or phone number in a UTM value. It ends up in analytics, ad platforms and server logs.
  • Tagging links on Google Ads by hand while auto-tagging is on, without checking that manual tags and auto-tagging are configured to work together.

Sources

  1. How to Use GA4 Default Channel Grouping, MeasureSchool. Accessed 2026-10-17.
  2. encodeURIComponent(), MDN Web Docs. Accessed 2026-10-17.
  3. RFC 3986: Uniform Resource Identifier (URI): Generic Syntax, RFC Editor (IETF). Accessed 2026-10-17.

FAQ

Why does inconsistent casing actually break analytics?

Most analytics platforms, including Google Analytics, treat UTM parameter values as case-sensitive strings by default. "LinkedIn" and "linkedin" are recorded as two separate sources, splitting what should be one campaign's traffic and conversion data across multiple rows.

What is a good naming convention for utm_medium?

Keep a short, fixed vocabulary you reuse everywhere, cpc, paid-social, email, referral, rather than inventing a new value per campaign. Consistency in utm_medium is what lets you roll up performance by channel type across every campaign you ever run.

Do I need utm_term and utm_content for every link?

No, they're optional and most useful when you're running multiple creative variants or paid keywords under the same source/medium/campaign and need to tell them apart in reporting. Skip them for simple, single-variant links.

Should I build a shared taxonomy doc for my team?

Yes, once more than one person is tagging links. A short reference sheet of accepted source, medium and campaign-naming values prevents the exact fragmentation this tool catches, and keeps everyone's tagging consistent without relying on each person remembering the convention.

Do UTM links work on WhatsApp and Instagram?

Yes. The parameters travel with the link, so a tagged URL shared on WhatsApp or placed in an Instagram bio is recorded when the visitor lands. The common failure is a link shortener or redirect that drops the query string, so click your own short link once and confirm the UTMs reach the landing page.

Do UTM parameters affect SEO?

They should not be used on internal links or in canonical URLs. Search engines may crawl tagged URLs found elsewhere, so set a canonical tag on landing pages pointing to the clean URL. For ads, emails and social posts, UTMs have no meaningful effect on rankings.

What is the difference between utm_source and utm_medium?

Source is the specific sender or site, such as linkedin or a newsletter name. Medium is the category of channel, such as paid-social or email. Many sources share one medium, and GA4 uses the pair to assign traffic to a default channel.

Why does my tagged traffic show as Unassigned in GA4?

Usually because the utm_medium (or source and medium together) does not match any default channel rule. Change new links to recognised medium values, or build a custom channel group for your own values. Unassigned can also come from tracking problems, which a [Google Tag Manager audit](/google-tag-manager-audit) will catch.

Numbers looking off?

If the model says one thing and the pipeline says another, that gap is usually where the revenue is. A 30-minute call finds it.

It starts with a 30-minute call. Pick a time below.

Prefer email?