Skip to content
All articles
6 min read

Affiliate Tracking Link: Click ID, Sub IDs and Postback Setup

A precise tracking link carrying separate click, campaign and conversion tokens through a dark routing system

An affiliate tracking link is not merely a destination URL with a few UTMs appended. A reliable link creates or carries a unique click identifier, records the campaign context, passes the correct value to the affiliate system and gives the later conversion a deterministic route back.

A practical click URL can look like this:

https://go.example.com/campaign?campaign_id=183746&ad_id=99821&sub1=facebook_feed

After the tracker records the visit, its outbound Track Link may become:

https://network.example/offer?aff_sub=dc_01K35N8T2R&campaign=183746&placement=facebook_feed

The important part is not the spelling of each parameter. It is the contract: the tracker-generated click ID must reach a field the affiliate network stores, then return unchanged in a postback.

Link typeWhat it doesWhat it cannot prove
Direct destination URLOpens the landing page or offerWhich exact click produced a delayed conversion
UTM-tagged URLAdds channel and campaign labelsA one-to-one click-to-conversion join
Affiliate network linkIdentifies the affiliate or placement inside the networkYour tracker’s complete route unless its click ID is passed in
Tracker linkCreates a click record, applies routing and expands outgoing macrosThe partner conversion unless a callback or API event returns

The strongest setup uses the tracker link as the first controlled boundary, then deliberately connects it to the affiliate link and the return postback.

The five layers inside one tracking route

1. Campaign dimensions

Campaign, ad set, ad, placement and buyer labels describe groups of clicks. Store stable platform IDs in dedicated fields and use sub1sub10 for flexible context such as placement, creative angle or buyer code.

For Meta, the incoming parameter template may include:

campaign_id={{campaign.id}}&adset_id={{adset.id}}&ad_id={{ad.id}}&sub1={{placement}}

For TikTok, the platform macro syntax is different:

campaign_id=__CAMPAIGN_ID__&adset_id=__AID__&ad_id=__CID__&sub1=__PLACEMENT__

Use the dedicated Facebook URL parameter guide and TikTok macro guide before copying a template between platforms.

2. Platform click identifier

fbclid, ttclid and gclid belong to the ad platform. Preserve them when supplied, but do not use them as a replacement for the tracker’s own primary click key. They support platform attribution and server-side feedback; they do not define your internal data model.

3. Internal click ID

The tracker creates one opaque ID for one visit. That ID is the join key for the later S2S conversion. Treat it as an immutable string: do not shorten, decode, rebuild or replace it with a campaign ID.

4. Affiliate-network storage field

Networks expose fields such as aff_sub, sub1, s2 or clickid. This is where you store the tracker click ID while the visitor completes the offer flow:

https://network.example/offer?aff_sub={click_id}

Here {click_id} is expanded by the tracker. aff_sub is owned by the affiliate network.

5. Conversion and transaction identifier

The network returns the stored click value and its own conversion data:

https://tracker.example/postback?click_id={aff_sub}&status={status}&payout={payout}&transaction_id={conversion_id}

click_id finds the visit. transaction_id distinguishes multiple real events or protects against literal retries. They are different identifiers and should not share one value by default.

A complete example from click to payout

Assume a Meta ad sends a visitor through DarkCore to an affiliate offer.

  1. Meta expands its macros and adds the real campaign context.
  2. DarkCore records the click, platform IDs and sub IDs, then creates dc_01K35N8T2R.
  3. The outgoing Track Link sends that value into aff_sub.
  4. The network stores it beside the visitor session.
  5. A deposit occurs two days later.
  6. The network expands its postback macros and sends the same value back.
  7. DarkCore finds the original click, maps the raw status, records the payout and rejects an identical transaction retry.

This is why a page view or redirect success is not the acceptance test. The useful evidence is one conversion row attached to the original source, campaign, stream and offer.

Query-string rules that prevent silent breakage

  • A complete URL uses one ? before the first parameter and & before every later parameter.
  • A dedicated “URL parameters” field may expect only the parameter string without a leading ?.
  • Encode literal values, but do not pre-encode platform macros unless the platform documentation requires it.
  • Never define the same key twice with different values.
  • Preserve query parameters through every redirect, PWA entry point and offer transition.
  • Do not put email, phone, name or another direct personal identifier into a URL.

If braces or underscore macros remain in the delivered URL, the system responsible for that stage did not expand them.

Pass/fail launch checklist

CheckPass condition
Delivered ad clickPlatform macros are replaced with real values
Tracker clickExactly one new click record contains the intended campaign and sub fields
Internal IDA unique tracker click ID exists and is not reused as a campaign label
Outbound offer URLThe click ID is present in the network’s documented storage field
Network recordThe stored value matches the tracker click ID byte for byte
PostbackThe same value returns under an incoming key the tracker accepts
StatusRegistration, deposit, sale or custom raw value maps to the intended event
PayoutNumeric value and currency represent the agreed business metric
TransactionA stable conversion ID prevents a retry from adding revenue twice
ReportConversion appears on the original click, campaign, stream and offer

Use the Postback URL Builder to inspect the return URL, then run the full postback troubleshooting checklist. An HTTP 200 is transport evidence, not attribution evidence.

Common mistakes

Using UTMs as the click key

Thousands of visitors can share one utm_campaign. UTMs describe a group; they do not identify one visit.

Passing a campaign ID into aff_sub

This makes every click in the campaign return the same value. A delayed conversion cannot be joined to one visitor.

Mixing macro owners

Meta, TikTok, the tracker and the affiliate network each run a different template engine. The postback parameter and macro guide explains which side owns the key and which side owns the placeholder.

Testing only a preview URL

Preview tools can omit click identifiers or behave differently from delivered traffic. Record one real controlled click, then verify every handoff.

The operational model

A good affiliate tracking link is a small data pipeline:

ad context → tracker click → affiliate storage → conversion postback → attributed revenue

Keep group dimensions, platform click IDs, the internal click ID and transaction IDs in separate fields. Once those roles are explicit, different trackers and networks become adapters around the same invariant: the original click value must survive the round trip unchanged.

  • affiliate tracking link
  • tracking link affiliate marketing
  • click id
  • sub id
  • postback tracking