Track Link Clicks on Social Media Posts (and Tag Them With UTMs)

Track Link Clicks on Social Media Posts (and Tag Them With UTMs)

A worked example of reading link clicks and UTM tags after a launch week, the mistakes that quietly skew the numbers, and how to decide which of the two measures to trust.

Counting clicks is easy. Knowing what a count means is the hard part. A post gets 41 clicks, your site shows 29 visits from social, and someone asks which one is right. Usually both are, and the gap is the interesting bit.

This guide is about reading the data once you have it. It assumes link tracking is switched on. If it is not, the link tracking feature page covers turning it on and where the settings live. Here we walk through a made-up week and the places it can mislead you.

A launch week, worked through

Say you run a small design studio and you publish a post announcing a template pack. The same link goes to LinkedIn, Instagram, X and Threads, with two different captions. One leads with the price, the other leads with a picture of the finished result. You name the campaign template-pack for the occasion and leave everything else on the defaults.

Five days later you open the Links tab in Analytics and group by post. The numbers are invented, but the shape is typical:

PostChannelClicks
Price captionLinkedIn18
Price captionX6
Result captionLinkedIn9
Result captionThreads11
Result captionInstagram2

A tempting reading: the price caption won, 24 clicks to 22. A better one: the captions went to different channels, so you did not run a fair test. LinkedIn alone favours the price caption two to one, but that is one channel and 27 clicks. It is a hint, not a result.

Now the second source. In your own analytics, filtered to utm_campaign=template-pack, you see 31 sessions. Split by utm_source, LinkedIn leads, Threads is second, and Instagram is nearly absent. That agrees with the Links tab, which is reassuring, and it adds one thing the clicks cannot: of those 31 sessions, 4 reached the checkout page. Clicks told you who was interested. Sessions told you who stayed.

That is the whole method. Short link counts tell you which post and channel produced curiosity. UTM-tagged sessions tell you what that curiosity did next. Neither is enough alone.

Which measure to trust for which question

QuestionBetter sourceWhy
Which of my posts got tapped most this week?Links tabIt is per post and per channel, with no setup in another tool
Did social traffic buy anything?Your site analytics, filtered by UTMOnly the destination can see what happens after the click
Which channel is worth my time?Both, over several weeksOne post is noise. A channel that leads three launches in a row is not
Did the new caption style work?Neither, on one postChange one thing at a time, then compare like with like

If you can only look at one, look at your own analytics. It is where you already judge the site, and the tags arrive with the visitor.

Why the clicks and the sessions never match

Expect the Links tab to show more than your analytics does. There are ordinary reasons:

  • A click is a tap, a session is a page that finished loading. Some people tap and leave before the page appears.
  • Your analytics may not count everyone. Visitors who decline tracking or use a blocker never show up there, and they still click.
  • Totals refresh every 15 minutes. If you compare an hour after publishing, one side is simply behind.
  • Known bots are left out of the Links tab. Platforms send a preview crawler seconds after you publish, and security scanners follow links too. Those are classified and excluded. The filter is not perfect, so a bot that imitates a browser closely can still be counted as a person.

A gap of 20 to 40 percent is normal. A gap where the Links tab says 400 and your analytics says 15 is a sign something is wrong on the landing page or in the tagging.

Mistakes that skew the numbers

Comparing a post that has had a day with one that has had a week. Social posts tend to collect their clicks soon after publishing and then slow down, so age matters. Compare like windows: first 48 hours against first 48 hours.

Mixing up two spellings of one campaign. Campaign values are saved in lower case, so Spring and spring cannot split. But spring-sale and spring_sale are two campaigns, and so are springsale and spring-sale-2. The campaign field in the composer suggests names you have used before. Take the suggestion instead of retyping.

Hand-tagging links and forgetting the defaults. If a link already carries its own utm_ tags, they win and BulkPublish leaves them alone. That is useful on purpose and confusing by accident. If a post reports under a campaign you did not expect, look at the link you pasted.

Overriding the source. The utm_source value is the platform the link was published to, and it is not editable. Every channel gets its own short link for the same reason. Do not try to flatten it in your analytics with a fixed source: it is what lets you see LinkedIn against Threads at all.

Judging a bio link by post numbers. A link in a bio is clicked for as long as the profile exists, not just in the week of a post. Track it separately, with its own campaign name.

Reading a number from a post that had links BulkPublish did not shorten. Only links in the post text are shortened, up to 20 per post per channel. A link in an image, or one you add by editing the post on the platform afterwards, is not counted.

Decision guide: when to switch tracking off for a post

Turning link tracking on for the workspace does not oblige you to track every post. In the composer, a post with links has its own control, with Default, “Track links in this post” and “Don’t track links in this post”. Some honest cases for the last one:

  • A link to a person you want to look trustworthy. A short link on an unfamiliar domain is a small hesitation for a cautious audience. A plain link to your own domain can convert better.
  • A link you tagged by hand already. Leave tracking on if you want the click count. Turn it off if you want the exact address you wrote to appear.
  • A post where space is tight. A short link is 28 characters and is not always shorter than what it replaces. On X and Mastodon every link counts as a fixed length anyway, so shortening neither helps nor hurts there. Elsewhere, a long post close to a limit is worth a glance.

If a link cannot be shortened for some reason, the post still publishes with the original link. You lose the count for that post, never the post.

A weekly routine that fits in ten minutes

  1. Open the Links tab and group by post for the last seven days. Note the top two and the bottom two.
  2. Open your site analytics, filter by utm_medium=social, and check that the campaigns match what you expected to see.
  3. For the top post, ask what is different about it: the hook, the format, the time, the channel. Write one sentence.
  4. Decide one thing to repeat and one thing to drop next week.
  5. Once a month, export the tracked links as CSV and keep it next to your content plan.

Related reading: recurring social media posts for evergreen posts you will want to compare over months, bulk scheduling and scheduling from a CSV for putting a campaign name on a whole batch, and RSS to social media if a feed does your posting.

BulkPublish supports 15 platforms: Facebook, Instagram, TikTok, YouTube, X, Threads, Bluesky, Pinterest, Google Business Profile, LinkedIn, Mastodon, Discord, Telegram, Tumblr and Snapchat.

  • Short links and click tracking: Free: not included. Pro and Business: included.
  • Channels: Free: 3 (1 per platform). Pro: 30 (2 per platform). Business: 75 (5 per platform).
  • Posts: Free: 3/day. Pro: 30/day. Business: unlimited.

To set it up, see the Short links and click tracking feature page.

If you want to see which posts send people to your site, start free and upgrade when you are ready to track.