What each parameter is for
utm_source identifies the referrer: twitter, newsletter, partner-blog. utm_medium is the channel *type*: social, email, cpc. utm_campaign names the specific initiative: launch-2026, black-friday.
The other three are optional. utm_term was designed for paid keywords, utm_content distinguishes two links in the same message — the header button versus the footer link — and utm_id ties the visit to a campaign ID for cost import.
Source, medium and campaign are the set worth being strict about. The other three are useful only if you have a plan for reading them.
Case sensitivity is the bug that ruins reports
UTM values are case-sensitive. Newsletter, newsletter and NEWSLETTER are three separate rows in your reports, splitting one campaign into three and making every comparison wrong.
This is easy to cause and tedious to fix, because you cannot retroactively merge the rows without data manipulation. The defence is a convention — lowercase and hyphens, always — applied by everyone who builds links. The lowercase toggle here enforces it for you.
Why GA4 puts your traffic in "Unassigned"
GA4 maps traffic into default channel groups using rules that inspect utm_medium against a fixed list: organic, cpc, email, social, affiliate, referral, display and a handful more. A medium outside that list, like newsletter or linkedin-post, does not match any rule.
The result is a channel group of Unassigned, and traffic that is invisible in the report everyone actually looks at. Use email as the medium and newsletter as the source — that is what the fields are for.
Where not to put UTM parameters
Never on internal links. Clicking a UTM-tagged link inside your own site starts a *new* session in GA4 and reattributes it, so a visitor who arrived from search and clicked your tagged banner gets recorded as banner traffic. The original acquisition source is destroyed.
Not on links you want indexed. Tagged URLs are crawlable and can be indexed as duplicates of the clean page. If tagged URLs are getting indexed, a canonical tag pointing at the clean version is the fix.
And remember UTM parameters are public. Anyone can read them in the address bar, so never encode anything about the recipient — an email address or user ID in utm_content is a data leak.