Back to Blog

How to Track Which Posts Drive Sales, Not Just Clicks

Your biggest click source is often not your biggest revenue source. This is the method for finding out which post, bio, or comment actually produced sales, and how many clicks you need before the answer means anything.

Karan Bhakuni
Karan Bhakuni
Founder, Flyn
GuideJul 29, 202613 min readUpdated Jul 29, 2026
How to Track Which Posts Drive Sales, Not Just Clicks

Design the Placements Before You Design the Tags

Every tracking guide on the internet starts with tagging. That is the wrong first step. Tagging tells you what to call a thing; you first have to decide what the things are.

A placement is a spot, not a platform

"Instagram" is not a placement. Your bio link is a placement. The link in the pinned comment under last Tuesday's Reel is a different placement. The one you send in DM replies is a third. All three are Instagram, all three behave completely differently, and lumping them together destroys the only insight worth having.

The test is simple: if you would consider doing more of one and less of another, they are separate placements. That usually lands you somewhere between five and fifteen, which is a manageable number of short links pointing at one destination.

Name them so they still make sense in six months

Pick a pattern and never break it. Something like product-channel-spot works for almost everyone: spr-ig-bio, spr-ig-reel12, spr-yt-desc, spr-nl-footer. You will read these in a list months from now, half-remembering what you did, so favour boring and readable over clever.

PlacementSlugWhy it is separate
Instagram biospr-ig-bioPassive discovery, always on
Pinned comment, Reelspr-ig-reel12Tied to one piece of content
YouTube descriptionspr-yt-descLong tail, keeps earning for months
Newsletter footerspr-nl-footerWarm audience, repeat exposure
Partner newsletterspr-partner-mayBorrowed trust, one shot
Podcast show notesspr-pod-ep44Delayed clicks, long lag

Do not forget the placements that are not posts

The ones people miss are the quiet ones: a link in your email signature, a QR code on packaging, the pinned message in a Discord server, a line in your podcast show notes. These are often the best performers precisely because nobody optimises them. Give them links too. If a placement is physical, the same logic applies to tracking QR code scans.

Do this once

Open a notes file and write out every place your link currently lives. Most people find two or three they had completely forgotten about, and one of those is usually still sending traffic from a post they made a year ago.

Connect the Click to the Order

Placements and tags get you to "this many people came from here". The last mile is joining a click to an actual purchase, and that needs one more piece: an identifier that leaves with the click and comes back with the sale.

Five step flow showing a click minting an id, the site storing it, the thank-you page reporting it back, and the sale landing on the link
The click id is a random string with no meaning outside your account. It travels out on the click and comes home with the order value attached.

How the round trip works

When someone clicks a link with conversion tracking switched on, the redirect appends a random id to your destination URL. A small script on your site remembers it in first-party storage. When that visitor reaches your thank-you or order-complete page, the script reports the id back with the order value, and the sale lands on the exact link that earned it. Setup is two copy-paste lines, and there is a button that copies the full instructions if someone else manages your site.

Nothing about this identifies a person. The id is meaningless outside your own account, it is stored on your own domain rather than a shared advertising one, and it carries no profile, no email, and no device fingerprint. It answers one question: did that click end in a sale. That is also why it keeps working while third-party cookies are being switched off around it.

The window, and the Safari caveat

A click can convert for 30 days. Safari and iOS cap script-set storage at around seven days, so a Safari visitor who buys three weeks later will show up as an untracked sale. Treat late Safari conversions as a bonus rather than a bug, and never assume your tracked total is your total revenue. It is the attributable share, and it is always a little smaller than the truth.

Five Placement Playbooks

The method is the same everywhere, but what you do with the answer differs a lot by situation. These are the five that come up most.

You have one bio slot and you keep changing what is in it. Give each destination its own link rather than editing one, so you can compare "the course link" against "the merch link" over months instead of losing the history every time you swap. Pair it with a deliberate link-in-bio strategy, and remember that bio traffic is the highest-volume, lowest-intent placement you own. Judge it on sales, or it will always look better than it is.

2. The seller posting the same product six ways

This is the case in the chart at the top. One product, six placements, and your instinct says to keep making more of whatever gets the most clicks. Once you can see revenue per placement, the instruction is usually the opposite: quietly stop doing the thing that gets attention and do more of the thing that got you paid. If two placements look genuinely close, split test them at the redirect layer instead of arguing about it.

