SHAZAM
Join ShazamCommunity

Sub ID Tracking: How Affiliates Find Profitable Traffic

A practical sub ID tracking system: naming schemes that scale, what to pass at each level, how to read placement reports, and when to cut a losing source.

Published August 12, 202611 min read

A campaign lands at exactly break-even. Ninety-six thousand clicks, eighteen thousand dollars spent, eighteen thousand dollars back. The instinct is to kill it and move on, because a month of work produced nothing.

Break it apart by placement and the picture changes completely: two sources lost $3,515 between them, two others made $3,515, and the profitable pair were doing it on a quarter of the traffic. Cut the losers and the same campaign runs at roughly 80% ROI. Nothing about the offer, the creative, or the landing page changed. The only thing that changed was that you could see which traffic was which.

Sub ID tracking is what makes that visible. It is not a complicated technique — you are attaching labels to clicks — but the discipline around it separates affiliates who scale from affiliates who keep launching campaigns that mysteriously hover around zero.

What sub-ID tracking gives you

A tracking link without sub-IDs tells you one thing: this campaign made or lost money. That is a verdict, not a diagnosis.

A tracking link with sub-IDs tells you which website, which ad slot on that website, which creative, which landing page variant, and which audience segment produced each click and each conversion. Now you are not deciding whether to run the campaign. You are deciding which slices of it to feed and which to starve.

The values themselves are arbitrary strings you define. Traffic sources hand you macros — a placement ID, a site name, a creative ID, a widget ID — and you map those macros into your tracker's sub-ID slots. Every source exposes a different set, so part of evaluating a new channel is checking what it will actually pass you; some of the sources affiliates lean on hardest are generous with placement data and stingy with everything else. Your tracker stores them on the click row, and when the conversion postback comes back carrying the click ID, all of those labels are still attached. That last part depends entirely on your postback and click ID plumbing being intact; sub-IDs that get stripped somewhere in the chain produce reports full of conversions attributed to nothing.

Designing a scheme that survives scale

The mistake nearly everyone makes early is treating sub-ID slots as scratch space. Sub3 means creative on one campaign, geo on another, and something the affiliate no longer remembers on a third. Six months later, historical data is unreadable and cross-campaign comparison is impossible.

Fix the meaning of each slot once, globally, and write it down somewhere you will actually look.

A scheme that holds up:

Slot Dimension Example value Decision it drives
sub1 Traffic source and campaign pushnet_c8841 Which source and campaign the click belongs to
sub2 Placement, site, or widget site_4471 Blacklist and whitelist decisions
sub3 Creative cr_hook3_v2 Which angle and asset to scale
sub4 Landing page lp_calc_b Which pre-lander converts
sub5 Audience or segment geo_de_and Geo, device, OS, or interest split
sub6 Free slot t_1129 Test identifier, day, or bid tier

Naming rules that save you later

  • Use a consistent separator and stick to it. Underscores work everywhere. Spaces and plus signs cause URL encoding problems that surface as mangled values in reports.
  • Prefix every value with its dimension. cr_hook3 rather than hook3. When you are staring at a raw export, prefixed values are self-describing and you can filter on them.
  • Never reuse a name for a changed asset. If you edit creative cr_hook3, it becomes cr_hook3_v2. Reusing the name blends two different assets into one row and hides the fact that your edit made things worse.
  • Keep values short. Some sources truncate long parameter values, and a truncated sub-ID is an unusable sub-ID.
  • Avoid characters that need encoding — ampersands, hashes, question marks, and non-ASCII characters in placement names all cause breakage.
  • Pass raw macros, not your own labels, for source-controlled dimensions. If you want to blacklist a placement, you need the exact identifier the source expects back. A pretty name you invented is useless in their blacklist field.

One dimension you should always reserve

Keep a slot for the landing page even if you are currently running one. The first time you want a proper split test, you will need it, and retrofitting a slot mid-flight splits your history into a before and an after that you cannot compare.

The discipline of one variable per test

Sub-IDs make it easy to run several tests at once. That is a trap.

If you launch three creatives against two landing pages across four geos, you have twenty-four cells. Split a realistic test budget across twenty-four cells and each one has too little volume to say anything. Worse, when one combination wins, you do not know whether the creative, the lander, or the geo did the work.

Change one thing at a time:

  1. Fix creative, lander, and audience. Find your placements. Cut the obviously dead ones.
  2. Fix placements and lander. Rotate creatives. Find the angle.
  3. Fix placements and creative. Rotate landers. Find the page.
  4. Only now split by geo or device, because you are testing a configuration that already works.

Each stage takes a testing budget and a few days. It feels slow. It is much faster than three weeks of ambiguous data.

