Measurement
UTM tracking for social media agencies: a naming scheme that survives contact with reality
If you cannot say which post drove the traffic, you cannot prove the retainer worked. A simple, consistent link tagging scheme fixes that in an afternoon.

On this page
The most uncomfortable moment in a client meeting is when someone asks which posts actually sent people to the site, and the honest answer is that you do not know.
It is an avoidable moment. The fix is not clever analytics; it is tagging links consistently before you publish, every time, with a scheme you can still read in six months.
What goes wrong without a convention
Three failures account for almost all unattributable social traffic:
Untagged links. The click lands in Google Analytics as
instagram.com / referralat best, anddirectat worst once it has been through an in-app browser. You can see that social sent traffic. You cannot see which post.Inconsistent tagging.
source=ig,source=instagram,source=Instagramandsource=instaare four different sources in every report you will ever run. By the time you notice, the data is already split.Tagging the campaign but not the post. Knowing a campaign drove 400 clicks is better than nothing, but it does not tell you which of the eleven posts in it did the work, which is the only part that changes what you do next.
A scheme that works across clients
Keep the five parameters doing exactly one job each. Lowercase everything, use hyphens, never spaces.
source: the platform, always spelled the same way
instagram, facebook, linkedin, x, tiktok, youtube, pinterest, threads, bluesky, telegram.
Pick the full name over the abbreviation and write it down somewhere the whole team can see. The specific choice matters far less than everyone making the same one.
medium: how it was published
social-organic, social-paid, bio-link, story, dm.
Resist the urge to get clever here. You will want to compare organic and paid eventually, and a medium that mixes them makes that impossible.
campaign: the thing you are running
spring-menu-launch, black-friday-2026, always-on.
Give everything a campaign, including routine posting. always-on is a perfectly good answer and it stops a third of your traffic appearing as uncategorised.
content: the individual post
This is the one most agencies skip and the one that makes reporting useful. Use something that identifies the specific post: a date and a short slug, like 2026-09-14-pasta-reel.
Without this, you cannot answer the only question the client really has.
term: leave it alone
Reserve it for paid search keywords. Using it for anything else will confuse whoever inherits the account.
The rules that keep it clean
Lowercase, always. UTM values are case-sensitive.
Instagramandinstagramwill be two rows forever.Hyphens, not underscores or spaces. Spaces get encoded and become unreadable.
Never tag internal links. Putting UTMs on a link from one page of the client's site to another restarts the session and destroys the attribution you were trying to measure.
Tag the link once, at publish time. Tagging later, by hand, in a spreadsheet, is how inconsistency enters.
Shorten after tagging, not before. A tagged link is ugly; shortening it keeps the caption clean and the tags intact.
Why shortened links matter more than they look
Several platforms strip or mangle query strings, and in-app browsers are inconsistent about what they pass through. A short link that you control resolves to the tagged URL server-side, which means the attribution survives the trip. You also get a click count that is independent of the platform's own reporting, which is useful on the day a client disputes a number.
The side benefit is that bio links, link-in-bio pages and anything you hand to a client all flow through the same measurement, instead of being a separate thing you have to explain.
Where to start
You do not need to retrofit anything. Agree the convention this week, apply it to everything you publish from Monday, and write it into your onboarding doc so the next person inherits it.
In a month you will be able to open a report and say which three posts drove the traffic. That sentence is worth more in a renewal conversation than any amount of reach.