3. The affiliate sending traffic to someone else's checkout

You cannot put a script on a merchant's thank-you page, so the browser method is unavailable to you. What you can do is pass an identifier into the network's sub-id field and have the network report the sale back to you server-side when it is approved. That is a different mechanism with its own vocabulary, and it is covered end to end in the postback URL guide. The strategy layer, sub-ids, disclosure, and cloaking, lives in the affiliate link tracking guide.

4. The newsletter and community operator

Your email platform reports clicks per campaign, which dies with the campaign. A short link outlives it, and it keeps counting when a subscriber forwards the issue or pastes your link into a Slack channel. That is exactly the traffic your email platform cannot see. There is a full walkthrough in newsletter click tracking.

5. The placements you simply cannot instrument

Some destinations will never accept a script: a Gumroad or Stripe payment link, a marketplace listing, an app store page, a partner's own site. Do not fake it. Use one of the two honest fallbacks instead. Give each placement its own discount code and read the code breakdown in your payment processor, or point each placement at a page you do control that then forwards to the uninstrumentable destination. Either way, say out loud which placements are measured and which are estimated, so you never quietly compare the two.

Read the Scoreboard Without Fooling Yourself

Once the data arrives, the failure mode changes. It stops being "I have no idea" and becomes "I am confidently wrong", which is worse. Three habits prevent most of it.

Table of six placements sorted by revenue, showing clicks, sales, conversion rate and value per placement
Sort by value, not by clicks. This is the only ordering that answers the question you actually have, which is where to spend next week.

Divide by human clicks, not raw clicks

Conversion rate is sales divided by clicks, and the denominator decides whether the number means anything. Automated traffic inflates it: scanners, prefetchers, and preview bots all register as clicks. Flyn separates human clicks from bot clicks on every link for free, and the rate you should quote yourself is the one computed against humans. The click fraud guide goes deeper on what the automated share is made of.

Know how many clicks make a finding

Nobody publishes this and it matters enormously. Comparing two placements on 40 clicks each is reading tea leaves. A rough working rule:

Human clicks per placementWhat you can honestly say
Under 100Nothing. Keep collecting.
100 to 300Only a large gap is real (say 4 percent against 0.5 percent).
300 to 1,000A roughly two-to-one difference is probably real.
Over 1,000Small differences start to mean something.

If a placement never reaches 100 human clicks, that is itself the finding: it is too small to matter, and no amount of analysis will change that.

Measure your own conversion lag

People rarely buy on the first visit. Look at the gap between click and purchase across your last few dozen sales and find the middle value. If your median lag is six days, then judging a placement 24 hours after posting is guaranteed to be wrong, and slow-burn placements like show notes and YouTube descriptions will always look worse than they are. Set your judging window to at least twice your median lag.

Clicks, Sessions and Orders Will Never Match

The moment you have three sources of truth you will notice they disagree, and the usual reaction is to assume something is broken. Usually nothing is. Each number counts a different event.

Funnel showing 1000 link clicks reducing to 780 human clicks, 640 analytics sessions and 38 orders, with the reason for each drop
Every step down has an ordinary explanation. A stable gap is healthy; a gap that suddenly widens is the thing worth investigating.

Why clicks exceed analytics sessions

The big one is link preview bots, and it is the single most common cause of "hundreds of clicks and zero sales". Slack, Discord, iMessage, WhatsApp, Telegram, X, and Facebook all fetch a URL to build the preview card when someone shares it. One paste into a busy Slack workspace can produce a burst of fetches that no human made. Browsers also prefetch links, ad blockers stop analytics scripts from ever running, and some visitors leave before the page finishes loading.

Before you blame your product

If a placement shows a lot of clicks and no sales, check the human-versus-bot split before you change anything. A link shared into chat apps can look like a hit while producing almost no real visitors. Rewriting your sales page to fix a bot problem is a genuinely expensive mistake.

Why sessions exceed orders

Because most people who visit a page do not buy, which is normal and not a tracking failure. What is worth watching is the shape over time. If sessions hold steady and orders fall, that is a page or pricing problem. If both fall together, it is a traffic problem, and you should be looking at the placement, not the page.

What a healthy gap looks like

