"We got 12,000 visitors this month" leads to no decision. "4,000 came from an Instagram story, 3,000 from the newsletter, 5,000 from Google Ads" does. UTM parameters are the standard way to draw that distinction.
What UTM means
UTM (Urchin Tracking Module) tags are appended to an address to tell your analytics tool where the traffic came from. They do not affect how the page works; they are pure carrier information.
https://example.com/campaign?utm_source=instagram&utm_medium=story&utm_campaign=spring-2026
The five parameters
| Parameter | What it answers | Example |
|---|---|---|
utm_source | Which platform did the traffic come from? | instagram, newsletter, google |
utm_medium | What kind of channel? | social, email, cpc, sms |
utm_campaign | Which campaign? | spring-2026, black-friday |
utm_content | Which variant within the campaign? | image-a, image-b |
utm_term | Which search keyword (paid search)? | dentist-appointment |
The first three are effectively mandatory. utm_content matters if you run A/B tests; utm_term only if you buy search ads.
Agree on a naming convention
Inconsistency is what kills UTM data. Instagram, instagram and IG show up as three separate rows in your report, splitting the same traffic into thirds.
A handful of rules is enough:
- Lowercase everything.
- Hyphens instead of spaces:
black-friday, neverblack_fridayorblack%20friday. - ASCII only — no accented characters.
- Keep a closed list for
utm_medium:email,social,cpc,sms,qr,affiliate. Adding a value to that list should be a decision, not an impulse. - Put a period into campaign names:
spring-2026. A year from now, "spring" on its own means nothing.
Write the rules into a shared document. Five minutes of work decides whether next year's report is readable.
UTM plus short links
Tagged addresses get long fast. The example above is 95 characters and will not fit into a text message or an Instagram bio. The fix is to shorten the tagged address:
Destination : https://example.com/campaign?utm_source=instagram&utm_medium=story&utm_campaign=spring-2026
Short link : https://lnkz.tr/SPRING26
The visitor clicks the short link, lands on the tagged address, and your analytics tool labels the campaign correctly. The sharing stays short; the measurement stays complete.
Why both?
They answer different questions:
- Short link stats measure the click: how many people pressed the link?
- UTM measures what happened afterwards: did they fill in the form, did they buy?
The gap between the two numbers is itself informative. A large discrepancy usually means the landing page is slow or the redirect is being broken somewhere.
Common mistakes
Tagging internal links
Adding UTM parameters to a link between two pages of your own site restarts the visitor's session and erases the original traffic source. A visitor who genuinely came from Google now shows up as "my own site". Use UTM only on inbound links.
Reusing one link everywhere
Put the same short link in the newsletter, on Instagram and in an SMS and you will never separate them again. Create one link per channel — with API automation the marginal cost is negligible.
Carrying personal data
UTM parameters land in server logs and analytics tools in plain text. Do not put email addresses, phone numbers or customer identifiers there. If you need to identify the visitor, use an opaque token.
Losing parameters in a redirect
If your destination performs another redirect of its own (http to https, or adding a language prefix), make sure the query string survives. Some server configurations drop it, and your measurement silently disappears.
Checklist
- Write down the naming convention and share it.
- Build a separate tagged address per channel.
- Shorten it and share the short link.
- Click the link once before launch and confirm it lands correctly with parameters intact.
- After the campaign, compare short link stats against your analytics numbers.