The exception worth knowing: when you are testing a genuinely new vertical or source and have no idea what works, a deliberately wide first launch is reasonable — you are not measuring, you are exploring. Just be honest that it is exploration, cap the budget accordingly, and do not draw conclusions from cells with four clicks each.

Reading a sub-ID report properly

Most people sort by conversions and look at the top. That finds your highest-volume placements, which is not the same as your most profitable ones.

Sort by profit, then check EPC, then check volume. In that order.

  • Profit tells you what a placement contributed in absolute terms.
  • EPC — revenue divided by clicks — tells you the quality of that traffic independent of how much of it there was. It is the number that lets you compare a placement sending 800 clicks against one sending 40,000.
  • Volume tells you how much headroom exists. A placement with a $0.60 EPC and 300 clicks a day is excellent and mostly irrelevant to your monthly total. Knowing which constraint you are hitting matters, and the broader metric set is worth being fluent in before you start making cuts.

Always compare EPC against your actual cost per click on that specific placement, not your campaign average CPC. On most auction-based sources, CPC varies significantly by placement, and a placement with a mediocre EPC can be your best performer because its traffic is cheap.

Worked example: the campaign that was not break-even

Here is the campaign from the opening, in full.

Offer pays a flat $95 CPA. Over one month:

  • Clicks: 96,000
  • Average CPC: $0.19
  • Spend: 96,000 × $0.19 = $18,240
  • Conversions: 192
  • Revenue: 192 × $95 = $18,240
  • Profit: $0. ROI 0%. Campaign EPC: $18,240 ÷ 96,000 = $0.19, exactly matching CPC.

Now the sub2 breakdown:

Placement Clicks Spend Conv Revenue Profit EPC
site_4471 42,000 $7,980 58 $5,510 -$2,470 $0.131
site_2290 31,000 $5,890 51 $4,845 -$1,045 $0.156
site_8813 14,000 $2,660 52 $4,940 +$2,280 $0.353
site_1077 9,000 $1,710 31 $2,945 +$1,235 $0.327

The two profitable placements sent 23,000 clicks — 24% of the volume — and produced 83 conversions, 43% of the total. Their combined EPC is $7,885 ÷ 23,000 = $0.343, against a $0.19 CPC. That is a 1.8x return on those clicks.

Cut the two losers and rerun the same month:

  • Clicks: 23,000, Spend: $4,370, Revenue: $7,885
  • Profit: $3,515, ROI: 3,515 ÷ 4,370 = 80.4%

The offer never changed. The creative never changed. You simply stopped paying for traffic that did not convert.

The part people get wrong next

The temptation now is to push the freed-up $13,870 into site_8813 and site_1077 and expect $3,515 to become roughly $17,000. It will not.

Bidding harder on two placements raises your CPC and pulls in lower-quality inventory within them. A realistic scaling attempt: you push those two to 69,000 clicks — three times the volume — and your CPC rises from $0.19 to $0.24.

  • Spend: 69,000 × $0.24 = $16,560
  • Conversion rate on those placements was 83 ÷ 23,000 = 0.361%
  • Expected conversions: 69,000 × 0.361% = 249
  • Revenue: 249 × $95 = $23,655
  • Profit: $7,095, ROI 42.8%

Half the ROI, double the profit. That trade is usually worth taking, but you should expect it rather than be surprised by it. And you should keep monitoring the sub2 report while scaling, because the extra volume is not evenly distributed — some of it will be new sub-placements within the same site that perform nothing like the ones you validated.

Statistical significance without the textbook

The most expensive habit in affiliate optimisation is cutting on tiny samples.

A placement sends 500 clicks and produces zero conversions. Kill it? Do the arithmetic first. If your campaign converts at 0.2%, you expect one conversion per 500 clicks. The chance of seeing zero conversions across 500 clicks purely by luck is 0.998 raised to the power of 500, which is about 0.37 — roughly a one in three chance. You would be cutting a perfectly average placement more than a third of the time.

Push that to 1,500 clicks and the probability of zero conversions falls to about 0.05. Now zero conversions is genuine evidence.

So the working rule: before treating zero conversions as a verdict, check how many conversions you would expect at that click volume. If the answer is under three, you do not have data, you have noise.

The same applies in reverse. A placement with 400 clicks and 4 conversions shows a 1% conversion rate, five times your average. That is exciting and it is probably regression waiting to happen. Feed it more budget to find out, but do not restructure the campaign around it.

Two practical adjustments:

  • Cut on spend, not on clicks, when payouts are large. On a $180 CPA offer, letting a placement run to $360 in spend before judging it gives you a fair shot at two expected conversions.
  • Group tiny placements. Sources often produce hundreds of placements sending under 200 clicks each. Individually unjudgeable. Grouped by a shared prefix or category, they become a meaningful block you can evaluate as one.

Blacklist and whitelist workflow

Blacklisting is subtractive. Run broad, remove what fails, keep going. It is the right mode early because you do not yet know what inventory exists.

