utm_source
The platform the click came from: meta, google, tiktok. Pick one spelling per platform and never vary it. GA4 treats Meta and meta as two different sources.
Your first client is free. Set up your naming system in two minutes.
Build properly encoded tracking URLs in seconds. No signup, no limit, and the parameters already on your destination URL survive.
Query parameters already on this URL are kept.
Where the click came from.
How it was paid for or delivered.
The campaign this click belongs to.
Optional
Which creative or link, for split tests.
Paid keyword, or audience on social.
https://example.com/product?utm_source=meta&utm_medium=paid_social&utm_campaign=nike_meta_pur_nl_brd
The platform the click came from: meta, google, tiktok. Pick one spelling per platform and never vary it. GA4 treats Meta and meta as two different sources.
How the traffic was bought or delivered: paid_social, cpc, email. This is what groups channels together, so it matters more than it looks.
The campaign this click belongs to. Make it match the campaign name in the ad account exactly, or reconciling spend against sessions becomes manual work every month.
Which creative or which link. On paid social this is the ad, and it is the column that eventually tells you which hook worked. On email it separates the header link from the footer one.
The paid keyword on search. On social there is no keyword, so most buyers use it for the audience instead. Either is fine as long as the whole account agrees.
utm_source=meta
utm_medium=paid_social
utm_campaign=nike_meta_pur_nl_brd
utm_content=ugc_painpoint_hook03_sarah_v2
Facebook, facebook and FaceBook are three rows in your report and one channel in reality. Lowercase everything and the problem disappears.
A space becomes %20 or + depending on who encodes it, and now you have two campaigns again. Use underscores or hyphens, and pick one.
A UTM on a link between two pages of your own site starts a new session and credits the conversion to that link rather than to whatever paid for the visit. Only tag inbound traffic.
If your destination already carries something like ?variant=black, appending tracking by hand usually breaks it. This builder keeps it, because it parses the URL rather than concatenating strings.
Managing UTMs across multiple clients?
Save your naming conventions, abbreviations and tracking rules so every buyer on the account tags the same way.