Measurement classIntermediate/7 min read

UTM tracking for social media: five parameters, one naming convention, honest limits

The five UTM parameters explained, a lowercase naming convention, a worked example across five platforms, where results land in GA4, and the honest limits.

Kavish Shah

Founder of Cadencz. Writes the Academy from the work of building it.

Published

Class notes

What you will be able to do

  • Always set utm_source, utm_medium, and utm_campaign; Google's documentation names these three as the baseline.
  • Freeze the vocabulary on day one: lowercase values, hyphens, and one fixed source name per platform, forever.
  • Start campaign names with year and month so GA4 reports sort chronologically.
  • Read results in GA4 under Reports, Acquisition, Traffic acquisition, with session campaign as a secondary dimension.
  • Treat UTM data as a floor, not the truth: dark social and deliberately linkless posts create value it cannot see.

A UTM parameter is a tag appended to a link so your analytics tool can report where a visit came from. Without tags, most social traffic collapses into direct or a bare referral, and you cannot tell which post, platform, or campaign sent anyone. Google's documentation is plain about the baseline: when you add parameters to a URL, always use utm_source, utm_medium, and utm_campaign.

The mechanics take five minutes to learn. The discipline that makes the data usable is deciding your values once, writing them down, and never improvising in the compose box again. This guide gives you the vocabulary, a worked campaign across five platforms, where the results appear in GA4, and the limits nobody selling attribution software will volunteer.

The five parameters in plain terms

Google also documents utm_id and recommends setting it alongside source, medium, and campaign to avoid unassigned values in some GA4 reports. For a founder tagging organic social by hand, the three baseline parameters plus utm_content cover the questions you will actually ask.

  • utm_source: where the click was born. Use one fixed name per platform: linkedin, x, threads, bluesky, reddit.
  • utm_medium: the kind of traffic. Use social for organic posts and paid-social for anything you paid to place.
  • utm_campaign: which push this link belongs to, for example 2026-09-onboarding-launch.
  • utm_content: which specific post or variant carried the link, for example launch-post-1 or thread-reply.
  • utm_term: the paid search keyword. Leave it off organic social entirely.

A naming convention that survives

Analytics tools store values literally, so linkedin, LinkedIn, and Linked-In become three different sources, and once the data is split it cannot be merged. Every rule below exists to prevent a future report from lying to you.

  • Lowercase everything, always. Decide this once and the case-splitting problem never exists.
  • Separate words with hyphens, never spaces (they become %20) and never a mix of hyphens and underscores.
  • One source name per platform, forever. Decide x versus twitter on day one and never use the other.
  • Start campaign names with year and month, then a short theme: 2026-09-onboarding-launch. Reports sort chronologically for free.
  • Name content by slot, not by copy: launch-post-1, demo-clip, community-walkthrough. The same slot name across platforms lets you compare them.
  • Keep the convention in a shared doc next to your content calendar, and build links with Google's Campaign URL Builder instead of typing parameters by hand.

The template, filled in

https://example.com/blog/onboarding-lessons?utm_source=linkedin&utm_medium=social&utm_campaign=2026-09-onboarding-launch&utm_content=launch-post-1

The improvised version that splits your data

https://example.com/blog/onboarding-lessons?utm_source=LinkedIn&utm_medium=Social%20Post&utm_campaign=launch

One campaign across five platforms

Two of the rows carry judgment, not just syntax. On X, the tagged link sits in the first reply rather than the post itself, so the content value says so. On Reddit, the link belongs only in a community whose rules allow it, inside a walkthrough that stands on its own; the same tagged URL dropped as a bare link post is how accounts get removed from communities.

The September onboarding launch, tagged for five channels. Medium stays social; only source and content vary.
Platformutm_sourceutm_mediumutm_campaignutm_content
LinkedInlinkedinsocial2026-09-onboarding-launchlaunch-post-1
Xxsocial2026-09-onboarding-launchthread-reply
Threadsthreadssocial2026-09-onboarding-launchlaunch-post-1
Blueskyblueskysocial2026-09-onboarding-launchlaunch-post-1
Redditredditsocial2026-09-onboarding-launchcommunity-walkthrough

Where the results show up in GA4

Open Reports, then Acquisition, then the Traffic acquisition report. Your tagged visits appear under session source / medium as values like linkedin / social. Add Session campaign as a secondary dimension to separate campaigns, and use an exploration when you want to break a campaign down by content value to compare individual posts.

Verify the plumbing before trusting a month of data: click one of your own tagged links and watch it register in the Realtime report. A typo in a parameter name fails silently, and the traffic quietly lands somewhere you will not look.

The honest limits

UTM tracking measures one event: a click on a link you tagged. Everything else is inference, and two gaps deserve naming.

The first is dark social. People share your page by DM, group chat, and screenshot, and those visits arrive untagged, reported as direct. A post can start a hundred private shares and a dozen customer conversations while its UTM click count reads eleven. The click number is a floor, never the total.

The second gap is that on some conversational feeds, a post built around an external link does its real job worse than a native post. Sometimes the right move is to skip the link entirely: let the post carry the idea and let your profile carry the URL. The reader who searches your product name two days later is invisible to UTM attribution and is still the best outcome a post can produce. Replies, saves, and brand recall never touch GA4; UTM answers which posts move people to the site, not which posts work.

Wire it into the weekly loop

Tag links at scheduling time, not at review time; a convention only holds if the tagged URL is part of the draft that gets approved. Then read Traffic acquisition once a month next to your per-post reply log, and let the two numbers argue: the posts that send clicks and the posts that start conversations are rarely the same posts, and you need both lists before deciding what to write more of.

Sources used

Sources and freshness

Sources were reviewed on . Product features, prices, and platform rules change; follow the source links before relying on a volatile detail.

  1. 01[GA4] Collect campaign data with custom URLsGoogle Analytics Help
  2. 02Campaign URL BuilderGoogle Analytics Demos & Tools

Keep learning

01Social media metrics for founders: what to measure before product-market fitBuild a weekly scorecard from the four signals that matter before product-market fit.
02The 60-minute social media audit: a checklist for foundersScore every channel in five passes and leave with one clear decision per channel.
03Platform-native writing: adapt one idea for LinkedIn, X, Threads, Reddit, and BlueskyRewrite one source idea five ways without losing its truth.