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.
| Network | Parameter | What it captures | Where you see it |
|---|---|---|---|
| Amazon Associates | tag / ascsubtag | a label attached to the click for a specific placement | Reports in Associates Central, filterable by tag |
| ShareASale | afftrack | a custom tracking string you define per link | Merchant and network reports, broken out by afftrack |
| CJ Affiliate | SID | a subid carried from click through to the conversion record | Advertiser and publisher reporting, filterable by SID |
| Impact | SubId1 to SubId5 | up to five custom fields per link | Impact reporting, filterable by each SubId |
| Awin | clickref | one custom reference string per click | Awin 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
| Question | Sub ID answers | Wrapper link answers |
|---|---|---|
| Did this link earn a commission | Yes | No |
| Who clicked, from where, on what device | No | Yes |
| Which post or story sent the click | Only if you set a unique sub ID per post | Yes, automatically with UTM parameters |
| Survives the network's own redirect | Yes, built for this | Only 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.