Learn · Campaign data · Updated 2026-08-14

How to track affiliate links (and see what's actually working)

Combine two layers: the sub ID your affiliate network gives you, which attributes commissions, and a wrapper link with UTM parameters, which attributes the click to a specific post or channel. The network tells you what sold; the wrapper tells you what sent it.

  1. Get your sub ID from the network
    Every major affiliate network lets you attach a custom label to a link so the sale shows up in your reports tagged, not just as a raw total.
  2. Wrap the affiliate link before it goes out
    Put a link you control in front of the affiliate URL so the click itself gets logged, referrer, device, and country included, before the visitor is forwarded on.
  3. Add UTM parameters to the wrapper
    Tag the wrapper link, not the affiliate URL, since UTM parameters on the affiliate URL are often dropped by the network's own redirect.
  4. Test the full chain before you publish
    Click the link yourself on the device your audience will use, and confirm the click logs, the destination is correct, and the sub ID survives to the final URL.
  5. Watch for parameters that get stripped along the way
    Extra redirect hops are the most common reason a sub ID goes missing from a network report, so check how many hops sit between your link and the product page.
  6. Read clicks and commissions side by side
    Compare wrapper click data against network commission data by sub ID, campaign by campaign, since the gap between the two is where the real information is.

Why affiliate links need two layers of tracking, not one

Most advice on this stops at "add a UTM parameter to your affiliate link and you're done." That does not hold up in practice, because the moment your link passes through the affiliate network's own redirect, the network can drop or rewrite query parameters it was never built to recognize. A sub ID survives that redirect because the network reads it and stores it against the sale. A UTM parameter only survives if something you control reads it before the click ever reaches the network. The fix is both, run in the right order.

Step 1: get your sub ID from the network

Every major affiliate network lets you attach a custom label to a link so the eventual sale shows up in your reports tagged with that label, not just as an anonymous total. The parameter name is different everywhere, which is the main reason this trips people up when they switch networks.

NetworkParameterWhat it capturesWhere you see it
Amazon Associatestag / ascsubtaga label attached to the click for a specific placementReports in Associates Central, filterable by tag
ShareASaleafftracka custom tracking string you define per linkMerchant and network reports, broken out by afftrack
CJ AffiliateSIDa subid carried from click through to the conversion recordAdvertiser and publisher reporting, filterable by SID
ImpactSubId1 to SubId5up to five custom fields per linkImpact reporting, filterable by each SubId
Awinclickrefone custom reference string per clickAwin reports, filterable by clickref

Pick a naming pattern you'll actually reuse: platform, date, and a short post identifier works, for example ig-0814-reel3. A one-off label you invent in the moment is useless six months later when you're trying to work out which video actually sold something.

Step 2: wrap the affiliate link before it goes out

A sub ID answers "did this specific link earn a commission." It does not answer "who clicked it, from where, and on what device." For that you need a link you control sitting in front of the affiliate URL, one that logs the click itself, referrer, device, and country, before forwarding the visitor on. This is the layer a link in bio tool like Raydar is built for: it records the click with a first touch and last touch cookie, then sends the visitor on to the affiliate URL with the sub ID still attached.

This matters most on Instagram, where the platform's own reporting stops at "link tap" and tells you nothing about what happened after. If you're posting affiliate links from Reels or Stories, see how to track link clicks on Instagram for the platform-specific mechanics of that first hop.

Step 3: add UTM parameters to the wrapper, not the affiliate URL

Put UTM parameters on the wrapper link your audience actually taps, not on the affiliate URL itself. That way they get logged by your tracking layer before the redirect happens, instead of relying on a network that was never designed to preserve them. A UTM builder keeps this fast and, more usefully, keeps your values consistent: "instagram," "Instagram," and "ig" will show up as three separate rows in most reporting tools if you're not careful. If the parameters themselves are new to you, what are UTM parameters covers what each one does.

Step 4: test the full chain before you publish

Click your own link exactly the way a follower would, on a phone, in the app you'll actually be posting from. Confirm three things: the click gets logged in your tracking layer, the redirect lands on the correct product page and not a delisted one, and the sub ID is still present in the final URL once it reaches the network. Affiliate links break more often from an expired cookie window or a swapped product than from anything technical you did wrong, so this five minute check saves a week of unexplained zero-conversion posts.

Step 5: watch for parameters that get stripped along the way

Some networks and some in-app browsers strip query strings during their own redirects, particularly when a click passes through more than one hop before it lands (Instagram's and TikTok's in-app browsers are common offenders here). If your sub ID is showing up inconsistently in reports, count how many redirects sit between your wrapper and the final product page. Every extra hop is another chance for something to get dropped.

Step 6: read clicks and commissions side by side

Once both layers are running, the useful number isn't clicks and it isn't commissions, it's the ratio between them. A post with strong clicks and weak conversions usually points to a targeting or offer problem: the audience was off, the timing was off, or the product itself didn't land. A post with weak clicks and no wrapper data at all is a simpler story. The tracking never got set up. Compare the two figures campaign by campaign, matched on your sub ID, not link by link in isolation.

What each layer actually tells you

QuestionSub ID answersWrapper link answers
Did this link earn a commissionYesNo
Who clicked, from where, on what deviceNoYes
Which post or story sent the clickOnly if you set a unique sub ID per postYes, automatically with UTM parameters
Survives the network's own redirectYes, built for thisOnly up to the point it hands off to the network

Why cookie windows quietly limit what a sub ID can capture

A sub ID only gets credit for a sale if the purchase happens inside the network's cookie window after the click, and that window is shorter than most people assume. Amazon Associates runs a 24 hour cookie window, which is well documented and famously tight: someone who clicks your link today and buys tomorrow evening usually will not attribute to you at all, no matter how well your tracking layer logged the click. Other networks are more generous, with windows that run anywhere from a few days to several months depending on the advertiser, but the principle holds everywhere. No amount of wrapper-link sophistication fixes a cookie that has already expired. If a product has a long consideration cycle, a coupon code tied to your name works better as a fallback than any cookie-based method, since it does not expire the way a tracking cookie does.

Common mistakes that break affiliate tracking without any obvious symptom

  • Reusing the same sub ID across every post, which collapses months of data into one meaningless bucket.
  • Putting the UTM parameters on the affiliate URL instead of the wrapper link, so the network's redirect strips them before you can use them anywhere.
  • Never clicking your own link on mobile before publishing, which is where broken redirects and stripped parameters actually show up.
  • Letting an old link keep running after the product it points to gets delisted or swapped, so clicks keep logging against a dead sub ID.
  • Treating a gap between clicks and commissions as proof the tracking is broken, when it is usually just the cookie window or the offer itself.

Where this breaks down and what to do about it

No wrapper link, including Raydar, can see what happens on the affiliate network's own checkout page. The network is the only source of truth for whether a sale happened. Your tracking layer is the source of truth for who sent the click. Treat those as two systems you reconcile by sub ID, not one dashboard that should match perfectly. It won't, and expecting it to is what causes most of the false alarms in affiliate reporting. If a post shows strong clicks but the network shows no matching sales for weeks, that's a real signal, but check the obvious things first: an expired cookie window on the network's side, a product that went out of stock, or a sub ID that got truncated somewhere in the chain. For a broader read on what a click tracking layer buys you beyond affiliate links specifically, see what is campaign tracking.

Common questions

Can I just use a UTM parameter instead of a sub ID?
You can, but most networks will not record it in their commission reports, so you'll see the click without knowing which specific link earned the payout. Use both, on different layers of the same link.

Does adding tracking to an affiliate link break a network's terms?
Sub IDs are a built-in feature every major network expects affiliates to use. A UTM-tagged wrapper in front of the link is standard practice too, as long as the final URL still reaches the network unmodified and the sub ID stays intact.

Why don't my sub ID numbers match my UTM click numbers?
They measure different things. UTM clicks count everyone who tapped your link, including people who left before reaching the product. Sub ID conversions only count people who bought. The gap between the two is normal, and it usually tells you where people drop off.

What's a workable sub ID naming pattern?
Something you can decode without notes: platform, date, and a short post identifier, for example ig-0814-reel3. Consistency matters more than cleverness.

Related: How to track sales from Instagram · How to track email clicks (and tell real ones from bots) · What are UTM parameters? · How to track link clicks on Instagram