There is no universal number, so establish your own baseline over a few weeks and watch for movement instead of chasing a target. A consistent 20 to 30 percent drop from clicks to sessions is unremarkable. A jump to 70 percent in a week says something changed: a new placement in a chat-heavy channel, a broken redirect, or a script that stopped loading. The direction of the change is the signal, not the absolute number.

What To Do With the Answer

Measurement that does not change behaviour is a hobby. Once you can see revenue per placement, three decisions follow, and they are worth making on a schedule rather than a whim.

Cut the ones that only look busy

The placement with lots of clicks and no sales is not free. It costs you the time you spend making content for it. Cut it, or change what it points at: sometimes a high-click, low-sale placement is fine and simply pointed at the wrong destination, and sending it somewhere earlier in your funnel fixes it.

Repeat what actually paid

If a partner newsletter produced 41 sales from 380 clicks, the obvious action is more partner newsletters, not more posts. This is where most of the value of the whole exercise sits, and it is almost always an instruction to do less of something loud and more of something quiet.

Re-test on a schedule

Placements decay. Feeds change, audiences move, and a bio link that carried you last year may be dead now. Re-read the scoreboard monthly rather than continuously, because continuous watching is how you end up reacting to noise. Monthly is often enough to catch a real shift and rare enough that you are looking at meaningful sample sizes.

None of this requires ad spend, a data team, or a new stack. It requires deciding what your placements are, giving each one its own link, connecting the click to the order, and being honest about how much of what you see is real. If you want to run it on Flyn, conversion tracking is included on Pro, click counts and the human-versus-bot split are free on every link, and you can create your first tracked link in under a minute. Creators can start from the creator setup, and stores from the ecommerce setup.

Frequently Asked Questions

How many clicks do I need before I can trust the comparison?
As a working rule, under 100 human clicks per placement tells you nothing, 100 to 300 only reveals large gaps, 300 to 1,000 makes a roughly two-to-one difference believable, and over 1,000 small differences start to matter. If a placement never reaches 100 human clicks, that is the finding: it is too small to be worth optimising.
Should I use short links or UTM parameters?
Both, layered. The short link identifies the placement and survives copy-paste, screenshots, and platforms that rewrite URLs. The UTM parameters ride inside the destination URL into Google Analytics, Shopify, or Stripe, where they can be attached to an order. Put the UTMs on the destination URL, then shorten that URL.
Why does my Instagram or TikTok traffic show up as direct in Google Analytics?
In-app browsers and privacy settings frequently strip the referrer, so analytics has no idea where the visit came from and files it under direct. A distinct short link per placement sidesteps the problem entirely, because the click is counted on your link before the browser gets a chance to drop anything.
I am getting clicks but no sales. What should I check first?
Check the human-versus-bot split before you change your page or your pricing. Link preview bots in Slack, Discord, WhatsApp, and Telegram fetch a URL to build the preview card, and those fetches look like clicks. A link shared into chat apps can show a burst of clicks that no person made.
Can I track sales if my checkout is on Gumroad, Stripe, or a marketplace?
Not with a script, because you cannot add one to a page you do not control. Use a unique discount code per placement and read the code breakdown in your payment processor, or route each placement through a page you do control that then forwards on. Keep measured and estimated placements clearly separated.
Does conversion tracking need cookie consent?
Rules differ by jurisdiction and this is not legal advice, but the technical position is worth knowing: the id is first-party, random, carries no personal data, and is used only to join one click to one order. That is a materially different profile from third-party advertising cookies. Check your own obligations, and if you also run advertising pixels, treat those separately.
How long after a click can a sale still be counted?
Up to 30 days on Flyn. Safari and iOS cap script-set storage at around seven days, so some late Safari purchases will not be attributed. Your tracked revenue is therefore the attributable share rather than your total, and it will always be slightly under the real figure.
Do I need a separate link for every single post?
Only for posts you would act on separately. The test is whether you would consider doing more of one and less of another. That usually gives five to fifteen placements, which is enough to be useful without becoming a chore to maintain.

Ready to try Flyn?

Free plan includes 25 links/month, full analytics, and access to all 30+ free tools above. No credit card required.

Already a member? Log in

Karan Bhakuni
Karan Bhakuni· Founder, Flyn

Karan Bhakuni is the founder of Flyn. He writes about branded links, click analytics, and the link-management tooling growth teams and creators actually need, drawn from building Flyn and reading a lot of user feedback.