A TDS (traffic distribution system) is a service that takes all of a campaign's traffic on one link and, using a set of rules, decides where to send each visitor: which offer, landing page or pre-lander. Rules are built on geo, device, operating system, language, time, link parameters and campaign tags.
In short, a TDS is a dispatcher: the ad platform sees one link, and behind it the traffic fans out to a dozen destinations. Below: why affiliates need one, what kinds of rules exist, how a TDS differs from a tracker and a cloaker, and how routing works in ArtisanClo.
What is a TDS: a traffic distribution system in plain words
Picture a post office sorting center. All parcels arrive at one window, and then each goes to its own conveyor based on address, weight and type. A TDS does the same with clicks.
Without a TDS, every «geo + device + offer» combination needs its own link and often its own campaign on the platform. With a TDS there is one link, and the routing logic can be changed on the fly without touching the ad or sending it back for review.
Historically, TDS tools started out as standalone routing scripts. Today the routing function is almost always built into the tracker: distributing traffic without seeing the money for each destination makes no sense.
TDS in affiliate marketing: why media buyers need it
The easiest way to answer «what is a TDS for» is through the jobs it does:
- One source, several geos. The campaign covers several countries, and the affiliate network has a separate offer with a different payout for each.
- Different devices. Android traffic converts better on one offer, iOS on another, desktop on a third.
- Split testing. Half the traffic to offer A, half to B, to see which earns more.
- The tail. Visitors from secondary geos that your main offers do not cover go to a backup offer or the network's smartlink instead of being wasted.
- Segmenting by tags. Traffic from different placements, creatives or audiences goes to different landing pages based on the sub tag value.
Traffic distribution rules in a TDS
Every TDS rule reads as «if [attribute] [condition] [values], send to [destination]». The main attributes:
| Attribute | Example condition | When it helps |
|---|---|---|
| Country, region, city | Country is DE, AT | Different offers for different geos |
| Device | Device is smartphone | Mobile and desktop landing pages |
| OS and browser | OS is iOS | App offers, platform specifics |
| Language | Language is de | Multilingual geos |
| ISP, network | ISP contains Vodafone | Mobile subscriptions and carrier offers |
| Referrer | Referrer contains facebook.com | Separating sources on one link |
| Link parameter | utm_source is native | Segmenting by platform tags |
| Campaign tag (sub) | sub3 is creo_12 | Different landing pages for different creatives |
| Time | Weekdays 9 to 18 | Offers with a call center |
Attributes come from the visit itself and from the link, so a TDS is at its strongest when paired with careful link tagging. How to tag links is covered in UTM parameters and macros.
How a TDS picks the destination: order, weights, priority
When there are several rules, how the TDS applies them matters. The usual mechanics:
- Rules are checked in order. Top to bottom, and the first match wins. So narrow rules go above broad ones: first «DE + iOS», then just «DE».
- Weights work inside a rule. If a branch has two offers weighted 70 and 30, each click randomly goes to one of them with that probability. On large volume the shares converge to the target.
- Priority instead of weights. All traffic goes to the first enabled offer; the rest wait in reserve and get traffic if you switch off the first.
- Default destination. Everyone who matched no rule.
- Visitor pinning. A returning person sees the same offer and landing page as the first time, not a random new one.
Weights and fair splits are covered in detail in split testing offers and landing pages, and rotating several links in link rotator.
Example TDS setup for one campaign
Say you are running a nutra offer in three countries. This is an illustration, not a recommendation on numbers:
Branch 1: Country = DE, Device = smartphone → offer A (mobile landing page)
Branch 2: Country = DE → offer A (desktop landing page)
Branch 3: Country = AT, CH → offer B 50% / offer C 50%
No branch (everyone else) → affiliate network smartlink
A week later, the branch report shows that offer C earns noticeably more per click in Austria and Switzerland. You change the weights to 20/80 without touching the ad on the platform. That is the core value of a TDS: decisions are driven by data, not by relaunching the campaign.
TDS vs tracker vs cloaker: what is the difference
The three get mixed up because modern products bundle them together.
| TDS | Tracker | Cloaker | |
|---|---|---|---|
| Main question | Where to send the visitor | How much they brought | Whom to let through to the offer at all |
| Works with | Rules and weights | Clicks, conversions, spend | Visit signals and a trust score |
| Output | The chosen destination | ROI, EPC, CR by slice | Offer or White Page, plus the reason |
| Without the other two | Routing blind | Counts bots as people | Does not know if the traffic pays off |
The right order is: first the filter cuts off bots, then the TDS routes the real people, and the tracker counts the money for each destination. If you route before filtering, bots end up in the branches and spoil the comparison. More on how they work together in affiliate tracker and cloaker vs tracker: the difference.
How to set up a TDS, step by step
The order is the same for any traffic distribution system:
- Tag the link. Before building rules, make sure the platform passes the data you need: click ID, campaign, placement, creative. A tag-based rule will not fire if the tag is not in the link.
- Turn on filtering before routing. The branches should receive people, not scanners and auto-clickers, or you will be optimizing weights for bots. How to cut out junk is covered in how to filter bots out of ad traffic.
- Fill in the default destination. First decide where everyone who matches no rule will go, and only then write the rules.
- Add one or two rules that definitely change the outcome. Usually geo and device type. Everything else can wait until you have data.
- Order rules from narrow to broad. «DE + iOS» above «DE».
- Pass the click ID to every offer. Without it the postback cannot find the click, and revenue by branch stays at zero.
- Wait for volume and read the branch report. Make weight decisions on hundreds of clicks and dozens of conversions per branch, not on the first twenty.
Tip. Change one thing at a time: either the weights or a branch's conditions. If you change everything at once, a week later you will not know what worked.
How to check that routing works
Open the link with different tags and from different devices, then find your visits in the click log: each one should show which offer it went to and through which branch. If all visits ended up in the default destination, the usual culprits are rule order or a typo in a condition value, such as a country name instead of a country code or a stray space in a tag value.
How the TDS works in ArtisanClo
In ArtisanClo, routing is built into the flow, a single configured campaign. A flow has one link, and the offer is chosen for each visit after all filter checks, so only visitors who passed reach the branches.
Branches
Branches are available from the Professional plan in flow modes with a tracker («Tracker» and «Cloaking + Tracker»), when there are two or more offers.
- A condition reads as «If [field] [operator] [values]». Fields: country, device, OS, browser, ISP, ASN, city, region, language, referrer, link parameter, tag (sub).
- Operators: «is one of», «is none of», «contains», «is set», «is not set». Values are comma-separated.
- Several conditions in one branch must all match.
- Order: branches are checked top to bottom, and the first match wins. Visitors who match none go to the offers without a branch.
- Limits: up to 30 branches and up to 15 conditions per branch.
Weights and priority
- Weighted rotation: each click goes to an offer at random with the set probability; the weights add up to exactly 100%, and the auto weights button splits evenly within each set.
- Priority: all traffic goes to the first enabled offer, the rest are kept in reserve.
- Visitor pinning: from 0 to 720 hours, a returning visitor gets the same pre-lander and the same offer.
Pre-landers and time
You can put a pre-lander (a quiz, article or review) in front of the offer and split traffic between several pre-landers by weight. Time works as campaign hours: outside the set hours, visitors see the White Page. There is no separate «one offer by day, another by night» rule; for that you set up two flows.
Branch reports
The «Money by slice» report has slices by branch, pre-lander, offer, country, device and sub1–sub10 tags: clicks, conversions, CR, revenue, spend, profit and ROI. That shows which TDS rule makes money and which only fragments the traffic. More on metrics in affiliate marketing metrics.
All capabilities are on the ArtisanClo features page.
TDS setup mistakes
- A broad rule above a narrow one. «Country = DE» sits above «DE + iOS», so the second branch never fires.
- An empty default destination. Traffic from unaccounted geos is paid for but goes nowhere.
- Too many branches on low volume. Each gets a dozen clicks, and the conclusions are random.
- Routing before filtering. Bots end up in the branches and make the comparison meaningless.
- Zero weight instead of switching off. To stop an offer from getting traffic for a while, switch it off rather than setting its weight to 0, or the weight total gets confusing.
- No visitor pinning. A person comes back and sees a different offer: they get confused, and you get blurred stats for both variants.
- No click ID in the offer link. The TDS routed the traffic, but the postback cannot find the click, and revenue by branch is not counted. How to set it up is covered in postback URL in affiliate marketing.
Bottom line
- A TDS is a traffic distributor: one link, with rules by geo, device, OS, language, tags and time behind it.
- Rules are checked top to bottom, weights or priority work inside a rule, and the default destination takes everyone else.
- The TDS decides «where», the tracker «how much it earned», the cloaker «whom to let in»; they should work together, with the filter first.
- In ArtisanClo, routing means branches, weights, priority and visitor pinning inside a flow, and the branch report shows which rule makes money.



