What each parameter is for
- utm_source — where the traffic came from as a named property: google, facebook, newsletter, partner site.
- utm_medium — the type of traffic: cpc, paid_social, email, referral, organic_social.
- utm_campaign — the specific initiative: spring_roof_2026, storm_response_march.
- utm_content — which creative or placement inside the campaign, used to compare two versions of the same ad.
- utm_term — the keyword, mainly relevant to search campaigns.
A convention that survives a year
Conventions fail through drift, not through disagreement. 'Facebook', 'facebook' and 'FaceBook' become three rows in a report that should have one. Decide once: everything lowercase, underscores between words, no spaces, no punctuation, and a date component only where a campaign genuinely repeats seasonally.
Write the rules on one page, generate links from a single builder rather than by hand, and audit the report monthly for near-duplicate values. Ten minutes of cleanup a month prevents a year of unusable history.
Click identifiers do a different job
UTMs are text anybody can type, including a competitor copying your link. Click identifiers — the tokens appended by the ad platforms themselves — are issued at click time and tie back to a specific auction inside the platform. They are far stronger evidence that a visit was actually paid for.
The practical rule is to capture both and prefer the click identifier when they disagree. UTMs describe intent; a click identifier records an event.
Where the parameters have to end up
A parameter that only exists in the address bar is worthless. It has to be read on landing, held while the visitor browses, and attached to whatever record is created when they finally act — a form, a bot conversation, a callback request.
The failure mode is subtle: the visitor lands on a campaign URL, reads three pages, then submits from a clean URL. If the parameters were not held onto, the submission looks like direct traffic and the campaign gets no credit for the lead it paid for.
Common mistakes
- Tagging internal navigation links, which overwrites the original entry context with your own site.
- Encoding personal data in utm_content, which puts identifiers in server logs and analytics forever.
- Changing a campaign's UTM mid-flight, which splits one campaign into two disconnected histories.
- Relying on the referrer instead of parameters — referrers are stripped, spoofed and inconsistent.