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.
Campaign URL ready. 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
| Parameter | What to put in it | Example |
|---|---|---|
utm_source | Where the click came from | newsletter, google, linkedin |
utm_medium | The kind of traffic. GA4 uses it to pick the channel | email, cpc, social, referral |
utm_campaign | The promotion or initiative | spring_sale_2026 |
utm_term | A paid keyword or audience | sourdough_classes |
utm_content | Which link or creative was clicked | header_button |
utm_id | A campaign ID, used to join imported cost data | sp26_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
Emailandemailbecome two rows in every report. - Use mediums GA4's default channel group recognises:
email,cpc(orppc, or anything starting withpaid) for paid traffic,socialfor unpaid social posts,referral,affiliate,display,smsandaudio. A made-up medium such asnewsletter-blastsends 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.
UTM links and SEO
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.