Affiliate guides

Sub-IDs, or how to know which post actually earned

Untagged affiliate traffic cannot be broken down after the fact. A sub-ID naming scheme that still reads clearly in six months, what to keep out of one, and the things sub-IDs do not fix.

Moosa · Founder, LinkApprove

· 6 min read

You posted eleven things last month. Nine stories, one video, one newsletter. The dashboard says you earned $312, and it is right.

It does not say which of the eleven earned it. And unless you decided in advance that you would want to know, nothing else is going to say it either.

That is the case for sub-IDs, and it is worth stating plainly rather than as a feature: the question "which post made this money" is not a question a click log can answer retrospectively. It is a question you have to set up beforehand.

What a sub-ID actually is

A sub-ID is a short string you attach to a tracking link. It rides along with the click, comes back attached to the commission, and means nothing to anybody except you.

The advertiser does not read it. It does not appear at the checkout, it does not affect what the buyer sees, and it is not a coupon code. It is a label you write on your own traffic so that when money arrives you can tell where it came from.

Nothing else about the link changes. A deep link to a specific product page carries the same cookie window and the same commission whether or not it is tagged. The panel allows up to five sub-ID slots per link, which sounds like an invitation to use five. It is not. One field, used the same way every time, is worth more than five fields used when you remember.

Why untagged is worse than it sounds

The usual reassurance is that you can reconstruct it from timestamps. If you posted on Tuesday and the clicks arrived on Tuesday, surely that is enough.

It is enough exactly once, for a creator who posts once a week and never publishes anything evergreen. As soon as two placements are live at the same time, the reconstruction stops working, and the two placements are almost always the interesting comparison. A story and a bio link run concurrently. A video description and a pinned comment run concurrently. A newsletter goes out on Thursday and the archive keeps earning in March.

Then the cookie window stretches the gap further. On a 30-day program the sale is credited weeks after the click, so even the sale timestamp does not identify the post. You end up with a monthly total and a theory.

The theory is usually wrong in one specific direction: it favors the content you spent the most time on. That is a bad way to decide what to make next.

A scheme that still reads clearly in six months

The common failure is not forgetting to tag. It is tagging inconsistently, so the report comes back with insta, ig, IG-story, story2 and newsletterlink in it, and grouping is impossible without cleaning by hand.

Five rules are enough.

  1. Fixed segments in a fixed order. Channel, then placement, then date. Always three, always that order.
  2. Lowercase, hyphens, nothing else. No spaces, no underscores mixed in, no capitals, no punctuation. Some upstream systems normalize case and some do not, and a report split across IG and ig is a report you have to fix before you can read it.
  3. A short controlled vocabulary for the channel. Pick your six and never invent a seventh casually.
  4. Dates as four digits, month then day. Sortable, unambiguous, and short.
  5. Never reuse a value to mean two things. If bio meant the Instagram bio in January it cannot mean the TikTok bio in June.
Where the link wentSub-IDPosted
Instagram story, swipe upig-story-081212 Aug
Instagram bio linkig-bio-081212 Aug
TikTok bio linktt-bio-081212 Aug
Video description, first linkyt-desc-081414 Aug
Video pinned commentyt-pin-081414 Aug
Newsletter, top blocknl-top-081515 Aug
Newsletter, footernl-foot-081515 Aug
One product, one week, seven placements. Channel, placement, date, in that order every time. The scheme is deliberately boring: its only job is to sort and group cleanly a year from now, when you have forgotten what you meant.

The payoff of the fixed order is that every useful grouping is a prefix. Everything starting ig- is Instagram. Everything starting nl- is the newsletter. Everything ending 0812 is that day. You can answer three different questions from one column without any extra tooling.

What not to put in one

Two smaller exclusions worth naming. Do not put commercial terms in there, your rate or a client's fee, because the string is readable by parties outside your relationship with them. And do not put anything you would not want screenshotted, because at some point it will be.

Reading the split

Once a month of tagged traffic exists, the report stops being a total and becomes a comparison. Here is the shape of what that looks like.

Illustrative example: where one month of commission came from
nl-top-0815$148

Newsletter, top block

yt-desc-0814$96

Video description, first link

ig-story-0812$41

Instagram story, swipe up

ig-bio-0812$18

Instagram bio link

tt-bio-0812$9

TikTok bio link

nl-foot-0815$0

Newsletter, footer

yt-pin-0814$0

Video pinned comment

INVENTED FIGURES. This is a worked example to show the shape of a sub-ID report, not data from our network. We do not publish network conversion statistics and nothing here should be read as a benchmark. Your own split is the only one that means anything, and the point of the post is that you can only have it if you tag.

Three things to look for when it is your own version of that chart.

The variable is usually placement, not channel. In the example the newsletter appears twice, at the top and in the footer, and the two behave nothing alike. A conclusion of "the newsletter works" would be less useful than "the top block works", and only one of the two tells you what to do next week.

Zeros are information, not noise. A placement that produced clicks and no commission is a different problem from a placement that produced nothing at all, and you can only tell them apart if both are tagged. The second is a distribution problem. The first is a fit problem, and the fit problem is the expensive one.

Divide by clicks, not by posts. A placement that earned less because it was seen by fewer people has not underperformed. Rank on what a click was worth, then decide what to make more of.

What sub-IDs do not do

They are a reporting label and nothing more, which is worth being clear about because they are occasionally sold as more.

They do not change attribution. Last click still decides who is credited. A tagged click that loses to a coupon site at the checkout loses in exactly the same way an untagged one would.

They do not extend a cookie window or raise a rate. The commission on a tagged link is identical.

They do not deduplicate readers. One person who clicks your story and then your newsletter generates two tagged clicks and, if they buy, one sale credited to whichever came last. The split tells you which placement closed, not which one persuaded.

They travel if the link does. If somebody copies your URL and shares it in a group chat, your sub-ID goes with it and those sales land in that bucket. That is usually harmless and occasionally the explanation for a strange result.

What to actually do this week

Write down the six channel codes and the placement codes you will use, in a note you can find. Tag every link you generate from today, including the ones that feel too small to matter, because those are the ones that make the report inconsistent. Leave the older untagged links alone: retagging them changes nothing about the traffic already sent, and it makes the historical comparison worse rather than better.

Then wait a full validation cycle before drawing conclusions, because the first three weeks of any sub-ID report are pending commission that has not settled yet. On retail programs that is 30 to 60 days. The report is worth having. It is worth having accurate more.

Moosa · Founder, LinkApprove

I run LinkApprove. I started it after watching capable creators get declined by affiliate programs on procedural grounds, no website, not enough traffic, rather than on whether they could actually sell anything. I write here about how the mechanics really work, including the parts that are unflattering to us.

Keep reading

Related posts

One approval, every program

Join free and promote any advertiser in the directory with a single payout across all of them.