UTM Links for Your Link in Bio: Know Which Post Converts
Post the same bio link everywhere and you cannot tell what works. UTM parameters tag each link so you know which platform, post, and campaign drove the clicks.
You post the same link in your Instagram bio, your TikTok bio, your YouTube description, and a newsletter footer. A week later you check your analytics and see a pile of clicks. Useful question: which of those four places actually sent them? Referrer data may identify some of those sources, but in-app browsers and missing referrers leave gaps. UTM tags make the intended placement explicit.
UTM parameters fix this. They are the difference between "my bio link got 400 clicks" and "Instagram sent 280, TikTok sent 90, and the newsletter sent 30, so I can compare each channel's traffic and downstream results."
New to the category? Start with what a link in bio is. This post assumes you already have one and want to measure it properly.
What a UTM parameter actually is
A UTM parameter is a tag you bolt onto the end of a URL. It does not change where the link points. It just rides along so your analytics tool can read it and group traffic by where it came from.
Here is a tagged link:
https://manylinks.io/jane?utm_source=instagram&utm_medium=bio&utm_campaign=launch
Everything after the ? is tracking. The link still opens manylinks.io/jane. Common campaign parameters include:
- utm_source is where the traffic came from. The platform or site.
instagram,tiktok,youtube,newsletter. - utm_medium is the type of placement. For a permanent profile link, a consistent value such as
bioworks in ManyLinks; use your analytics tool's channel conventions if you also need its default channel grouping. For an email it would beemail, for a paid adcpc. - utm_campaign is the specific push you are running.
summer-sale-2026,album-drop,black-friday. - utm_term is for paid keywords. Most creators never use it.
- utm_content distinguishes two versions of the same link. Handy for A/B tests or for telling apart two posts in the same campaign.
Google describes these parameters in its campaign URL guide. ManyLinks currently records source, medium, and campaign, but not term or content in its built-in campaign report. Include a non-empty utm_campaign: links with only source and medium do not appear in that report. Use a stable campaign such as profile-links for an ongoing bio link.
Why this matters for a link in bio specifically
Bio links have a unique blind spot. The same URL sits in five places at once, so referrers alone do not distinguish each placement. Worse, traffic from inside apps often loses its referrer, which is why so much of it shows up as "(direct)" in Google Analytics. Direct means a usable source was not identified; typed URLs are only one possible cause.
A UTM source survives that trip because it is baked into the URL itself, not read from the browser referrer. The tags can identify the placement when the app preserves the query string and tracking succeeds. Redirects, link rewriting, copied links, and blocked tracking can still affect attribution.
So the payoff is concrete. You learn which platform is doing the work, and you can stop guessing. If Instagram drives 70 percent of your clicks and TikTok drives 5, that tells you where the next hour of effort should go. It also catches the surprises. A creator who assumes Instagram is everything sometimes finds their newsletter quietly out-converts it, because the people who already subscribed are warmer. You only see that if the two are tagged differently.
One small clarification, since people mix them up. A UTM is not the same as a tracking pixel. A UTM answers "where did this click come from." A pixel lets you do something about it afterward. We will come back to that at the end.
A naming convention you will not regret
The single most common UTM mistake is inconsistency. Instagram, instagram, and IG are three different sources to your analytics tool, even though they mean the same thing to you. Your report fragments into near-duplicate rows and the numbers stop adding up.
Pick rules and never break them:
- Lowercase everything. UTM values are case-sensitive.
Instagramandinstagramwill not merge. - No spaces. Use a hyphen.
summer-sale-2026, notsummer sale 2026. Spaces get encoded into%20and look broken. - Reuse a fixed vocabulary. Keep a short list of approved values. One word per platform:
instagram,tiktok,youtube,x,newsletter. Use those exact spellings forever. - Describe the placement consistently. Use
biofor profile links,emailfor newsletter links, and distinct campaign names when you need to compare individual placements.
Write the list down somewhere you will actually find it again. A note in your phone is fine. The discipline is the whole point.
A worked example across three places
Say you are launching a new product and promoting it on Instagram, TikTok, and in your newsletter. You would post three versions of the same link, each tagged differently:
| Where you post it | The tagged link |
|---|---|
| Instagram bio | manylinks.io/jane?utm_source=instagram&utm_medium=bio&utm_campaign=product-launch |
| TikTok bio | manylinks.io/jane?utm_source=tiktok&utm_medium=bio&utm_campaign=product-launch |
| Newsletter footer | manylinks.io/jane?utm_source=newsletter&utm_medium=email&utm_campaign=product-launch |
Same destination, three sources, one campaign name tying them together. Now your report can show clicks per source for the launch, and the campaign tag lets you compare this launch against the next one.
Notice the newsletter row uses utm_medium=email, not bio. That is on purpose. The medium describes the type of placement, and an email footer is not a bio link. Get that distinction right and you can later pull every bio link across every platform into one view by filtering on utm_medium=bio, while email stays in its own bucket. Mislabel it and the two streams contaminate each other.
Reading it back in ManyLinks
Once your links are tagged, you need somewhere to see the breakdown. ManyLinks has a UTM campaign report in the analytics dashboard that groups your traffic by campaign, source, and medium, and shows views, clicks, and click-through rate for each row. So you can open it and see, in one table, that the product-launch campaign pulled more from Instagram than TikTok, and which of the two converted better per visitor.
That report is a Pro feature. It reports on-page click events, not completed purchases or confirmed signups at the destination. A permanent profile link also cannot identify which Reel prompted a visitor unless each placement has a distinct tagged link. The free plan still gives you the basics: views, clicks per link, and a traffic-source breakdown for the last 30 days. So even on free, you can see that Instagram is sending traffic. The UTM report is what lets you slice it by campaign and compare like for like over time. If you want the full picture, the upgrade page has the details.
For the wider context on which numbers are worth your attention, the link in bio analytics guide walks through the five metrics that matter and what to do with each.
The honest trade-off
UTMs are not free of effort, and over-tagging is a real failure mode. If you invent a new source spelling for every post, or pile on utm_content and utm_term you never look at, your reports turn into noise and you stop reading them. A messy UTM setup is genuinely worse than none, because it gives you false confidence in numbers that do not line up.
So start small. Tag source and medium on the handful of places you actually post your link. Add a stable campaign name as well if you want the links included in ManyLinks' campaign report. You can always get more granular later. You cannot un-fragment a year of inconsistent tags.
There is also a separate question UTMs do not answer: what to do with the people who clicked. UTMs tell you where they came from. A tracking pixel lets you build an audience from those visitors and show them ads later. The two work well together, one for measurement and one for follow-up.
Where to start
If you only do one thing this week, add utm_source, utm_medium=bio, and utm_campaign=profile-links to the links on your two biggest platforms. Creating tagged URLs is free. Reading the campaign breakdown in ManyLinks requires Pro and newly collected traffic. Once you can see the split, you will want to compare campaigns over time, and that is when the Pro UTM report starts earning its keep.