Sub-ID structures that don't break at scale
Sub IDs look trivial on day one and become unfixable on day 90. Here is the convention I deploy so the data you need at scale is already in the postback.
Published June 21, 2026 · Osama Malik
Why sub IDs become a mess
Most advertisers set up sub1–sub5 the first week, never document it, and by the time traffic scales they have three affiliates passing different things in sub2 and nobody remembers which is which. The reports look fine until you try to optimize creative-by-geo and realize half the data is unusable.
The fix is a written convention that every affiliate gets at onboarding, enforced by validation on the offer URL. Five minutes upfront, no rewrites later.
The convention I deploy
transaction_id is reserved for the network's click ID — never reuse it for your own data. If you need more than five slots, push the extras into a single JSON-encoded sub or into the network's custom fields.
- sub1 — affiliate's internal source/campaign ID (their reference, opaque to you).
- sub2 — creative ID (the ad / landing page variant).
- sub3 — placement (publisher, site, list segment).
- sub4 — geo (ISO country code, lowercased).
- sub5 — device or audience segment (mobile/desktop, cold/retarget).
Enforce it at the offer URL
Add validation rules in your network: required pattern on sub4 (two-letter ISO), required non-empty on sub2 and sub3. An affiliate who pushes traffic with empty sub2 gets clicks rejected at the redirect — they will fix it within an hour. Without enforcement, they will never fix it.
Document it in the affiliate brief
Every offer brief includes a sub ID table with examples. Affiliates do not read documentation, but they do copy examples. Give them a one-line example tracking link that they can paste, edit, and ship.
What to do with the data
- Roll up by sub2 weekly to identify winning creatives across affiliates.
- Roll up by sub3 to flag placements that convert but chargeback heavily.
- Cross sub4 × sub2 to find geo-specific creative wins worth scaling.
- Reconcile sub1 against affiliate-side reports — mismatches catch tracking gaps early.
Migrating off a messy convention
If you already have months of inconsistent sub data, do not rewrite history. Pick a cutover date, publish the new convention to all affiliates two weeks ahead, and tag everything before the cutover as legacy in your BI. Trying to retroactively normalize old sub data is a quarter of work for data nobody will trust.
FAQ
- What if an affiliate refuses to populate all five subs?
- Mark sub2 and sub3 as required at the network level so the click is rejected without them. Affiliates who will not pass basic creative and placement data are not partners worth scaling with.
- Should I use sub IDs or custom postback parameters?
- Sub IDs first — they are universal across Everflow, HasOffers, Trackier, and Sticky. Reserve custom parameters for advertiser-side data the network does not need to see (internal order tags, BI keys).
- Can I change the convention later?
- Yes, with a hard cutover and two weeks of notice. Never silently remap a sub — you will break every affiliate report that was reading the old position.
Need this fixed on a live offer?
I run hands-on tracking QA, postback validation, and launch readiness for direct advertisers. Book a 30-minute readiness call — no pitch, just a real diagnosis.
Book a readiness call