Free UTM builder

Add utm_source, utm_medium, utm_campaign and the other campaign parameters to any link and see which GA4 channel the visits will most likely land in. Existing query parameters and #fragments are kept, and values can be lowercased and de-spaced automatically. Switch to Explain a URL to decode a tagged link someone sent you.

What do you want to do?

Campaign URL ready. Likely GA4 channel: Email.

Campaign URL · likely GA4 channel: Email
https://example.com/menu/?location=portland&utm_source=newsletter&utm_medium=email&utm_campaign=holiday_menu_2026&utm_content=hero_button#holiday
  • Looks consistent. Use this link only on other sites, emails and ads, never on links within your own site.

The six parameters

ParameterWhat to put in itExample
utm_sourceWhere the click came fromnewsletter, google, linkedin
utm_mediumThe kind of traffic. GA4 uses it to pick the channelemail, cpc, social, referral
utm_campaignThe promotion or initiativespring_sale_2026
utm_termA paid keyword or audiencesourdough_classes
utm_contentWhich link or creative was clickedheader_button
utm_idA campaign ID, used to join imported cost datasp26_0412

GA4 also reads utm_source_platform, utm_creative_format and utm_marketing_tactic. The explainer recognises them, but most sites never need them.

Naming conventions that keep GA4 reports clean

  • Lowercase everything. GA4 stores values exactly as written, so Email and email become two rows in every report.
  • Use mediums GA4's default channel group recognises: email, cpc (or ppc, or anything starting with paid) for paid traffic, social for unpaid social posts, referral, affiliate, display, sms and audio. A made-up medium such as newsletter-blast sends visits to Unassigned unless the source is a site GA4 already knows.
  • Pick one separator, underscore or hyphen, and use it everywhere.
  • Keep a shared list of approved sources, mediums and campaign names, so two colleagues do not tag the same newsletter differently.
  • Never tag links within your own site. A UTM on an internal banner overwrites the campaign GA4 credits for what the visitor does next, so conversions get attributed to your banner instead of the ad or email that brought them.

Every tagged link is technically a separate URL. If one gets shared publicly, search engines may crawl it, and without a canonical tag it can show up as a duplicate of the clean page. A self-referencing canonical URL on every page solves this, because each tagged variant then points back to the original. The free Hydrogen SEO plugin prints one on every post and page by default. Keep UTMs out of internal links, sitemaps and canonical tags themselves.

Common questions

Are UTM parameters case-sensitive?

The values are, in practice: GA4 reports show them exactly as written, so mixed case splits your data. Write the keys in lowercase too, as utm_source rather than UTM_Source.

Do UTM parameters hurt SEO?

Not when your pages have self-referencing canonical tags, which point every tagged variant back to the clean URL. Problems start only when tagged URLs appear in internal links or sitemaps.

Should I add UTMs to Google Ads links?

Use Google Ads auto-tagging instead. It passes far more detail through the gclid parameter, and GA4 uses it in preference to manual tags by default.

Why does my campaign show as Unassigned in GA4?

Usually because utm_medium is missing or is a value the default channel group does not recognise. Switch to a standard medium such as email, cpc, social or referral, or create a custom channel group that matches your own values.