A UTM link is a normal URL with tracking parameters added, so your analytics can tell which post sent a visitor. To track sales, tag every social link with utm_source, utm_medium and utm_campaign, keep the naming identical every time, and let your analytics connect the tagged visit to the purchase. UTMs identify the click. Your analytics platform attributes the revenue.
The question every social media manager eventually gets asked is whether any of this is producing money, and the honest answer for most accounts is that nobody knows. Engagement is visible. Reach is visible. What happened after somebody tapped the link in your bio is a black hole, which is why social media budgets are among the first cut whenever a finance team starts looking for savings.
UTM links close most of that gap, and they are much simpler than their reputation suggests. There is no software to buy and nothing to install. You add some text to the end of a URL, and your analytics stops reporting that visitor as an anonymous arrival and starts reporting them as someone who came from a specific post in a specific campaign.
What follows covers how the parameters work, the naming discipline that determines whether the data is usable, where attribution genuinely breaks and cannot be fixed, and how to connect a tagged click to an actual sale.
What UTM Links Do and Do Not Do
Worth being precise early, because the most common disappointment comes from expecting the wrong thing.
A UTM link does one job: it labels a visit. When somebody clicks yoursite.com/product?utm_source=instagram&utm_medium=social&utm_campaign=spring_launch, your analytics records that this session arrived from Instagram, through social, as part of the spring launch. That label then sticks to everything that person does in that session, including a purchase.
What UTMs do not do is track sales by themselves. They carry no revenue data and perform no attribution. The revenue connection is made by your analytics or ecommerce platform, which already knows what somebody bought and now also knows where they came from. UTMs supply the missing half of a sentence your analytics was already trying to finish.
This distinction matters practically because it tells you where to look when something is not working. If the traffic shows up but the revenue does not, the problem is almost never the UTM. It is usually that conversion tracking or ecommerce reporting is not configured, which is a separate job on the analytics side.
The Parameters, and Which Ones You Need
Google currently documents nine campaign parameters. Most guides cover five, which is why several of these are unfamiliar even to people who have been tagging links for years.
| Parameter | What it identifies | Use it for social? |
|---|---|---|
| utm_source | Where the traffic came from | Always. The platform name |
| utm_medium | The marketing channel | Always. Usually social or paid_social |
| utm_campaign | The campaign or promotion | Always. The thing you are running |
| utm_content | Which specific creative or link | Yes, for separating individual posts |
| utm_term | Paid keyword | Rarely relevant to organic social |
| utm_id | Campaign ID, for matching uploaded cost data | Only if you import campaign costs |
| utm_source_platform | The platform that directed the traffic | Mostly for ad platforms like DV360 |
| utm_creative_format | Creative type, such as video or display | Not currently reported in GA properties |
| utm_marketing_tactic | Targeting, such as remarketing or prospecting | Not currently reported in GA properties |
Those last two are worth flagging honestly, because several guides recommend them without mentioning that Google's own documentation states they are not currently surfaced in reports. You can add them, and today the data goes nowhere you can see.
For organic social the working set is four. Source, medium and campaign on everything, plus content when you want to compare individual posts rather than the campaign as a whole. That fourth one is what lets you answer the question people actually care about, which is not whether Instagram works but which post worked.
Naming Conventions Decide Everything
This is the part that determines whether you have usable data in six months or an unreadable mess, and it is almost entirely unglamorous.
Google's documentation is explicit that parameter values are case sensitive. That one fact creates most of the damage. Instagram, instagram and INSTAGRAM are three separate sources in your reports, splitting what should be one row into three and making every total wrong. The same applies to Facebook versus facebook, and to every campaign name anybody types slightly differently.
| Element | Convention | Example |
|---|---|---|
| Case | Always lowercase, no exceptions | instagram not Instagram |
| Spaces | Never. Use underscores or hyphens, pick one | spring_launch |
| Source | The platform, consistently named | instagram, linkedin, tiktok |
| Medium | social for organic, paid_social for ads | social |
| Campaign | What you are running, dated if recurring | spring_launch_2026 |
| Content | The specific post or placement | bio_link, carousel_3, story_apr14 |
The discipline that makes this stick is a shared document. One spreadsheet listing approved source and medium values, with every link anybody builds recorded in it. This sounds bureaucratic for about a week and then saves you repeatedly, because the alternative is three people inventing three conventions and nobody discovering it until a quarterly report comes out wrong.
A related rule: never change a convention mid-campaign. Renaming spring_launch to spring-launch halfway through does not merge the data, it splits it permanently. If a convention is wrong, live with it until the campaign ends.
Building Your First Set of Links
The mechanics take about ten minutes once, and then the rest is repetition.
Start with the destination URL, which should be the page you actually want people to land on rather than your homepage. Then append a question mark and the parameters, each separated by an ampersand. The order does not matter and the formatting is unforgiving about spaces, which is why most people use a builder rather than typing them.
Google's own Campaign URL Builder does this free, and several link management tools do the same. The builder matters less than the convention: whatever you use, the output has to match the names in your shared document exactly.
A worked example for a product launch running across three platforms. The destination is the product page. Source changes per platform, medium stays social throughout, campaign stays spring_launch_2026 throughout, and content identifies the individual post. So the Instagram carousel becomes utm_source=instagram&utm_medium=social&utm_campaign=spring_launch_2026&utm_content=carousel_benefits, while the LinkedIn version changes only the source and the content value.
That structure is what lets you answer questions at three levels afterwards. Filter by campaign and you see what the launch did overall. Add source and you see which platform carried it. Add content and you see which specific post did the work, which is usually the finding that changes next month's plan. This is also the point at which running proper campaigns rather than one-off posts starts paying back, since a campaign name gives the data something to group around.
Build all of them in one sitting before the campaign starts, paste them into your content documents alongside the copy, and the publishing step becomes mechanical. Deciding the structure while already behind schedule is how conventions get broken.
Link Shorteners and the Bio Link Problem
Two practical complications worth handling deliberately, since both are near-universal on social.
Shorteners do not break UTM tracking. A shortened link redirects to the full tagged URL, and the parameters survive the redirect intact, so your analytics sees the same source it would have seen otherwise. What shorteners add is their own click data and a tidier appearance, and what they cost you is the ability to see the destination before clicking, which some audiences dislike. Either choice is defensible, and the only genuine error is assuming shortening strips the tags, which it does not.
The bio link is the more interesting problem, because Instagram and TikTok restrict clickable links elsewhere, which concentrates enormous traffic through a single URL. Tag it, obviously, but a permanently static utm_content=bio_link tells you almost nothing beyond the total.
The fix is to treat the bio link as something you version rather than something you set once. When a campaign runs, update the bio link to carry that campaign's parameters, so bio traffic during that period is attributable to the campaign driving it. If you use a landing page with multiple destinations, tag each outbound link on that page separately, which turns an opaque bucket into a readable breakdown of what people were actually looking for.
Worth noting that the same post may send traffic through both routes, the bio and a story link, and tagging them with different content values is the only way to tell which placement did the work. That comparison is usually more surprising than people expect.
Where Attribution Genuinely Breaks
Honest section, because overselling UTM tracking is how teams end up distrusting all their data.
Dark social. Somebody sees your post, copies the link, and sends it to a colleague in a direct message. That colleague clicks, your UTM parameters travel with the link, and the visit is now attributed to Instagram even though it came from a private message. This inflates whichever platform people copy from most, and there is no clean fix.
Stripped parameters. Some apps and platforms rewrite or truncate links. A link pasted into certain messaging apps loses its query string, and that visit arrives as direct traffic with no source at all.
In-app browsers. A click inside the Instagram or TikTok browser, followed by a purchase completed later in Safari, often breaks the session chain. The visit is attributed correctly and the sale lands somewhere else entirely, usually under direct.
Long consideration windows. Social frequently introduces people to a business who buy weeks later after several other touches. Last-click attribution gives that sale to whatever they clicked most recently, usually a branded search, and social gets nothing despite having started the whole thing.
| You can reliably attribute | You cannot reliably attribute |
|---|---|
| Clicks from a tagged link | Views that led to a later search |
| Same-session purchases | Purchases completed in a different browser |
| Which post drove the most traffic | Word of mouth your post triggered |
| Relative performance between posts | The true total contribution of social |
The practical conclusion is that UTM data is excellent for comparison and unreliable as an absolute. Use it to decide which post or campaign outperformed another, since those share the same blind spots. Do not use it to tell your finance team exactly what social media contributed, because the real number is higher than what you can see and you cannot prove by how much.
Connecting a Click to a Sale
Tagging the link is half the job. The revenue connection needs your analytics configured to record purchases.
In practice that means ecommerce tracking or conversion events are set up, so the platform records a purchase event with a value attached. Once both halves exist, the reports you want appear on their own: traffic acquisition broken down by source and medium, with revenue and conversion columns alongside. Filtering to utm_medium = social then shows what social produced, and adding the campaign or content dimension breaks it down further.
If you sell through a platform that handles its own checkout, check how it passes parameters through. Some preserve the original source across the checkout flow and some overwrite it with a self-referral, which makes every sale appear to come from your own payment page. That is a configuration problem worth catching early, because it silently destroys attribution for every channel at once, not just social.
One test before you trust any of it: build a tagged link, click it yourself, complete a small real purchase, and confirm it appears correctly in your reports with the right source attached. Twenty minutes and one refund is a considerably cheaper way to discover a tracking fault than a quarter of unusable data.
Reading the Data Without Fooling Yourself
Once data starts arriving, there are two mistakes that produce confidently wrong conclusions.
The first is judging platforms by conversion rate alone. A platform sending ten highly qualified visitors will show a beautiful conversion rate and contribute almost nothing. A platform sending a thousand mixed visitors may convert poorly and produce more revenue. Look at total contribution first, then efficiency.
The second is comparing social against channels with fundamentally different jobs. Branded search converts extremely well because those people had already decided, and frequently they decided because of something they saw on social three weeks earlier. Comparing the two on last-click conversion rate will always flatter search and always undervalue discovery channels.
What UTM data is genuinely excellent at is internal comparison. Which of your posts drove the most revenue, which campaign outperformed, whether carousels outperform single images for actual purchases rather than likes. Those comparisons are reliable because every option shares the same measurement limitations, and they are the comparisons that actually change what you do next.
The most useful version of that comparison is by argument rather than by format. Tagging posts so you can tell which angle on a topic drove purchases tells you something about what your customers respond to, whereas knowing that carousels outperformed video only tells you about packaging. Both are worth knowing and only one of them changes what you say.
This is also the distinction between this kind of data and platform engagement reporting. Engagement metrics tell you what happened on the platform: who stopped, who reacted, who commented. UTM data tells you what happened after they left. Both are necessary and neither substitutes for the other, since a post can earn enormous engagement and drive nothing, or quietly drive sales while looking unremarkable.
Making It a Habit
The reason most teams have patchy UTM data is not disagreement about its value. It is that tagging happens at the moment of publishing, when somebody is busy, and an untagged link still works perfectly.
Three things make it stick. Build the links when you build the content, during the same batching session rather than at publishing time. Keep the approved values in a document anybody can check in five seconds. And give one person responsibility for the convention, because conventions maintained by everybody are maintained by nobody.
Tagging during the planning session rather than at publication is the one with the biggest effect. If you already batch your content production, adding link building to that session costs a few extra minutes and removes the step that otherwise gets skipped under time pressure.
Where Super Buddy Fits
Super Buddy does not build UTM links for you, and it is worth saying that plainly rather than implying otherwise. The link building happens in Google's Campaign URL Builder or your own spreadsheet, and the revenue reporting happens in your analytics platform.
What it does carry is the publishing side of the habit. Tagged links go into posts in the scheduler during the same session you write the content, which is the workflow change that actually fixes inconsistent tagging. The failure mode is almost always a link pasted in a hurry at publishing time, and scheduling in advance removes that moment entirely.
Engagement analytics then covers the other half of the picture described above. Your analytics platform tells you which posts produced revenue; the engagement side tells you which posts earned attention. Reading them together is how you find the genuinely useful cases, such as a post with modest engagement that drove disproportionate sales, which is a pattern worth repeating and completely invisible if you only look at one source.
The honest limit, which applies to every tool in this category: no amount of publishing software fixes conversion tracking that was never configured, or attribution lost in a checkout flow. Those are jobs for whoever owns your analytics, and they need doing before any of this produces numbers worth acting on.
Common Mistakes
Inconsistent capitalisation. Google's documentation confirms values are case sensitive, so Instagram and instagram become two sources and every total is wrong.
Tagging only some links. Partial data is worse than none, because it looks complete and quietly understates whichever platform somebody forgot.
Using UTMs on internal links. Tagging a link between two pages on your own site overwrites the original source and destroys the attribution you were trying to capture.
Changing conventions mid-campaign. Splits the data permanently rather than merging it.
Reporting UTM revenue as the total contribution of social. The real figure is higher and you cannot prove how much.
Never testing the chain end to end. One real purchase through a tagged link catches faults that months of reporting will not.
Final Thoughts
UTM links are one of the few things in social media measurement that are genuinely simple, free and immediately useful. The whole technique is appending text to a URL, and the only hard part is doing it consistently enough that the data holds together.
Keep everything lowercase, use the same source names forever, tag every link you publish, and write the convention down somewhere other people can find it. That is most of the work, and it takes an afternoon to establish.
Then treat the output for what it is: an excellent comparison tool and an incomplete picture of the total. Social media contributes more than your UTM data will ever show, because the best thing it does is introduce people to you long before they are ready to buy. What the tagging gives you is the ability to tell which of your efforts did that best, which is the question worth answering anyway.
If the publishing habit is where this falls apart, that is the part Super Buddy can carry. The analytics configuration is a job for whoever owns your site, and it is worth getting right first.
Try Super Buddy free
Turn one idea into a week of content. No credit card required.