Whitelisting is additive. Run only placements you have validated. It is the right mode once your winners are stable, because it stops you re-buying the same losers every time the source rotates its inventory.

A workflow that works in practice:

  1. Week one, broad. Cap daily spend. Let placement data accumulate. Cut nothing on day one — you are collecting.
  2. First cut, on hard evidence only. Remove placements that have spent more than twice your payout with zero conversions, and placements with obviously fraudulent signals such as impossible click-through rates or a click-to-conversion time of under two seconds.
  3. Second cut, on EPC. Remove anything whose EPC sits meaningfully below your CPC and has enough volume to be judged.
  4. Build the whitelist. Anything with a positive margin and adequate sample goes on it.
  5. Split the budget. Run the whitelist as your main campaign. Keep a separate small campaign running broad against the blacklist, purely for discovery.
  6. Re-examine monthly. Placements decay. Audiences saturate. A placement that was your best in March can be your worst in June, and a whitelist you never revisit slowly becomes a list of things that used to work.

Keep the blacklist even after you move to whitelisting. When you launch a new offer on the same source, the known-fraudulent placements are still known-fraudulent.

What the advertiser sees, and why it matters

Most advertisers let you pass one or two of your sub-IDs through to their system, and their reporting can then show you performance by that value on their side — deposits, retention, lifetime value.

That is the highest-value data you will get, because it tells you which of your placements produces users who stick around, not just users who convert once. A placement can have a good EPC and terrible retention. On a CPA deal that is someone else's problem. On revshare it is entirely yours, and a source that generates first deposits from users who never return will look great for three weeks and then flatten. If you are running funnels where the payable event is only the beginning, push at least your placement-level sub-ID through to the advertiser and ask for a breakdown on it.

Pass through the identifier you actually optimise against — usually placement. Passing a value that changes on every click, like a raw click ID, gives the advertiser a report with one row per user and no aggregation you can use.

Mistakes that cost real money

Reassigning a slot mid-campaign. Sub4 was creative, now it is landing page. Everything before the switch is now garbage, and merged reports silently mix the two.

Optimising on conversions rather than profit. Placements with the most conversions are often the cheapest traffic with the worst quality. Sort by profit.

Cutting a placement instead of the creative running on it. If one creative produces most of the losses on a site, you have a creative problem, not a placement problem. Check the sub3 breakdown within the losing placement before you remove the whole thing.

Ignoring time-of-day and day-of-week. A placement judged over a weekend can look completely different on a Tuesday. Give any judgement at least a full week where you can.

Forgetting that sub-IDs need to survive the redirect. If your pre-lander does not forward the query string to the offer link, the postback comes back with a click ID that maps to sub-IDs on your side — fine — but any values you were passing on to the advertiser vanish. Test the whole chain, not just your own report.

Treating a whitelist as permanent. Traffic sources rotate inventory constantly. Placement IDs get retired and reissued. Revisit.

Working with Shazam on tracking and optimisation

Tracking infrastructure is included for the affiliates we partner with — sub-ID schemes set up properly from the first campaign, postbacks tested end to end, and placement-level data pushed through to advertisers where the platform supports it, so you can see retention and not just conversions. We build the landing pages too, which removes the most common cause of sub-IDs disappearing between the click and the offer.

Partners run on a 50% revenue share across crypto, forex, iGaming, gaming, high-ticket and tech, with a dedicated manager who will look at your placement reports with you rather than sending you a help doc. If that is useful, onboarding runs through our Telegram bot, and the community chat is open if you want to ask questions first.

Frequently asked questions

What is sub ID tracking in affiliate marketing?

Sub ID tracking means passing extra identifying values through your tracking link so that every click carries a label describing where it came from. Those values, usually called sub1 through sub5 or similar, let you break performance down by placement, creative, landing page, audience, or any other dimension you choose, instead of seeing only a single campaign total.

How many sub IDs should I use?

Use as many levels as you have decisions to make, but no more. Four to six is typical: traffic source, placement or site, creative, landing page, and audience or segment. Passing a dimension you will never act on adds noise to every report. Passing a dimension you need but did not set up costs you a full test cycle to recover.

How many clicks before I can cut a placement?

It depends on your conversion rate. At a 0.2% conversion rate you expect one conversion per 500 clicks, so seeing zero conversions on 500 clicks happens roughly a third of the time by chance alone. At 1,500 clicks that drops to around 5%. Work out your expected conversions at the volume you have before treating zero as evidence.

Should I blacklist or whitelist placements?

Blacklist while you are still discovering the inventory, because you need broad exposure to learn what exists. Switch to a whitelist once you have identified a stable set of profitable placements and want predictable performance. Most mature campaigns run a whitelist with a small separate discovery budget still running broad.

Keep reading